首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Annotation配备Interceptor

2012-08-21 
Annotation配置Interceptor利用注解配置拦截器:在xwork包下有:com.opensymphony.xwork2.interceptor.annot

Annotation配置Interceptor

利用注解配置拦截器:

在xwork包下有:

com.opensymphony.xwork2.interceptor.annotations.After.class

com.opensymphony.xwork2.interceptor.annotations.Before.class

com.opensymphony.xwork2.interceptor.annotations.BeforeResult.class

com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor.class

它们是用来配置annotation的。其中前三个依赖于AnnotationWorkflowInterceptor。下面用例子介绍一下:

<%@ taglib prefix="s" uri="/struts-tags" %><body>    <s:form method="POST" action="login.action">    <s:textfield name="user.username" label="Username:"></s:textfield>    <s:password name="user.password" label="Password:"></s:password>    <s:submit value="提交"></s:submit>    </s:form>  </body>

?

<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>

?

<?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="annotation" extends="struts-default"><interceptors><interceptor name="annotationInterceptor" ><result name="success">index.jsp</result><interceptor-ref name="annotationInterceptor"></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref></action></package></struts>

?

package com.zchen.action;import java.util.Map;import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.interceptor.annotations.After;import com.opensymphony.xwork2.interceptor.annotations.Before;import com.opensymphony.xwork2.interceptor.annotations.BeforeResult;import com.zchen.model.User;public class LoginAction extends ActionSupport implements SessionAware {private static final long serialVersionUID = 4387832093273420762L;private User user = null;public User getUser() {return user;}public void setUser(User user) {this.user = user;}@Overridepublic String execute() throws Exception {System.out.println("action方法");System.out.println(user.getUsername());System.out.println(user.getPassword());return super.execute();}    @Before    public void doBefore() {    System.out.println("action执行之前方法被调用");}        @After    public void doAfter() {    System.out.println("action执行之后方法被调用");}    @BeforeResult    public void doBeforeResult() {    System.out.println("result执行之前方法被调用");}    public void setSession(Map<String, Object> arg0) {}}

?

package com.zchen.model;public class User {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;}}

?

此时输出顺序是:

???????? action执行之前方法被调用
??????? ?action方法
??????? ?admin
???????? 1234
???????? result执行之前方法被调用
???????? action执行之后方法被调用

?

所以我们可以用这种配置判断用户是否登录,只有登录了才可以访问页面:

(我们单写一个Action类作为权限管理简要代码如下)

package com.zchen.action;import java.util.Map;import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionSupport;public class AnthInterceptor extends ActionSupport implements SessionAware {private static final long serialVersionUID = 4387832093273420762L;Map session;public String doBefore(){if(session.get("login")==null){//如果没有session表示用户还没有登录return Action.LOGIN;}else{//返回null表示程序继续执行execute方法而此方法默认返回successreturn null;}}public void setSession(Map<String, Object> session) {this.session = session;}}

?

在struts.xml中配置即可。

热点排行