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()方法结束之后第二个拦截器后半段第一个拦截器后半段







 


 

原创粉丝点击