当前位置:   article > 正文

JavaWeb中的监听器和过滤器,页面跳转的两种方式(转发与重定向)_java怎么监控所有的重定向

java怎么监控所有的重定向

监听器

在JavaWeb中,监听器是一种组件,能够监听项目的启动和停止,用户会话的创建和销毁,以及各种组件的添加、更新和删除。当Java对象发生上面的事件时, 将会通知监听器, 监听器将会调用特定的方法来处理该事件。
监听器应用场景:启动网站后进行初始化、检测用户的数量、清除过期session等。
在这里插入图片描述

SSM框架中监听器的配置

在web.xml中加入如下配置:

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
  <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

过滤器

过滤器是 Servlet 的高级特性之一,具有拦截和过滤功能,能够对网站中的各种内容进行过滤(页面、Servlet、图片、文件),可以在网站内容请求和响应时进行一些操作,完成一些通用的功能。 过滤器是JavaWeb三大组件之一,与Servlet相似,但是Servlet是用来处理请求,而过滤器是用来过滤请求的。
Web 中过滤器的作用:

  1. 在请求资源之前设置请求的编码
  2. 进行登录校验
  3. 进行请求参数的内容的过滤
  4. 数据压缩 / 数据加密 / 数据格式的转换
  5. 设置浏览器相关的数据

过滤器链:在项目中可以创建多个过滤器,网站内容可能会经过多个过滤器,多个过滤器就形成了过滤器链。
一个资源可以配置多个过滤器进行拦截, 一个过滤器也可以配置拦截多个资源。
过滤器的执行顺序:按照web.xml中filter-mapping标签的书写顺序执行(从上往下执行)。

解决中文乱码的过滤器的配置

在web.xml中加入如下配置:

<filter>
  <filter-name>characterEncodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>characterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

页面跳转的两种方式

在使用servlet/jsp的时候,实现页面跳转有两种方式:转发和重定向。

转发

在转发方式(Forward)中,客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。
Web应用程序大多会有一个控制器。由控制器来控制请求应该转发给哪个信息资源。然后由这些信息资源处理请求,处理完以后还可能转发给另外的信息资源来返回给用户,这个过程就是经典的MVC模式。
在这里插入图片描述
转发方法的特点:

  1. 转发方法只能将请求转发给同一个Web应用中的组件;
  2. 调用转发方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变;
  3. 转发方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。浏览器只发出了一个请求和收到了一次回复。
  4. 转发方法的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程。

重定向

间接转发方式,有时也叫重定向,它一般用于避免用户的非正常访问。例如:用户在没有登录的情况下访问后台资源,Servlet可以将该HTTP请求重定向到登录页面,让用户登录以后再访问。在Servlet中,通过调用response对象的SendRedirect()方法,告诉浏览器重定向访问指定的URL。调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL。

在这里插入图片描述
重定向方法的特点:

  1. 重定向方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
  2. 调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL。
  3. 重定向方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求。可见,浏览器一共发出了两个请求和收到了两次回复。
  4. 重定向方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。对于同一个Web应用程序的内部资源之间的跳转,特别是跳转之前要对请求进行一些前期预处理,并要使用HttpServletRequest.setAttribute方法传递预处理结果,那就应该使用转发方法。不同Web应用程序之间的重定向,特别是要重定向到另外一个WEB站点上的资源的情况,都应该使用HttpServletResponse.sendRedirect方法。

参考文章

https://blog.csdn.net/c_royi/article/details/80563131
https://blog.csdn.net/liubin5620/article/details/79922692

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/61371
推荐阅读
相关标签
  

闽ICP备14008679号