Struts2中拦截器与过滤器的执行顺序

简单理解Struts2中拦截器与过滤器的区别及执行顺序 立即下载
web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <web-app version="2.4"

  3. xmlns="http://java.sun.com/xml/ns/j2ee"

  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

  6. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  7.   <welcome-file-list>

  8.     <welcome-file>login.jsp</welcome-file>

  9.   </welcome-file-list>

  10.   

  11.   <filter>

  12.    <filter-name>MyFilter</filter-name>

  13.    <filter-class>filter.MyFilter</filter-class>

  14.   </filter>

  15.   <filter-mapping>

  16.    <filter-name>MyFilter</filter-name>

  17.    <url-pattern>/*</url-pattern>

  18.   </filter-mapping>

  19.   

  20.   <filter>

  21.    <filter-name>struts2</filter-name>

  22.    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

  23.   </filter>

  24.   <filter-mapping>

  25.    <filter-name>struts2</filter-name>

  26.    <url-pattern>/*</url-pattern>

  27.   </filter-mapping>

  28.   

  29. </web-app>

复制代码

filter.MyFilter

  1. package filter;

  2. import java.io.IOException;

  3. import javax.servlet.Filter;

  4. import javax.servlet.FilterChain;

  5. import javax.servlet.FilterConfig;

  6. import javax.servlet.ServletException;

  7. import javax.servlet.ServletRequest;

  8. import javax.servlet.ServletResponse;

  9. public class MyFilter implements Filter {

  10. public void destroy() {

  11. }

  12. public void doFilter(ServletRequest request, ServletResponse response,

  13.    FilterChain chain) throws IOException, ServletException {

  14.   

  15.   System.out.println("请求过滤");

  16.   

  17.   chain.doFilter(request, response);

  18.   

  19.   System.out.println("返回过滤");

  20.   

  21. }

  22. public void init(FilterConfig arg0) throws ServletException {

  23. }

  24. }

复制代码

interceptor.LoginInterceptor

  1. package interceptor;

  2. import org.apache.struts2.ServletActionContext;

  3. import com.opensymphony.xwork2.ActionInvocation;

  4. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

  5. public class LoginInterceptor extends AbstractInterceptor {

  6. private static final long serialVersionUID = -2796326480994355318L;

  7. @Override

  8. public String intercept(ActionInvocation ai) throws Exception {

  9.   

  10.   System.out.println("请求拦截");

  11.   

  12.   if(!"YOYO".equals(ServletActionContext.getRequest().getParameter("username"))){

  13.    return "login";

  14.   }

  15.   

  16.   String result = ai.invoke();

  17.   

  18.   System.out.println("返回拦截");

  19.   

  20.   return result;

  21. }

  22. }

复制代码

action.LoginAction

  1. package action;

  2. public class LoginAction {

  3. public String execute(){

  4.   System.out.println("登陆ACTION");

  5.   

  6.   return "success";

  7. }

  8. }

复制代码

index.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

  3. <html>

  4.   <head>

  5.     <title>My JSP 'index.jsp' starting page</title>

  6.   </head>

  7.   

  8.   <body>

  9.     <h3>Login Success!</h3>

  10.   </body>

  11. </html>

复制代码

login.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

  3. <html>

  4.   <head>

  5.     <title>My JSP 'index.jsp' starting page</title>

  6.   </head>

  7.   

  8.   <body>

  9.     <h3>Login</h3>

  10.     <hr>

  11.     <form action="Login.action" method="OST">

  12.      Name: <input type="text" name="username" />

  13.      <input type="submit" value="submit" />

  14.     </form>

  15.   </body>

  16. </html>

复制代码

部署好后打开login.jsp,输入任意非"YOYO"字符,控制台打印出

请求过滤

请求拦截

返回过滤

说明拦截之后还会按照原路返回;

如果输入"YOYO",则打印出

请求过滤

请求拦截

登陆ACTION

返回拦截

返回过滤

由此可以验证它的执行顺序 = =。

电竞护航系统成品搭建俱乐部点单小程序开发三角洲小程序搭建 阅读详情

相关推荐

AISHELL-2 中文语音数据库

AISHELL-1 is by far the largest open-source speech corpus available for Mandarin speech recognition research. It was released with a baseline system containing solid training and testing pipelines for Mandarin ASR. In AISHELL-2, 1000 hours of cle

AI_SHELL的博客 7888

转: Struts2中拦截器与过滤器的区别及执行顺序

当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) FilterDispatecher会去查找相应的ActionMapper,如果找到了相应的ActionMapper它将会将控制权限交给ActionProxy d) ActionProxy将会通过ConfigurationManager来

qq_28048579的博客 184

Win11下WSL2安装Ubuntu22.04避坑指南:从镜像源到C++环境配置

本文提供了一份详细的Win11下WSL2安装Ubuntu22.04的实战避坑指南。内容涵盖从WSL2核心安装、自定义安装路径,到更换国内镜像源以解决更新缓慢问题,并一站式配置完整的C++开发环境(包括GCC、CMake、vcpkg等),最后分享提升开发体验的进阶技巧,助你在Windows上打造高效的Linux开发工作站。

weixin_29260291的博客 562

Struts2中拦截器与过滤器的区别及执行顺序

当接收到一个httprequest ,  a) 当外部的httpservletrequest到来时  b) 初始到了servlet容器 传递给一个标准的过滤器链  c) FilterDispatecher会去查找相应的ActionMapper,如果找到了相应的ActionMapper它将会将控制权限交给ActionProxy  d) ActionProxy将会通过Configuration

分享我的点点滴滴,在成长路上与你同行! 631

GX WORKS2通过交换机连接PLC的方法

三菱PLC连接方法的分享

weixin_64927621的博客 3619

Windows下用MSYS2一键搞定Verilator安装(附国内镜像加速)

本文详细介绍了在Windows系统下,如何利用MSYS2工具和国内镜像源,快速、高效地完成Verilator的安装与配置。通过替换清华镜像源加速下载,并配合Pacman包管理器,实现近乎一键式的安装流程,有效解决了传统方法步骤繁琐、网络依赖下载慢的问题,为数字电路仿真提供了便捷的Windows环境解决方案。

weixin_29208327的博客 594
上一篇: 中文乱码解决大全
下一篇: ajax中文乱码解决方法
WlHelloWorld
博客等级 码龄15年 12粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值