编写一个简单的Struts2 拦截器

来源:互联网 发布:淘宝星期四数码 编辑:程序博客网 时间:2024/05/23 11:54

 

实现一个拦截器需要implements Interceptor,或者去继承Interceptor的子类(例如抽象类AbstractInterceptor),首先,写一个Interceptor类,实现Interceptor接口。
 
package com.zhaozy.interceptors;
 
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
/**
 *
 *@authorCapricorn
 *
 */
publicclass MyInterceptor implements Interceptor {
 
   publicvoid destroy() {
     System.out.println("This is MyInterceptor.destroy()..");
   }
 
   publicvoid init() {
     System.out.println("This is MyInterceptor.init()..");
   }
 
   public String intercept(ActionInvocation invocation) throws Exception {
     System.out.println("This is MyIntercepor.intercept()..");
     String result = invocation.invoke();
     return result;
   }
 
}
 
 
写一个Action类,实现登陆功能。
package com.zhaozy.actions;
 
import com.opensymphony.xwork2.ActionSupport;
 
/**
 *
 *@authorCapricorn
 *
 */
publicclass LoginAction extends ActionSupport {
 
   private String username;
   private String password;
 
   public String getUsername() {
     returnusername;
   }
 
   publicvoid setUsername(String username) {
     this.username = username;
   }
 
   public String getPassword() {
     returnpassword;
   }
 
   publicvoid setPassword(String password) {
     this.password = password;
   }
 
   @Override
   public String execute() throws Exception {
     if ("hello".equals(this.getUsername().trim())
          && "world".equals(this.getPassword().trim())) {
        returnSUCCESS;
     }
     this.addFieldError("username", "username or password is error!");
     return"failer";
   }
 
}
 
编写一个登陆界面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆界面</title>
</head>
<body>
<table>
   <tr>
     <td style="color:red">
        <s:fielderror></s:fielderror>
     </td>
   </tr>
</table>
   <s:form action="login" method="post" theme="simple">
     username:<s:textfield name="username" label="username"></s:textfield><br>
     password:<s:password name="password" label="password"></s:password><br>
     <s:submit label="登陆" value="登陆"></s:submit>
   </s:form>
</body>
</html>
 
这是登陆成功后的显示页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆成功</title>
</head>
<body>
   <center><h1>恭喜您,登陆成功!!</h1></center>
</body>
</html>
 
 
然后配置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>
   <package name="struts2" extends="struts-default">
  
     <interceptors>
        <interceptor name="myInterceptor" class="com.zhaozy.interceptors.MyInterceptor"></interceptor>
     </interceptors>
  
     <action name="login" class="com.zhaozy.actions.LoginAction">
        <result name="success">/result.jsp</result>
        <result name="input">/login.jsp</result>
        <result name="failer">/login.jsp</result>
        <interceptor-ref name="myInterceptor"></interceptor-ref>
        <interceptor-ref name="defaultStack"></interceptor-ref>
     </action>
   </package>
</struts>
 
 
这样,一个简单的拦截器就写完了,它在登陆界面提交的时候触发

 

原创粉丝点击