Struts2配置拦截器
来源:互联网 发布:手机淘宝发布宝贝教程 编辑:程序博客网 时间:2024/04/29 09:55
struts.xml中内容如下
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><constant name="struts.configuration.xml.reload" value="true"/><package name="default" extends="struts-default"><interceptors><interceptor name="HelloWordInterceptor" class="com.interceptor.HelloWordInterceptor"></interceptor><interceptor name="SecondInterceptor" class="com.interceptor.SecondInterceptor"></interceptor><interceptor name="Validate" class="com.interceptor.Validate"></interceptor><interceptor-stack name="myStack"><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="HelloWordInterceptor"></interceptor-ref><interceptor-ref name="SecondInterceptor"></interceptor-ref><interceptor-ref name="Validate"></interceptor-ref></interceptor-stack><interceptor-stack name="myStack2"><interceptor-ref name="Validate"></interceptor-ref></interceptor-stack></interceptors><default-interceptor-ref name="myStack2"></default-interceptor-ref><default-action-ref name="aaa"></default-action-ref><global-results><result name="input">/index.jsp</result></global-results><action name="*_*" class="com.action.{2}Action" method="{1}"><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="HelloWordInterceptor"></interceptor-ref><result name="success">/success.jsp</result><result name="failed">/index.jsp</result><result name="input">/index.jsp</result><result name="newAction" type="redirectAction">${action}</result></action><action name="aaa"><result>/error.jsp</result></action><action name="Action2" class="com.action.Action2"><result name="error">/error.jsp</result></action><action name="manager" class="com.action.Action2" method="manager"><result name="manager">/manager.jsp</result></action><action name="common" class="com.action.Action2" method="common"><result name="common">/common.jsp</result></action></package></struts>
拦截器在<action name="" class="">之后找,如果没有则找到<default-interceptor-ref name="myStack2"></default-interceptor-ref>,如果还没有则找<package name="default" extends="struts-default"> 的extends="struts-default" 即找到struts-default.xml文件中的默认拦截器<default-interceptor-ref name="defaultStack"/>
web.xml中
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>Struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>Struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
HelloWordInterceptor.java
package com.interceptor;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class HelloWordInterceptor extends AbstractInterceptor{@Overridepublic String intercept(ActionInvocation invocation) throws Exception {System.out.println("第一个拦截器前半段");String result = invocation.invoke();System.out.println("第一个拦截器后半段");return result;}}
SecondInterceptor.java
package com.interceptor;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class SecondInterceptor extends AbstractInterceptor{@Overridepublic String intercept(ActionInvocation invocation) throws Exception {System.out.println("第二个拦截器前半段");System.out.println("接下来调用Action的execute()方法");String result = invocation.invoke();System.out.println("execute()方法结束之后");System.out.println("第二个拦截器后半段");return result;}}
Validate.java
package com.interceptor;import java.util.Map;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class Validate extends AbstractInterceptor{@Overridepublic String intercept(ActionInvocation invocation) throws Exception {Map session = invocation.getInvocationContext().getSession();String username = (String)session.get("sessionUsername");if(username==null){return Action.INPUT;}return invocation.invoke();}}
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <% String msg = (String)request.getAttribute("msg"); if(msg!=null) { %> <font color="red"><%=msg %></font> <% } %> <body> struts2标签登录 <s:actionerror/> <s:form action="login_Regist" method="post"> <s:textfield name="user.username" label="用户名"/><br/> <s:textfield name="user.password" label="密码"/><br/> <s:textfield name="user.point" label="坐标"/><br/> <s:textfield name="user.date" label="日期"/><br/> <s:submit label="注册" align="left"/> </s:form> <a href="delete_Regist.action">删除</a> <a href="updateRegistAction.action">修改</a> <a href="toNewAction_Regist.action?user.username=manager&user.password=111">跳转</a> </body></html>
User.java
package com.vo;import java.util.Date;public class User {private String username;private String password;private Point point;private Date date;public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}public Point getPoint() {return point;}public void setPoint(Point point) {this.point = point;}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;}}
Action2.java
package com.action;import com.opensymphony.xwork2.Action;public class Action2 implements Action{public String execute() throws Exception {String target = "error";System.out.println("124");return target;}public String manager(){String target = "manager";System.out.println(target);return target;}public String common(){String target = "common";System.out.println(target);return target;}}
BaseAction.java
package com.action;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class BaseAction extends ActionSupport{//获得request对象public HttpServletRequest getRequest(){ActionContext context = ActionContext.getContext();HttpServletRequest request = (HttpServletRequest)context.get(ServletActionContext.HTTP_REQUEST);return request;}//获得session对象public HttpSession getSession(){ActionContext context = ActionContext.getContext();HttpServletRequest request = (HttpServletRequest)context.get(ServletActionContext.HTTP_REQUEST);HttpSession session = request.getSession();return session;}//获得application对象public ServletContext getApplication(){ActionContext context = ActionContext.getContext();ServletContext Application = (ServletContext)context.get(ServletActionContext.SERVLET_CONTEXT);return Application;}//获得response对象public HttpServletResponse getResponse(){ActionContext context = ActionContext.getContext();HttpServletResponse response = (HttpServletResponse)context.get(ServletActionContext.HTTP_RESPONSE);return response;}}
RegistAction.java
package com.action;import java.util.Date;import java.util.Map;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionContext;import com.vo.User;public class RegistAction extends BaseAction{private String action;private User user;public RegistAction(){System.out.println("创建一个新的Action实例!!!!!!!!!");}public User getUser() {return user;}public void setUser(User user) {this.user = user;}//表单验证@Overridepublic void validate() {System.out.println(user);if(user!=null){if(("").equals(user.getUsername().trim())||("").equals(user.getPassword().trim())){System.out.println("***************************");this.addActionError("用户名、密码不能为空");}}}/*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;}*/public void update(){System.out.println("in update!!!!!!!!!");}public String toNewAction(){if("manager".equals(user.getUsername())){this.action = "manager";}else{this.action = "common";}String target = "newAction";return target;}public void delete(){System.out.println("in delete!!!!!!!!!");}public String login() throws Exception {System.out.println("login*********************");String target = "";String username = user.getUsername();//String password = user.getPassword();System.out.println("输出转换后的point!!!!!!!!!!!!!");System.out.println(user.getPoint().getX() + ":" + user.getPoint().getY());System.out.println(user.getDate().toString());boolean flag = false;if("aaa".equals(username)){username = "ddd";//第二种//ActionContext context = ActionContext.getContext();//HttpServletRequest request = (HttpServletRequest)context.get(ServletActionContext.HTTP_REQUEST);//ServletContext application = (ServletContext)context.get(ServletActionContext.SERVLET_CONTEXT);//第三种 和Servlet API解耦 /*ActionContext context = ActionContext.getContext();Map<String,Object> request = (Map)context.get("request");request.put("username", username);Map<String,Object> session = context.getSession();session.put("sessionUsername", username);Map<String,Object> application = context.getApplication();application.put("applicationUsername",username);*///获得内置对象的方式 第一种 Servlet API 耦合 1/*HttpServletRequest request = ServletActionContext.getRequest();request.setAttribute("username", username);HttpSession session = request.getSession(true);session.setAttribute("sessionUsername", username);ServletContext application = ServletActionContext.getServletContext();application.setAttribute("applicationUsername", username);*///从封装里取HttpServletRequest request = this.getRequest();request.setAttribute("username", username);HttpSession session = request.getSession();session.setAttribute("sessionUsername", username);ServletContext application = this.getApplication();application.setAttribute("applicationUsername", username);target = "success";}else{HttpServletRequest request = ServletActionContext.getRequest();request.setAttribute("msg", "用户名已存在");target = "failed";}return target;}public String getAction() {return action;}public void setAction(String action) {this.action = action;}}
success.jsp
<%@ page language="java" pageEncoding="utf-8"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body> <h1>注册成功!!!</h1> 恭喜你,<%=request.getAttribute("username") %><br/> <%=session.getAttribute("sessionUsername") %><br/> <%=application.getAttribute("applicationUsername") %><br/> 坐标<s:property value="user.point.x"/>:<s:property value="user.point.y"/> 日期<s:property value="user.date"/> EL取值<br/> ${requestScope.username}<br/> ${sessionScope.sessionUsername}<br/> ${applicationScope.applicationUsername} </body></html>
manager.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body> <h1>欢迎你,管理员!!!</h1> </body></html>
common.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body> <h1>欢迎你,普通用户!!!</h1> </body></html>
error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body> <h1>This is error page.</h1> </body></html>
控制台输出
第一个拦截器前半段第二个拦截器前半段接下来调用Action的execute()方法execute()方法结束之后第二个拦截器后半段第一个拦截器后半段
- Struts2拦截器配置
- struts2 拦截器配置
- Struts2配置拦截器
- 配置struts2拦截器
- Struts2拦截器配置
- struts2 拦截器配置
- Struts2拦截器配置
- struts2拦截器配置
- struts2 拦截器配置
- Struts2拦截器配置
- Struts2拦截器配置
- struts2拦截器配置
- Struts2拦截器配置
- Struts2 拦截器配置
- Struts2配置拦截器和拦截链
- Struts2配置拦截器和拦截链
- Struts2全局拦截器配置
- struts2 错误拦截器配置
- javascript console
- 经纬度搜索(1)-Geohash算法原理
- ACM经历
- 一步一步教你怎么编译GNU ARM GCC 交叉编译器 arm-none-eabi-gcc (原发于:2012-07-23 23:53:32)
- 在线统计人数 相关学习 代码
- Struts2配置拦截器
- js正则表达式
- 参加ACM所需要的基础知识
- WebApp 开发中常用的代码片段
- SQL与T_SQL
- Java的形参与实参
- 【DP】 hdu4362 Dragon Ball
- 【倍增/强连通分量】暴走的猴子
- 复制构造函数与赋值操作符之间的区别