- 浏览: 111281 次
- 性别:
- 来自: 农村进城务工人员
最新评论
-
suxiaomi:
...
Spring MVC—拦截请求 -
hetor:
...
重写equals()时要重写hashCode() -
luoyexian:
你好:请问web.xml 要怎么配置这两个文件,我将这两个文件 ...
从日志看Spring启动过程 -
xingyunpi:
很清楚,谢谢分享~收藏一下
重写equals()时要重写hashCode() -
citymoon2000:
拦截器没用
Spring MVC—拦截请求
文章列表
文章有点长。。。
以前看到的分页模型大同小异,都是一个POJO结合各类视图技术实现的,但对于每次查询,都要计算总页数(统计记录总行数),对于记录数较少、并发不高的系统来讲,这似乎没有什么问题,但对于高并发,记录行数很多(千万级)的情况,每次的统计行数就要花费不少时间。我这里尝试着设计了一个行数缓存和一个简单的分页POJO(跟传统的POJO大同小异),请大家批评讨论,并提出一些建议。分享才能进步!
1、在哪里缓存
可以在客户端(使用Cookie),也可以在服务器端(设计一个Cache)。服务器端可以灵活定义缓存时间、刷新策略,这里仅讨论服务器端缓存(大家也可以提提客户端缓存的优缺点)。
2 ...
response.addHeader("Content-Disposition", "attachment; filename=" +response.encodeURL(downloadfile));
attachment表明这是一个附件,浏览器不会寻找合适的应用程序打开文件,而是显示另存为对话框,如果这个值设成inline,则无论怎样浏览器都会自动尝试用已知关联的程序打开文件。
- 2009-10-23 12:45
- 浏览 1106
- 评论(0)
这里讲的异常处理是指:用户发送一个HTTP请求,服务器处理请求过程中发生了诸如数据库异常、文件IO异常、类型不匹配异常等等,那么就要转向一个友好的异常提示页面。
Spring为我们提供了一个异常解析器接口:org.springframework.web.servlet.HandlerExceptionResolver
我们只要实现
public ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)方法即可。
一个Dem ...
- 2009-10-22 21:02
- 浏览 1938
- 评论(0)
一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的,这种方式可以实现Bean预处理、后处理。
Spring MVC的拦截器不仅可实现Filter的所有功能,还可以更精确的控制拦截精度。
Spring为我们提供了org.springframework.web.servlet.handler.HandlerInterceptorAdapter这个适配器,继承此类,可以非常方便的实现自己的拦截器。他有三个方法:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Objec ...
- 2009-10-22 20:41
- 浏览 13153
- 评论(3)
在第三节里面,完满讲了使用@AspectJ注解实现Spring AOP,它需要运行在Java5以上的版本中,对于Java1.4之前的版本,我们也想使用Spring AOP,那么怎么办呢?
一种是像1,2节里面讲的那样,定义Advice实现MethodBeforeAdvice、MethodAfterAdvice、ThrowsAdvice、MethodInterceptor接口之一,然后包装在Advisor中,最后使用BeanPostProcessor(如BeanNameAutoProxyCreator、DefaultAdvisorAutoProxyCreator)创建业务Bean的代理对象。显然这 ...
- 2009-10-19 10:38
- 浏览 6653
- 评论(0)
HttpServletResponseWrapper为我们实现对response对象的后处理提供了帮助——你只需编写一个HttpServletResponseWrapper的子类,加入自己的功能实现(修饰器模式)。那么子类化HttpServletResponseWrapper都需要重写那些方法呢?
1、获取response对象,并将输出存放在自定义的流里面,那么关于输出流(outputStream、writer)的操作都是需要重写的了:
1)以流的方式获取输出——重写getOutputStream()
2)以字符方式获取输出——重写getWriter()
3)刷新流——重写f ...
- 2009-09-28 16:08
- 浏览 2400
- 评论(0)
浏览器与服务器按照以下步骤交互:
1)浏览器向服务器请求建立TCP连接
2)建立连接后,浏览器相服务器发起HTTP请求
3)服务器将响应内容发送给浏览器
4)双方关闭TCP连接
HTTP请求由请求方式(GET,POST)、URL、数据三部分构成
POST请求方式的参数不附加在URL中,以消息体的形式发送
HTTP是无状态协议,会话状态有两种方式保存:Cookie、URL重写
Cookie:浏览器在第一次请求服务器时将获得服务器发给他的Cookie,在以后的请求中吗浏览器将此Cookie附加在请求中,服务器以此识别用户。
URL重写:服务器通过将响应页面的URL附加上一个标识符跟踪用户。
- 2009-09-25 21:33
- 浏览 1250
- 评论(0)
serialVersionUID 用来表明类的不同版本间的兼容性。如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。
在JDK中,可以利用JDK的bin目录下的serialver.exe工具产生这个serialVersionUID,对于Test.class,执行命令:serialver Test。
为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中加入private static final long serialVersionUID这个属性,具体数值自己定义。这样,即使某个类 ...
- 2009-09-18 20:14
- 浏览 913
- 评论(0)
void inversePrint(String str){
if(str==null||str.equals("")){
return;
}
if(str.length()>1){
inversePrint(str.substring(1,str.length()));
}
System.out.print(str.substring(0,1));
}
- 2009-07-29 18:55
- 浏览 1376
- 评论(0)
前面在Hibernate中曾介绍了使用spring1.x的声明式事务管理(http://ch-space.iteye.com/blog/380419),还是感觉xml文件的配置比较繁琐,这里介绍一下spring2.x基于注解的声明式事务。
这里给出一个完整的例子:对Users类的一个增加操作,测试异常抛出时回滚事务。
所用的框架:Spring2.0+Hibernate3.1
Dao层:
//Users类操作的接口
public interface UserDao {
public void addUser(Users u);
}
//Dao接口对应的实现类
public clas ...
- 2009-07-17 20:55
- 浏览 1471
- 评论(0)
1、运行class文件
java <包名> class
2、运行jar里面的一个class(含有main方法) 需要先设定classpath:
java -cp xxx.jar class
3、javac编译到指定目录 javac -d 目录 源文件 编译当前目录下所有java文件到e盘java/classes目录下:
javac -d e:\\java\\classes ./*.java
4、javadoc
javadoc [options] [package] [sourcecode]
javadoc -d ./doc -encoding utf-8 -ch ...
JDBC操作数据库,业务只有几行代码,却要写一大堆异常处理,烦死人。
String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
String DBURL = "jdbc:oracle:thin:@localhost:1521:cjlu";
String DBUSER = "scott";
String DBPASSWORD = "tiger";
Connection conn = null;
PreparedStatement ps = ...
在1,2节里面我们已经大致了解了AOP的工作原理,以及Spring下AOP的配置与实现,BeanNameAutoProxyCreator,DefaultAdvisorAutoProxyCreator已经部分简化了AOP配置,然而还是很繁琐:
首先要编写xxxAdvice类(需要自己实现MethodBeforeAdvice、MethodAfterAdvi ...
重写equals()时要重写hashCode()
- 博客分类:
- Java
在重写一个类的equals()的同时,一般要重写hashCode()除非你确认类的对象不会放入HashSet,HashTable,HashMap。
那么为什么要重写hashCode()呢?主要是为了确保hash表里面不会被放入重复的对象,以提高性能。那为什么重写了hashCode()就可以做到这一点呢?下面以一段代码分析。
/**Strudent重写了equals和hashCode,这里假设只要学号相等则是同一个对象。
先看看hashCode()返回相同的值:0的情况。
*/
public class Student {
public Student(String no) { ...
- 2009-06-26 14:43
- 浏览 3038
- 评论(2)
上一节介绍的都是使用ProxyFactoryBean实现代理对象的创建,本节介绍使用自动代理实现。通过自动代理,可以实现自动为多个目标Bean实现AOP代理、避免客户端直接访问目标Bean(即getBean返回的都是Bean的代理对象)。spring的自动代理是通过BeanPostProcessor实现的,容器载入xml配置后会修改bean为代理Bean,而id不变。
ApplicationContext可以直接检测到定义在容器中的BeanPostProcessor,BeanFactory需要手动添加。
有2种常用的BeanPostProcessor:
1.BeanNameAutoProxyCr ...
- 2009-06-25 21:33
- 浏览 999
- 评论(0)