BookAction
public class BookAction implements Action { public String execute() throws Exception { System.out.println("bookaction"); return SUCCESS; } }
UserInfo
public class UserInfo { 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; } }
LoginAction
public class LoginAction implements Action { private UserInfo user; public String execute() throws Exception { Map<String, Object> session = ActionContext.getContext().getSession(); if (user!=null) { if (user.getUsername().equals("1")&&user.getPassword().equals("1")) { //省略一个步骤,记录session session.put("uname",user.getUsername()); return SUCCESS; }else { return LOGIN; } }else {//不是从页面过来的 if (session!=null&&session.get("uname")!=null) { return "success"; }else { System.out.println("Action中的自定义代码"); return "login"; } } } public UserInfo getUser() { return user; } public void setUser(UserInfo user) { this.user = user; } }
MyIntercepter
public class MyIntercepter implements Interceptor{ public void destroy() { } public void init() { System.out.println("拦截器已经成功初始化....."); } public String intercept(ActionInvocation actionInvocation) throws Exception { System.out.println("对象"+actionInvocation); //Action是谁 Object action = actionInvocation.getAction(); System.out.println("action============="+action); String value; //判定session里面key值对应的value是否存在 Map<String, Object> session = ActionContext.getContext().getSession(); Object name = session.get("uname"); String actionName = actionInvocation.getProxy().getActionName(); actionInvocation.getProxy().getNamespace();//user System.out.println("actionName======"+actionName); if (actionName.equals("login")) { System.out.println("================================Action是Login"); //user/login.action value= actionInvocation.invoke(); }else if(name!=null) { //已经登录了,,放行 value= actionInvocation.invoke(); String method = actionInvocation.getProxy().getMethod(); System.out.println("方法:"+method); }else{ //走到这个else,证明你访问的Action,既不是登录,也不是被授权访问的操作 value="login"; } System.out.println("逻辑视图名"+value); return value; } }
struts.xml
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.devMode" value="true"></constant> <package name="day07" namespace="/" extends="default"> <action name="login" class="cn.happy.day07intercepter.LoginAction"> <result name="success">/day07/success.jsp</result> <result name="login">/day07/login.jsp</result> </action> <action name="book" class="cn.happy.day07intercepter.BookAction"> <result name="success">/day07/booksuccess.jsp</result> </action> </package> </struts>
login.jsp
<%@ taglib prefix="s" uri="/struts-tags" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登录</title> </head> <body> <h2>登录</h2> <s:form method="POST" action="login"> 请输入用户名: <s:textfield name="user.username"></s:textfield> <br/> <s:textfield name="user.password"></s:textfield><br/> <s:submit value="登陆"></s:submit> </s:form> </body> </html>