struts2 实战(二)
2015-07-20 10:54
399 查看
上一篇文章中这里写链接内容Action类中继承的BaseAction是这样的,BaseAction主要是继承了ActionSupport类,并写了一些公用的方法。
下面介绍一下拦截器(interceptor),struts2默认的拦截器名字是defaultStack,也可以自己新建拦截器,新建的拦截器包含默认的和自己新建的。具体如下:
-标签中name=”basePackage”表示包名可以被继承,extends=”struts-default”表示继承自默认的包,abstract=”true”属性为true表示里面不能写标签,即使写了也不生效。
里面依次写interceptors 、interceptor、interceptor-stack、interceptor-ref标签。其中interceptor为自己新建的拦截器,interceptor-stack拦截器栈,指向默认拦截器和自己新建的拦截器。
更改默认拦截器栈为自己的。
-标签表示全局返回值的请求转发或重定向。
拦截器命名为loginIntercetor。
拦截器需要继承AbstractInterceptor,重写intercept方法。如果验证通过,给予放行则使用ActionInvocation的invoke()方法。否则返回“login”,根据struts.xml中的配置转向相应的页面。
package com.xingguo.action; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class BaseAction extends ActionSupport{ private static final long serialVersionUID = 1L; //获取session public Map<String,Object> getSession(){ return ActionContext.getContext().getSession(); } public void putSession(String key,Object value){ getSession().put(key, value); } public HttpServletRequest getHttpServletRequest(){ return ServletActionContext.getRequest(); } public String getUserIp(){ return getHttpServletRequest().getRemoteAddr(); } }
下面介绍一下拦截器(interceptor),struts2默认的拦截器名字是defaultStack,也可以自己新建拦截器,新建的拦截器包含默认的和自己新建的。具体如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 修改默认请求后缀(login.action/login.do/login) --> <constant name="struts.action.extension" value="action,do,,"></constant> <!-- 加载product的action配置 --> <include file="struts-product.xml"/> <include file="struts-user.xml"/> <include file="struts-file.xml"/> <package name="basePackage" extends="struts-default" abstract="true"> <interceptors> <interceptor name="loginIntercetor" class="com.xingguo.intercetor.LoginIntercetor"/> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="loginIntercetor"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="myStack"/> <global-results> <result name="login" type="redirectAction"> <param name="namespace">/user</param> <param name="actionName">login</param> </result> </global-results> </package> </struts>
-标签中name=”basePackage”表示包名可以被继承,extends=”struts-default”表示继承自默认的包,abstract=”true”属性为true表示里面不能写标签,即使写了也不生效。
里面依次写interceptors 、interceptor、interceptor-stack、interceptor-ref标签。其中interceptor为自己新建的拦截器,interceptor-stack拦截器栈,指向默认拦截器和自己新建的拦截器。
更改默认拦截器栈为自己的。
-标签表示全局返回值的请求转发或重定向。
拦截器命名为loginIntercetor。
package com.xingguo.intercetor; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.ActionProxy; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; public class LoginIntercetor extends AbstractInterceptor{ private static final long serialVersionUID = 1L; @Override public String intercept(ActionInvocation arg) throws Exception { ActionProxy proxy = arg.getProxy(); String namespace = proxy.getNamespace(); String actionName = proxy.getActionName(); if(namespace.equals("/user") && (actionName.equals("login")||actionName.equals("logins"))){ return arg.invoke(); }else{ ActionContext act = arg.getInvocationContext(); Map<String,Object> session = act.getSession(); Object user = session.get("user"); if(user != null){ return arg.invoke(); }else{ return "login"; } } } }
拦截器需要继承AbstractInterceptor,重写intercept方法。如果验证通过,给予放行则使用ActionInvocation的invoke()方法。否则返回“login”,根据struts.xml中的配置转向相应的页面。
相关文章推荐
- java Calendar详解
- 【Java基础第一弹】Java序列化基础篇
- spring aop事务配置,事务回滚
- Spring bean加载顺序 depends-on
- 001--eclipse中的project 、 classpath和settings
- 无需使用任何jar包就可以使用Java发送邮件(复制)
- (转)eclipse 中创建maven web项目
- Java - Java Heap Space or Java Heap Memory
- Java基于线程实现带有滚动效果的Label标签实例
- spring aop的五种通知类型
- eclipse集成版工具下载地址
- 使用exe4j制作Java启动程序的的等候界面
- Build Antlr4 projects with eclipse java project template.
- Java 反射机制 举例
- JAVA中AES加密方法实例分析
- java:浅谈java环境变量
- 在服务器上发布Java Web项目
- SpringMVC:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax;
- [LeetCode][Java] Restore IP Addresses
- Java 内存分配浅析