- 浏览: 188364 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. struts2拦截器简介
2. struts2预定义拦截器和拦截器栈
3. 自定义拦截器-登录验证拦截器
拦截器简介 Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现。 优点:通用功能的封装,提供了可重用性; 新建项目HeadFirstStruts2Chap03
2. struts2预定义拦截器和拦截器栈
HelloAction.java package com.andrew.action; import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String execute() throws Exception { System.out.println("执行了HelloAction的默认方法"); return SUCCESS; } } MyInterceptor.java package com.andrew.interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class MyInterceptor implements Interceptor { public void init() { System.out.println("MyInterceptor初始化"); } public String intercept(ActionInvocation invocation) throws Exception { System.out.println("在Action执行之前"); String result = invocation.invoke(); System.out.println("result:" + result); System.out.println("在Action执行之后"); return result; } public void destroy() { System.out.println("MyInterceptor销毁"); } } struts.xml <package name="manage" namespace="/" extends="struts-default"> <interceptors> <interceptor name="myInterceptor" class="com.andrew.interceptor.MyInterceptor"></interceptor> </interceptors> <action name="hello" class="com.andrew.action.HelloAction"> <result name="success">success.jsp</result> <interceptor-ref name="myInterceptor"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action> </package> success.jsp Name:${name } MyInterceptor初始化 http://localhost:8080/HeadFirstStruts2Chap03/hello?name=struts2 运行结果: Name:struts2 控制台: 在Action执行之前 执行了HelloAction的默认方法 result:success 在Action执行之后
3. 自定义拦截器-登录验证拦截器
User.java package com.andrew.model; public class User { private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } UserService.java package com.andrew.service; import com.andrew.model.User; public class UserService { public boolean login(User user) { if ("andrew".equals(user.getUserName()) && "123456".equals(user.getPassword())) { return true; } else { return false; } } } UserAction.java package com.andrew.action; import java.util.Map; import com.andrew.model.User; import com.andrew.service.UserService; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private UserService userService = new UserService(); private User user; private String error; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String getError() { return error; } public void setError(String error) { this.error = error; } @Override public String execute() throws Exception { if (userService.login(user)) { ActionContext actionContext = ActionContext.getContext(); Map<String, Object> session = actionContext.getSession(); session.put("currentUser", user); return SUCCESS; } else { this.error = "用户名或密码错误"; return "error"; } } } GrilAction.java package com.andrew.action; import com.opensymphony.xwork2.ActionSupport; public class GrilAction extends ActionSupport { @Override public String execute() throws Exception { System.out.println("GrilAction execute方法执行!"); return SUCCESS; } } MyInterceptor.java package com.andrew.interceptor; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class LoginInterceptor implements Interceptor { public void init() { System.out.println("LoginInterceptor初始化"); } public String intercept(ActionInvocation invocation) throws Exception { System.out.println("在Action执行之前"); ActionContext actionContext = invocation.getInvocationContext(); Map<String, Object> session = actionContext.getSession(); Object currentUser = session.get("currentUser"); String result = null; if (currentUser != null) { result = invocation.invoke(); } else { HttpServletRequest request = (HttpServletRequest)invocation.getInvocationContext().get(ServletActionContext.HTTP_REQUEST); request.setAttribute("error", "请先登录!"); result = "error"; } System.out.println("result:" + result); System.out.println("在Action执行之后"); return result; } public void destroy() { System.out.println("LoginInterceptor销毁"); } } struts.xml <package name="manage" namespace="/" extends="struts-default"> <interceptors> <interceptor name="loginInterceptor" class="com.andrew.interceptor.LoginInterceptor"></interceptor> <interceptor-stack name="loginStack"> <interceptor-ref name="loginInterceptor"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="loginStack"></default-interceptor-ref> <global-results> <result name="error">error.jsp</result> </global-results> <action name="user" class="com.andrew.action.UserAction"> <result name="success">success.jsp</result> <interceptor-ref name="defaultStack"></interceptor-ref> </action> <action name="gril" class="com.andrew.action.GrilAction"> <result name="success">success.jsp</result> </action> </package> success.jsp 当前用户:${currentUser.userName } login.jsp <form action="user" method="post"> 用户名:<input type="text" name="user.userName"/> 密码:<input type="password" name="user.password"/> <input type="submit" value="登录"/> </form> error.jsp 错误信息:${error } <a href="login.jsp">登录</a> LoginInterceptor初始化 http://localhost:8080/HeadFirstStruts2Chap03/login.jsp 123 123 submit 运行结果: 错误信息:用户名或密码错误 登录 http://localhost:8080/HeadFirstStruts2Chap03/gril 运行结果: 错误信息:请先登录! 登录 控制台: 在Action执行之前 result:error 在Action执行之后 http://localhost:8080/HeadFirstStruts2Chap03/login.jsp andrew 123456 submit 运行结果: 当前用户:andrew http://localhost:8080/HeadFirstStruts2Chap03/gril 运行结果: 当前用户:andrew 控制台: 在Action执行之前 GrilAction execute方法执行! result:success 在Action执行之后
发表评论
-
struts2防重复提交
2019-01-14 08:55 3541. struts2防重复提交 Student.java ... -
struts2文件上传和下载
2019-01-12 16:10 3101. struts2文件上传和下载 1) Struts2 ... -
struts2验证框架
2019-01-12 16:10 4141. struts2验证框架 Struts2基于Stru ... -
struts2国际化
2019-01-12 16:10 3971. struts2国际化 网上转码: http://too ... -
struts2标签
2019-01-12 16:10 4481. struts2标签 Struts2自己封装 ... -
struts2值栈与OGNL
2019-01-12 16:10 4541. struts2值栈简介 值栈是对应每个请求对象的一 ... -
struts2配置result
2019-01-11 09:07 4381. struts2配置result 新建项目HeadF ... -
struts2分模块与action生命周期
2019-01-11 09:07 3531. 分模块 struts.xml <inclu ... -
struts2使用通配符与动态方法调用
2019-01-11 09:06 3891. 使用通配符 新建项目HeadFirstStruts ... -
struts2配置struts.xml
2019-01-11 09:06 3891. struts2配置struts.xml 1 ... -
struts2处理传入多个值
2019-01-10 09:17 3981. struts2处理传入多个值 新建项目HeadFi ... -
struts2属性驱动与模型驱动
2019-01-10 09:17 3841. struts2属性驱动与模型驱动 user.jav ... -
struts2引入ActionSupport
2019-01-10 09:16 4201. struts2引入ActionSupport He ... -
struts2自动获取设置数据
2019-01-10 09:16 3991. struts2自动获取设置数据 新建项目HeadF ... -
struts2简介
2019-01-10 09:16 4641. struts2简介 官网:http://struts. ... -
Java struts2 Jar包
2018-09-03 19:17 6691. Java struts2 Jar包下载地址 http: ...
相关推荐
2. **拦截器链**:在Struts2中,多个拦截器可以形成一个拦截器链,每个拦截器按照定义的顺序依次执行。如果所有拦截器都允许Action执行,那么Action的结果将被传递到下一个拦截器,直到整个链执行完毕。 ### 二、...
在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...
Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)
拦截器是Struts2框架的核心特性之一,它们扮演着处理请求、增强功能和实现业务逻辑的角色。在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的...
### Struts2拦截器详解 #### 一、Struts2拦截器概述 Struts2框架作为Java Web开发中的一种流行框架,其核心组件之一便是**拦截器**。拦截器不仅在Struts2中扮演着重要角色,更是整个框架灵活性与扩展性的基石。...
在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在Action执行前后插入自定义的逻辑,如日志、权限检查、事务管理等。现在我们将深入探讨Struts2的拦截器机制及其实例应用。 ### 一、Struts2拦截...
在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...
### Struts2拦截器的使用方法 #### 一、Struts2拦截器概述 Struts2框架中的拦截器(Interceptor)是一种重要的机制,用于在Action执行前后进行一系列处理,比如参数验证、数据预处理等。它能够帮助开发者更加灵活...
当请求到达控制器时,Struts2会依次调用这个栈中的拦截器,每个拦截器都有机会处理请求,然后决定是否将请求传递给下一个拦截器或直接返回响应。 创建一个简单的Struts2拦截器,你需要遵循以下步骤: 1. 创建拦截...
Struts2拦截器.ppt Struts2拦截器.ppt Struts2拦截器.ppt
拦截器是Struts2框架的核心组成部分,它们在请求处理流程中起到了关键的作用。在本文中,我们将深入探讨Struts2拦截器的工作原理。 ### 一、拦截器概念 拦截器是基于Java的动态代理机制实现的,它允许我们在Action...
拦截器是Struts2框架的一个重要组成部分,能够帮助开发者实现一些在请求处理前后执行的通用逻辑,如日志记录、权限验证、数据校验等。在本场景中,我们将探讨如何使用Struts2拦截器来实现对不文明字迹或者敏感词汇的...
拦截器是Struts2框架的核心组件之一,它允许开发者在动作执行前后插入自定义逻辑,实现如权限验证、日志记录、性能优化等多种功能。在"Struts2 拦截器注解"这个主题中,我们将深入探讨如何利用注解来简化拦截器的...
这篇博客“Struts2 拦截器的执行顺序(二十九)”可能探讨了Struts2拦截器链的工作原理和它们的执行顺序,这对于理解Struts2的内部机制至关重要。 首先,让我们深入理解Struts2的拦截器。拦截器是在Action调用前后...
这篇博客“struts2 拦截器实现登录控制”显然会探讨如何利用拦截器来实现用户登录验证,从而保护应用程序的受保护资源。 首先,我们了解下Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念,它位于...
### Struts2 拦截器与验证框架详解 #### 一、Struts2概述 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的优点,并在此基础上进行了很多改进,使得开发更加灵活高效。Struts2的核心是拦截器...
在Struts2中,拦截器扮演着至关重要的角色,它们是实现MVC(Model-View-Controller)架构的关键组件之一。拦截器允许开发者在动作执行前后插入自定义逻辑,比如日志记录、权限检查、数据验证等,而无需修改核心业务...