Struts2学习总结

PS:阅读这篇文章之前需要了解Java WEB的相关知识。
    经过几天的学习,Struts2算是入门了。关键的知识点也基本了然于胸。其模型可以由下图表示:

    那么,什么是Struts2?请参考以下链接:
百度百科:
http://baike.baidu.com/link?url=C1YOKKCuNtkWOFbxgs6eXWujBSn1i_Qhv0cApaWatEjTgyfOao3M-4ahamH-q4K1ti7Wb9FRtZkcdQnQoaY4RmVpXl-Tt2a7Fdoz-vPlmxlrGvCMnXMxS_pGaxaXmZclBSe1Tk-R5GkYe-2nk3aQHq
csdn,赵晓雷的专栏-struts2标签详解:
http://blog.youkuaiyun.com/zxl315/article/details/2886456 
csdn,haorengoodman的专栏-struts2中各个jar包的作用: 
http://blog.youkuaiyun.com/haorengoodman/article/details/19821649 
csdn,g
zx2080205的专栏-struts2的拦截器:
http://blog.youkuaiyun.com/gzx2080205/article/details/6332316 
csdn
xufaxi的专栏-struts2拦截器简介: 
http://blog.youkuaiyun.com/xufaxi/article/details/6410144 
csdn
(Java)的专栏-struts2校验器类型详解: 
http://blog.youkuaiyun.com/weixiao21/article/details/7993480 
csdn
,Jan的专栏-struts2默认验证器,自定义验证器:
http://blog.youkuaiyun.com/yongjian1092/article/details/7354327 
 
csdn,zhangweikai的专栏-struts2实现国际化:
 
http://blog.youkuaiyun.com/zhangweikai966/article/details/7581384
博客园-朗笑江湖-struts2国际化:
http://www.cnblogs.com/langlang/archive/2010/01/14/1647627.html 
 

好了,参考完以上链接以后,我们对Struts2就有一个总体的框架认识了,也就是最前面所给出来的认知模型。
其实,struts2核心的点就是标签的配置。所以,它属于标签层。
接下来是整个学习过程中最另人费解的404错误提示啦!!(什么是404?请百度之)

 404最模糊的提示就是服务器找不到资源。它有很多具体情况,比如链接问题、路径问题、资源不存在等等数不胜数。而我在利用struts2写小型的用户注册管理系统的时候一直提示:
/////////////////////////////////
no result defined for action ***Action and result login
///////////////////////////////// 
为什么呢?思前想后以及在网上不断的翻阅资料,半天多的时间才最终发现了问题:
    我设置的链接 <s:a href="exit.action">退出系统</s:a>  对应的  <action name="exit" class="..." method="exit">...</action>  处于第二个包  <package name="users-authority" extends="struts-default">...</package>  里面,而且包里面还配置了默认全局自定义的拦截器   
               ..........
                 <!-- 拦截器 -->
<interceptors>
<!-- 自定义的拦截器 -->
<interceptor name="authority" class="com.huizhi.util.AuthorityInterceptor"/>
.........
<!-- 定义包含登录检查的拦截器 -->
<interceptor-stack name="mydefault"> <!-- 配置内建默认拦截器 -->
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="authority"/>
</interceptor-stack>
.........
</interceptors> 
                
<!-- 定义全局默认拦截器 -->
                <default-interceptor-ref name="mydefault"/>
                .......... 

     (特别注意)。
该拦截器里面包含了一个对用户的登录操作,也就是登录Action,执行一次拦截验证 AuthorityInterceptor类,只要不通过就返回Action.LOGIN。当时,我只配置了两个操作的拦截验证,用户登录Action(LoginAction)以及管理员登录Action(AdminLoginAction)。这就是症结所在了。
    因此,每当点击“退出系统”这个链接的时候,struts2框架定位到相应的Action,也就是exit.action。此时,就在此时定义的默认全局自定义拦截器自动拦截这个点击操作,转入到自定义拦截器类的方法体当中执行验证操作,这就悲剧了!!呜呼, !!!总算有收获了!!!!!

而解决问题的思路来源于下面两个链接:
新浪博客-心碎逍遥-struts2常见错误总结:
http://blog.sina.com.cn/s/blog_4b5bc0110100y9fx.html
 博客园-Coolhwm代码空间-struts2完全捕获404错误的方法:
http://www.cnblogs.com/coolhwm/archive/2011/11/19/2255504.html 
 
    对于这个错误,在提交数据时经常碰到。自定义的struts2 intercept(拦截器)发挥了作用,当POJO类型与输入的类型不同时,intercept类会中止拦截,并返回对应的视图。详细的错误可使用<s:fielderror/>或者<s:debug/>标签来获取。
解决方法步骤:
1、增加resut login定义。
        <result name="login">/***.jsp</result>
2、在 ***.jsp 视图中添加<s:fielderror/>或者<s:debug/>标签(放置在<body>...</body>标签中)
3、执行程序,到相应的页面中查看[DEBUG]输出信息!! 

    至此,struts2算是通过了。今晚也刚好是2014年12月31日过度到2015年1月1日的跨年之夜。
特此记录所思所感所想!!!

作者:wei
时间:2015年1月1日01:02:38 
转载请注明出处:http://blog.youkuaiyun.com/u010683048

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值