java Servlet技术中Filter可以实现对请求的统一预处理,使请求有统一的可以控制的入口和出口,用Filter可以轻松解决全站的乱码问题:
request.setCharacterEncoding(charset); //post get
response.setCharacterEncoding(charset);
response.setContentType("text/html;charset=" + charset); //设置在Filter参数中
对动态资源加禁止缓冲头:
response.setDateHeader("Expires",-1);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
对静态资源加缓存头:
//1.获取到用户想访问的资源
String uri = request.getRequestURI();
//2.获取该资源的缓存时间
int expires = 0;
if(uri.endsWith(".jpg")){
expires = Integer.parseInt(this.config.getInitParameter("jpg"));
}else if(uri.endsWith(".css")){
expires = Integer.parseInt(this.config.getInitParameter("css"));
}else{
expires = Integer.parseInt(this.config.getInitParameter("js"));
}
response.setDateHeader("expires", System.currentTimeMillis()+expires*60*1000);
及实现数据压缩发生等
使用Filter实现用户自动登录是Fiter能轻松实现的一项非常重要的功能,实现如下:
1.用户登录时选择是否要自动登录:
<input name="autoLogin" type="checkbox" value="true" checked/>自动登录
2.servlet处理用户登录请求,如果选择自动登录,则发送一个可以实现自动登录的Cookie:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String name = request.getParameter("name");
String password = request.getParameter("password");
if (name.trim().equals(