Struts 2 interceptor interface: interceptor
•
Java
Syntax:
public interface Interceptor extends Serializable{ void destroy(); void init(); String intercept(ActionInvocation invocation)throws Exception; }
Example
public class TestAction extends ActionSupport{ private static final long serialVersionUID = 1L; public String execute()throws Exception{ //线程睡眠1秒 Thread.sleep(1000); return SUCCESS; } }
<struts> <!--声明常量(开发模式)--> <constant name="struts.devMode"value="true"/> <!--声明常量(在Struts2的配置文件修改后,自动加载)--> <constant name="struts.configuration.xml.reload"value="true"/> <!--声明包--> <package name="myPackge"extends="struts-default"> <!--配置Action--> <action name="testAction"class="com.lyq.action.TestAction"> <!--配置拦截器--> <interceptor-ref name="timer"/> <!--配置返回页面--> <result>success.jsp</result> </action> </package> </struts>
Typical application
/** *验证用户登录的拦截器 *@authorZX */ public class LoginInterceptor extends MethodFilterInterceptor{ private static final long serialVersionUID = 1L; @Override protected String doIntercept(ActionInvocation invocation)throws Exception{ //获取ActionContext ActionContext context = invocation.getInvocationContext();//获取Map类型的session Map<String,Object>session=context.getSession(); //判断用户是否登录 if(session.get("user")!=null){ //调用执行方法 return invocation.invoke(); } //返回登录 return Action.LOGIN; } }
/** *用户Action *@author ZX */ public class UserAction extends ActionSupport{ private static final long serialVersionUID = 1L; //用户名 private String username; //密码 private String password; //获取Map类型的session变量 Map<String,Object>session = ActionContext.getContext().getSession();//登录方法 public String login()throws Exception{ //验证用户名 if("admin".equalsIgnoreCase(username)&&"admin".equalsIgnoreCase(password)){ //登录成功,将用户名放置到sesseion之中 session.put("user",username); //返回管理页面 return"main"; } //返回登录页面 return LOGIN; } //注销用户 public String logoff()throws Exception{ //逐出session中的变量 session.remove("user"); //返回登录页面 return LOGIN; } //进入管理页面 public String main()throws Exception{ return SUCCESS; } 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; } }
<struts> <!--声明常量(开发模式)--> <constant name="struts.devMode"value="true"/> <!--声明常量(在Struts2的配置文件修改后,自动加载)--> <constant name="struts.configuration.xml.reload"value="true"/> <!--声明包--> <package name="myPackge"extends="struts-default"> <!--配置拦截器--> <interceptors> <!--验证用户登录的拦截器--> <interceptor name="loginInterceptor"class="com.lyq.action.LoginInterceptor"/> </interceptors> <!--配置UserAction--> <action name="userAction"class="com.lyq.action.UserAction"> <!--配置返回页面--> <result>/main.jsp</result> <result name="login">/login.jsp</result> <result name="main"type="redirectAction">userAction!main</result> <!--添加验证用户登录的拦截器--> <interceptor-ref name="loginInterceptor"> <param name="excludeMethods">login,logoff</param> <param name="includeMethods">main</param> </interceptor-ref> <!--添加默认拦截器栈--> <interceptor-ref name="defaultStack"/> </action> </package> </struts>
<body> <s:form action="userAction" method="post"> <s:textfield name="username" label="用户名"></s:textfield> <s:password name="password" label="密码"></s:password> <s:submit value="登录" method="login"></s:submit> </s:form> <s:a href="https://www.jb51.ccindex.jsp">返回首页</s:a> </body>
<body> <h1> 管理页面 </h1> <s:a action="userAction" method="logoff">退出</s:a> <s:a href="https://www.jb51.ccindex.jsp">返回首页</s:a> </body>
<body> <s:a action="userAction" method="main">进入管理页面</s:a> <s:a href="https://www.jb51.cclogin.jsp">登录</s:a> </body>
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码