`
a3mao
  • 浏览: 563439 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2.18 的 interceptor

    博客分类:
  • Work
阅读更多
首先定义我们自己的Interceptor
package com.web.interceptor;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.convention.annotation.ParentPackage;

import com.common.utils.StringUtil;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.util.ValueStack;
import com.web.action.Constants;

@ParentPackage(value="struts-default")
public class LoginInterceptor extends AbstractInterceptor
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static final String USER_SESSION_KEY="wallet.session.user";
	
	public void init()
	{}
	
	@SuppressWarnings("unchecked")
	@Override
	public String intercept(ActionInvocation invocation) throws Exception
	{ 
		ActionContext actionContext = invocation.getInvocationContext();
		HttpServletRequest request = (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);

		String uri = request.getRequestURI();
		if(uri.indexOf("index.action")>-1)
		{
			return Constants.INPUT; 
		}
		else if(uri.indexOf("login.action")>-1)
		{
			ValueStack vt = actionContext.getValueStack();
			java.util.Map<String, Object> mp = vt.getContext();
			
			java.util.Map<String, Object> paraMap = (java.util.Map<String,Object>)mp.get(ActionContext.PARAMETERS);
			String[] name = (String[])paraMap.get("user.name");
		 
			//String name = (String)vt.findValue("user.name");
			if(name!=null && name.length>0 && !StringUtil.hasContent(name[0]))
			{
				vt.set("fielderror", "必须输入用户名!");
				return Constants.INPUT;
			}
			else return invocation.invoke();
		}
		else
			return invocation.invoke();
	}

	public void destroy()
	{}
}


将其注册到struts中,修改struts2.xml文件增加如下内容:
<package name="struts-interceptor" extends="struts-default"> 
		<interceptors> 
		    <interceptor name="loginInterceptor" class="com.web.interceptor.LoginInterceptor"/>
		</interceptors> 
	</package> 


这样我们自己定义的Interceptor已经设置完成,如果想使用则可以用annotation指定。如
@InterceptorRefs({
  @InterceptorRef("loginInterceptor"),
  @InterceptorRef("defaultStack")
})
@ParentPackage(value="struts-interceptor")  
@Namespace(value="/application")  
@Result(name="input",location="/application/login.jsp")
public class LoginAction extends BaseAction
{
	private static final long serialVersionUID = 1L;
}	

我们在LoginAction里使用了刚刚自定义的Interceptor。

官网教程提供的解决方案:
引用

If you get errors like "Unable to find interceptor class referenced by ref-name XYZ". This means that the package where Convention is placing your actions, does not extend the package where the interceptor is defined. To fix this problem either 1)Use @ParentPackage annotation(or struts.convention.default.parent.package) passing the name of the package that defines the interceptor, or 2) Create a package in XML that extends the package that defines the interceptor, and use @ParentPackage(or struts.convention.default.parent.package) to point to it.

分享到:
评论

相关推荐

    struts2.18 all zip

    Struts2.18是Apache Struts框架的一个版本,它是一个基于MVC(Model-View-Controller)设计模式的开源Java Web应用框架。这个框架的主要目的是为了帮助开发者构建结构清晰、易于维护的Web应用程序。在"struts2.18 ...

    struts2.18 src

    Struts2.18是Apache Struts框架的一个版本,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。Struts2在Web开发领域中扮演着重要的角色,因为它提供了一种结构化的、可扩展的方式来组织和控制...

    struts2.18jar包

    Struts2.18是一个非常重要的Java Web框架的版本,由Apache软件基金会开发并维护。Struts2作为MVC(模型-视图-控制器)架构的一部分,极大地简化了基于Java的Web应用程序的开发过程。这个"struts2.18jar包"包含了所有...

    jqueryvalidate(猫冬)+spring3.0+struts2.18+hibernate3整合资源包

    Struts 2.18 是该框架的一个稳定版本,提供了许多改进和新功能,例如增强了拦截器(Interceptor)机制,支持更多的数据绑定选项,以及更好的错误处理能力。在项目中,Struts 2 可能用于处理HTTP请求,控制业务流程,...

    Struts2中使用JSON数据格式所需全部jar包

    本压缩包提供了在Struts2中使用JSON所需的全部jar包,特别适用于支持struts2.18及更高版本的应用,确保了良好的向下兼容性。 首先,我们需要了解JSON(JavaScript Object Notation)的基本概念。JSON是一种数据交换...

    lib_strutsj—jar包

    在描述中提到的`struts2.18`指的是Struts 2框架的版本号,这通常代表了该框架的一次重大更新或改进。 在Java Web开发中,JAR(Java Archive)文件是一种归档格式,它集合了多个类文件和其他资源,使得开发者可以将...

    SSI(struts2+spring2.5+ibatis2.3)项目实例

    在SSI项目实例中,Struts2.18被用来处理HTTP请求,控制应用程序的流程,并与视图和模型进行交互。其核心组件包括Action、Result、Interceptor等,它们协同工作以实现业务逻辑和视图的解耦。 1. **Action**:是...

    struts2需要的jar

    描述中提到的版本为2.18,这意味着这个压缩包提供的`jar`文件是针对Struts2版本2.18的。每个新版本可能会修复已知问题、增加新功能或者优化性能。因此,确保使用与项目匹配的Struts2版本至关重要,以避免兼容性问题...

    struts2内置拦截器简介

    在Struts2的配置文件中,可以通过`&lt;interceptor-stack&gt;`标签定义拦截器栈,然后在`&lt;action&gt;`标签中引用这些拦截器栈。 例如: ```xml &lt;interceptor-stack name="basicStack"&gt; &lt;interceptor-ref name="exception"/&gt;...

    stucts2描述

    1. **引入依赖库**:要使用Struts2,首先需要在项目中添加一系列必要的jar包,包括但不限于`struts2-core-2.18.jar`、`xwork-core-2.16.jar`、`ognl-2.7.3.jar`、`freemarker-2.3.15.jar`和`commons-fileupload-...

Global site tag (gtag.js) - Google Analytics