过滤器
拦截请求到达指定资源之前的请求数据
拦截响应到达客户端之前的响应数据
放行资源(chain.doFilter(request,response))
过滤器链
多个过滤器同时执行
执行顺序:web.xml配置文件中,先配置的先执行
拦截顺序:按照指定顺序拦截,按照相反顺序响应
请求:(1 -> 2 -> 3 )
响应:(3 -> 2 -> 1 )
非法访问拦截
当用户访问登录状态才能访问的资源时,如果用户未登录,会被拦截到登录页面
拦截的资源:
拦截所有资源
需要放行的资源:
1、指定页面,放行
无需登录即可访问的页面 (例如:登录页面、注册页面等)
2、静态资源,放行
js文件、css文件及图片(存放在statics目录下的资源)
3、指定操作,放行
无需登录即可执行的操作 (登录操作、注册操作等)
4、登录状态,放行
判断session作用域中是否存在用户数据(有数据=登录状态;无数据=非登录状态)
当用户未登录时访问资源,拦截跳转到登录页面
请求乱码解决
乱码原因:
服务器默认解析编码为ISO-8859-1,不支持中文。
乱码情况:
Tomcat8及以上版本 Tomcat7及以下版本
GET请求 不乱码 乱码
不需要处理 new String(request.getParamater(name),"UTF-8");
POST请求 乱码 乱码
request.setCharacterEncoding("UTF-8"); request.setCharacterEncoding("UTF-8");
解决方案:
POST请求:
无论什么版本的服务器,POST请求都会出现乱码问题,需要通过request.setCharacterEncoding("UTF-8")设置编码格式。
GET请求:
Tomcat8及以上版本不需要做处理,Tomcat7及以下版本需要单独处理。
new String(request.getParamater(name).getBytes("ISO-8859-1"),"UTF-8");
监听器
public class Listener01 implements HttpSessionListener,HttpSessionAttributeListener {
Session的创建
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("Session Create...");
}
Session的销毁
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("Sesion Destroy...");
}
设置域对象
@Override
public void attributeAdded(HttpSessionBindingEvent se) {
System.out.println("attributeAdded...");
}
删除域对象
@Override
public void attributeRemoved(HttpSessionBindingEvent se) {
System.out.println("attributeRemoved...");
}
修改域对象
@Override
public void attributeReplaced(HttpSessionBindingEvent se) {
System.out.println("attributeReplaced...");
}
}
servlet3.0注解方式
servlet注解
@WebServlet(value="/Servlet01")
@WebServlet(name="Servlet01",value="/Servlet01")
@WebServlet(value={"/Servlet01","/Servlet001"})
@WebServlet(urlPatterns="/s01")
@WebServlet(urlPatterns={"/Servlet01","/Servlet001"})
@WebServlet("/s01")
filter注解
@WebFilter("/*")
listener注解
@WebListener
文件上传
@MultipartConfig 一定要加注解!!!!!
如果前台的表单类型设置为enctype=" multipart/form-data",后台servlet一定要加注解,否则所有的参数都为null。
使用注解@MultipartConfig 将一个 Servlet 标识为支持文件上传。
Servlet3.0 将 multipart/form-data 的 POST 请求封装成 Part,通过 Part 对上传的文件进行操作