锁定老帖子 主题:Struts2.1拦截器总结
精华帖 (0) :: 良好帖 (1) :: 新手帖 (7) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-09
今天没事干看了看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" /> <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,简单的登录的拦截器就搞定了! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-10
楼主何不自己实现一个拦截器,理解更深刻
|
|
返回顶楼 | |
发表时间:2009-12-10
是的,感觉struts2的灵魂就是拦截器,其实自己实现一个也很简单,感觉要切实理解它流程,才能很灵活的搭配使用。
|
|
返回顶楼 | |
发表时间:2009-12-10
asialee 写道 是的,感觉struts2的灵魂就是拦截器,其实自己实现一个也很简单,感觉要切实理解它流程,才能很灵活的搭配使用。
这个。。太抬举struts2的拦截器了吧。struts2的拦截器本身就是个AOP的实现。 |
|
返回顶楼 | |
发表时间:2009-12-10
都是xwork做的
|
|
返回顶楼 | |
发表时间:2009-12-10
呵呵,不过确实方便了不少,简单的实现以前复杂才能实现的东西就算好东西,拦截器这东西主要还是应用在实际中在实际分析如何配置了,理解了其实很简单,呵呵……
|
|
返回顶楼 | |
发表时间:2009-12-10
怎么通过annotation来配置拦截器?好像这方面的资料很少
|
|
返回顶楼 | |
发表时间:2009-12-11
用convention插件就可以通过annotation来配拦截器了
|
|
返回顶楼 | |
发表时间:2009-12-11
这栏截器和过滤器有什么不一样的啊?
|
|
返回顶楼 | |
发表时间:2009-12-11
楼主的拦截器和过滤器有得一拼
|
|
返回顶楼 | |