过滤器 监听器 servlet3.0注解方式 文件上传

过滤器

 拦截请求到达指定资源之前的请求数据

拦截响应到达客户端之前的响应数据

 放行资源(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 对上传的文件进行操作

你可能感兴趣的:(过滤器 监听器 servlet3.0注解方式 文件上传)