`
mxl86
  • 浏览: 175459 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts2.1拦截器总结

阅读更多

今天没事干看了看struts2.1的拦截器部分,自己做了一个小例子,汇总一下,有需要的朋友也可以看看……

 

注:有关struts2.1的拦截器的概念东东我就不介绍了,自己可以去查查资料.

 

 

下面是本人写的登录实现拦截器的例子:

 

1. login.jsp

<s:form action="userLoginAction.action" method="post">
    	Username:<s:textfield name="user.username" /><br>
    	Password:<s:password name="user.password" /><br/>
    	
    	<s:submit value="Submit" /> &nbsp; <s:reset value="Reset" />
    </s:form>

 

 

2. struts.xml

<package name="User" extends="struts-default">
    	
       <!-- 设置自己创建的拦截器栈 -->
       <interceptors>   
            <interceptor name="loginInterceptor" class="org.com.ssh.action.LoginInterceptor"></interceptor>   
            <interceptor-stack name="loginDefaultStack">   
                <interceptor-ref name="loginInterceptor"></interceptor-ref>   
                <interceptor-ref name="defaultStack"></interceptor-ref>   
            </interceptor-stack>   
        </interceptors>
    	
        <global-results>   
            <result name="login" type="redirect">/login.jsp</result>
        </global-results>
    	    	
    	<action name="findUserAction" class="org.com.ssh.action.UserAction" method="FindUser">
    		<result>/index.jsp</result>
    		<!-- 此处引用拦截器 -->
    		<interceptor-ref name="loginDefaultStack"></interceptor-ref>
    	</action>
    	
    	<action name="userLoginAction" class="org.com.ssh.action.UserLoginAction" method="UserLogin">
    		<result name="success">/loginSuc.jsp</result>
    		<result name="error">/login.jsp</result>
    	</action>
    	 	
    </package>

 

注意:配置文件里最好使用全局转发的login代码

struts2 写道
<global-results>
<result name="login" type="redirect">/login.jsp</result>
</global-results>

 

3. UserLoginAction.java

private User user;
	
	@Autowired
	private UserService userservice;
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	
	public UserService getUserservice() {
		return userservice;
	}

	public void setUserservice(UserService userservice) {
		this.userservice = userservice;
	}
	
	/**
	 * 验证登录用户是否正确
	 * @return tipMes
	 */
	public String UserLogin()
	{
		String tipMes = "";
		
		//MD5对密码进行加密
		MD5 m = new MD5();
		user.setPassword(m.getMD5ofStr(user.getPassword()));
		
		Boolean b = userservice.valLogin(user);
		
		if(b == true)
		{
			user = userservice.FindUserPro(user);
			ActionContext.getContext().getSession().put("user", user);
			
			return SUCCESS;
		}
		else
		{
			this.addFieldError(tipMes, "您输入的Username或者Password不匹配,请重新输入!");
			return ERROR;
		}
	}

 

 

4. LoginInterceptor.java

public class LoginInterceptor extends AbstractInterceptor {

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		
	ActionContext actionContext = invocation.getInvocationContext();      
	           
	    Map session = actionContext.getSession();
	    
	    User user = (User)session.get("user");
	    
	    if (user == null){   
	        return Action.LOGIN;
	    }
	    else
	    {
	    	return invocation.invoke();
	    }
	}
}

 

5. loginSuc.jsp

<body>
    登录成功!
</body>

 

 

 

 

OK,简单的登录的拦截器就搞定了!

分享到:
评论
26 楼 xw_gongchengshi 2010-12-08  
自定义过滤器是可以的,只要不跟系统已有的重名。
25 楼 mxl86 2010-12-08  
回:sam_kee

好几天没来javaeye了,上来刚看到不好意思啊,呵呵~
24 楼 mxl86 2010-12-08  
sam_kee 写道
正在学习中!加油!我想问一下,如果自定义的拦截器名字为SimpleInterceptor的话,会不会报错呢?


如果你用的Struts2的版本自带的默认的拦截器名字是这个  那么你就不能使用了 不然肯定会报错~
23 楼 mxl86 2010-12-08  
sam_kee 写道
拦截器是面向切面编程,可以任意指定一个action进行过滤;
而过滤器是对整个web项目的request请求进行过滤。
个人理解,待考证


个人觉得一般说的过滤器一般是过滤整个web程序
22 楼 mxl86 2010-12-08  
sam_kee 写道
楼主,你那个MD5加密是不是要自己写啊?看到留言能不能回复一个呢?哈哈,谢谢先


我上面就是举例一下,你可以换成自己的MD5类 替代验证密码那部分~~呵,这个就随便了
21 楼 anonymousstone 2010-12-04  
 public void register(ContainerBuilder containerBuilder, LocatableProperties props) throws ConfigurationException {
        if (servletContext != null && !containerBuilder.contains(ServletContext.class)) {
            containerBuilder.factory(ServletContext.class, new Factory<ServletContext>() {
                public ServletContext create(Context context) throws Exception {
                    return servletContext;
                }
            });
        }
        //调用父类的register,关键点所在
        super.register(containerBuilder, props);
    }
20 楼 sam_kee 2010-12-03  
正在学习中!加油!我想问一下,如果自定义的拦截器名字为SimpleInterceptor的话,会不会报错呢?
19 楼 sam_kee 2010-12-03  
楼主,你那个MD5加密是不是要自己写啊?看到留言能不能回复一个呢?哈哈,谢谢先
18 楼 sam_kee 2010-12-02  
拦截器是面向切面编程,可以任意指定一个action进行过滤;
而过滤器是对整个web项目的request请求进行过滤。
个人理解,待考证
17 楼 threejin520 2010-11-30  
楼主的例子都没写完
16 楼 silent_chen_jquery 2010-06-01  
又看了一遍,怎么没看懂啊?到底怎么实现登录拦截的?
15 楼 silent_chen_jquery 2010-06-01  
LZ的例子开始看起来还不错,可是后来在调用Interceptor的时候令人觉得很突兀,总觉得那个UserAction不是很协调,使用拦截器的部分解释不足
14 楼 jashawn 2010-01-18  
Aop其实只是一种方法论。
你尝试过用decorate侵犯aop吗?
那么callback可以意淫aop吗?
好了,照我这么说下去aop的东西在设计模式里实在太多了。
无奈它们都太过局限于接口约定,就像婚姻证书一样,一夫一妻制呀。

哪像动态代理~~那才暴力~~见谁抽谁~~ 顶个配置提升一下品位可以有选择性地OOXX。
好吧,我承认我低俗了~ 我更是扯远了,有罪呀~~

其实吧,就是不习惯继承AbstractInterceptor。

话说我从浦西搬到浦东吧,扔了好多东西,好舍不得呀。
13 楼 mavlarn 2010-01-14  
LK.Bing 写道
这栏截器和过滤器有什么不一样的啊?

过滤器是servlet容器在收到某一种请求的时候,预先调用过滤器的方法,然后根据结果再继续执行或者返回。
拦截器是在某一个类的某个方法被调用前,调用拦截器的before()方法,然后这个方法被执行,最后,再调用拦截器的after方法。如果有多个拦截器,那么就依次调用,就像一个堆栈一样。
12 楼 lkf520java 2010-01-13  
其实拦截器最早的概念的是
jdk的类库中所带的Bean代理+反射来实现的
11 楼 zilong8000 2009-12-12  
wujiazhao88 写道
楼主何不自己实现一个拦截器,理解更深刻

自己实现一个 然后再看看他的源码

也许你会发现新的东西。。。。
10 楼 aoliwen521 2009-12-12  
LK.Bing 写道
这栏截器和过滤器有什么不一样的啊?


我的一点理解就是拦截器相当于Struts中的过滤器。
过滤器本身和struts的FilterDispatcher是平级,不能调用struts的api来实现一些复杂的功能。
拦截器可以调用struts的api,获取一些action的信息。
9 楼 geeksun 2009-12-11  
楼主的拦截器和过滤器有得一拼
8 楼 LK.Bing 2009-12-11  
这栏截器和过滤器有什么不一样的啊?
7 楼 java.lang.Object 2009-12-11  
用convention插件就可以通过annotation来配拦截器了

相关推荐

    struts2.1完整jar包

    Struts2.1是Apache软件基金会的开源框架Struts的第二个主要版本,它基于MVC(Model-View-Controller)设计模式,为Java Web应用程序提供了一种强大的开发框架。Struts2的核心目标是简化Web应用的开发过程,提高代码...

    struts2.1教程

    - 利用FileUpload拦截器实现文件上传功能。 - 设计Action处理文件存储和访问逻辑。 - 支持大文件上传和断点续传等功能。 #### 四、Struts 2.1 高级特性 - **拦截器**: - 创建自定义拦截器增强框架功能。 - ...

    Struts 2.1 Libraries

    3. **Interceptor(拦截器)**:拦截器是Struts 2中的一个重要概念,它们可以插入到Action调用的流程中,执行预处理或后处理任务,如日志记录、权限检查、事务管理等。 4. **Result**:Result是Action执行后的结果...

    Struts2.1 源码+开发包(项目依赖库)

    Struts2.1是Apache软件基金会的开源框架,主要用于构建基于Java EE的Web应用程序。它在Struts1的基础上进行了重大改进,提供了更强大的MVC(Model-View-Controller)架构支持,增强了动作处理、异常处理、国际化、...

    黑马程序员 struts2.1 视频教程

    18_黑马程序员_struts2.1视频教程_自定义拦截器.rar是关于Struts2的拦截器(Interceptor)机制,拦截器是Struts2的一大亮点,它可以拦截请求,执行预处理或后处理操作。通过自定义拦截器,开发者可以实现如日志记录...

    Struts2.1的jar包

    Struts2.1是Apache软件基金会旗下的Web应用框架Struts的特定版本,它基于Model-View-Controller(MVC)设计模式,旨在提供一个结构化的、可扩展的平台,用于开发Java Web应用程序。Struts2作为Java EE领域的重要组件...

    struts 2.1 jar

    4. **拦截器链**:合理利用Interceptor链可以实现如性能监控、事务管理、权限控制等多种功能。 5. **插件扩展**:Struts 2拥有丰富的插件体系,可以根据需求选择使用,如Tiles插件用于布局管理,Struts2-dojo-...

    Struts2.1.zip

    1. **拦截器(Interceptors)**:Struts2的核心部分之一,拦截器允许开发者定义一系列操作,这些操作在Action调用前后执行。它们可以用来处理如日志、授权、事务管理等通用任务,提高了代码的可复用性和模块化。 2. *...

    struts2.1包

    Struts2.1是一款基于MVC(Model-View-Controller)设计模式的开源Java Web框架,由Apache软件基金会维护。这个“struts2.1包”是该框架的一个旧版本,可能包含了Struts2的核心库和其他相关的依赖库,用于支持开发...

    Struts2.1权威指南光盘源代码第19章

    Struts2.1是Apache软件基金会的一个开源框架,主要用于构建基于Java的企业级Web应用程序。它在Struts1的基础上进行了重大改进,提供了更强大的控制层、更灵活的MVC设计模式实现,以及对现代Web开发技术的更好支持。...

    整合struts2.1和hibernate3.2的JAR包

    4. **配置Struts2**:在WEB-INF下创建struts.xml文件,配置Struts2的核心拦截器栈、Action和结果类型。例如: ```xml &lt;struts&gt; &lt;constant name="struts.enable.DynamicMethodInvocation" value="false"/&gt; ...

    struts2.1jar包

    总结来说,Struts2.1 jar包是Java Web开发中不可或缺的一部分,它提供了强大的MVC架构,帮助开发者构建可维护、可扩展的Web应用。了解并熟练掌握Struts2框架的使用,对于提升开发效率和项目质量有着显著的帮助。

    struts2.1 完整版下载

    使用Struts2.1进行开发时,你需要配置`struts.xml`文件来定义Action、结果和拦截器,然后创建Action类处理业务逻辑,编写视图(如JSP或Freemarker模板)展示数据。同时,还需要确保你的项目正确引入了所有必要的库和...

    传智播客struts2.1视频教程—源代码

    Struts2.1是Apache软件基金会下的一个开源框架,它基于MVC(Model-View-Controller)设计模式,主要用于构建Java Web应用程序。本教程“传智播客struts2.1视频教程—源代码”旨在帮助初学者深入理解并掌握Struts2.1...

    Struts 2.1权威指南基于WebWork核心的MVC开发源代码

    总的来说,"Struts 2.1权威指南基于WebWork核心的MVC开发"涵盖了从基础概念到高级特性的全面内容,包括但不限于Action、拦截器、OGNL、配置文件、结果类型等,是学习和掌握Struts 2.1框架的宝贵资料。通过深入学习并...

    整合Struts2.1+jasperreport

    首先,Struts2.1作为Java Web开发中的主流框架,它的核心在于Action和Interceptor(拦截器)。Action是业务逻辑的载体,Interceptor则是处理请求和响应的关键组件,可以进行权限控制、日志记录等操作。在Struts2.1中...

    struts2.1权威指南 第9章光盘源码

    Struts2.1是Apache软件基金会的开源框架Struts的第二个主要版本,它在Web应用开发领域具有广泛的应用。此“Struts2.1权威指南”第9章的源码光盘提供了深入学习和理解Struts2.1框架的宝贵资源。通过分析和实践这些...

    Struts2.1权威指南光盘源代码第21章

    Struts2.1是Apache软件基金会的开源框架,主要用于构建企业级Java web应用程序。这个"Struts2.1权威指南光盘源代码第21章"的资源很可能包含了一个章节的示例代码,帮助读者深入理解和实践Struts2.1框架的特定功能。 ...

    Struts2.1权威指南光盘源代码第5章

    这个"Struts2.1权威指南光盘源代码第5章"很可能是书籍《Struts2.1权威指南》中第五章的配套源代码,旨在帮助读者深入理解Struts2.1框架的工作原理和实践应用。 在Struts2框架中,第5章通常会涵盖以下几个关键知识点...

    Struts2.1权威指南光盘源代码第3章

    Struts2.1是Apache软件基金会旗下的一个开源框架,它主要应用于Java平台,用于构建企业级Web应用程序。这个"Struts2.1权威指南光盘源代码第3章"提供的内容,显然着重于讲解和实践Struts2.1框架的核心功能和特性。第3...

Global site tag (gtag.js) - Google Analytics