PS:阅读这篇文章之前需要了解Java WEB的相关知识。
经过几天的学习,Struts2算是入门了。关键的知识点也基本了然于胸。其模型可以由下图表示:
那么,什么是Struts2?请参考以下链接:
百度百科:
http://baike.baidu.com/link?url=C1YOKKCuNtkWOFbxgs6eXWujBSn1i_Qhv0cApaWatEjTgyfOao3M-4ahamH-q4K1ti7Wb9FRtZkcdQnQoaY4RmVpXl-Tt2a7Fdoz-vPlmxlrGvCMnXMxS_pGaxaXmZclBSe1Tk-R5GkYe-2nk3aQHq
csdn,赵晓雷的专栏-struts2标签详解:
http://blog.csdn.net/zxl315/article/details/2886456
csdn, haorengoodman的专栏-struts2中各个jar包的作用:
http://blog.csdn.net/haorengoodman/article/details/19821649
csdn,g zx2080205的专栏-struts2的拦截器:
http://blog.csdn.net/gzx2080205/article/details/6332316
csdn , xufaxi的专栏-struts2拦截器简介:
http://blog.csdn.net/xufaxi/article/details/6410144
csdn , (Java)的专栏-struts2校验器类型详解:
http://blog.csdn.net/weixiao21/article/details/7993480
csdn ,Jan的专栏-struts2默认验证器,自定义验证器:
http://blog.csdn.net/yongjian1092/article/details/7354327
csdn ,zhangweikai的专栏-struts2实现国际化:
http://blog.csdn.net/zhangweikai966/article/details/7581384
博客园-朗笑江湖-struts2国际化:
http://www.cnblogs.com/langlang/archive/2010/01/14/1647627.html
好了,参考完以上链接以后,我们对Struts2就有一个总体的框架认识了,也就是最前面所给出来的认知模型。
其实,struts2核心的点就是标签的配置。所以,它属于标签层。
接下来是整个学习过程中最另人费解的404错误提示啦!!(什么是404?请百度之)
404最模糊的提示就是服务器找不到资源。它有很多具体情况,比如链接问题、路径问题、资源不存在等等数不胜数。而我在利用struts2写小型的用户注册管理系统的时候一直提示:
/
经过几天的学习,Struts2算是入门了。关键的知识点也基本了然于胸。其模型可以由下图表示:
百度百科:
http://baike.baidu.com/link?url=C1YOKKCuNtkWOFbxgs6eXWujBSn1i_Qhv0cApaWatEjTgyfOao3M-4ahamH-q4K1ti7Wb9FRtZkcdQnQoaY4RmVpXl-Tt2a7Fdoz-vPlmxlrGvCMnXMxS_pGaxaXmZclBSe1Tk-R5GkYe-2nk3aQHq
csdn,赵晓雷的专栏-struts2标签详解:
http://blog.csdn.net/zxl315/article/details/2886456
csdn, haorengoodman的专栏-struts2中各个jar包的作用:
http://blog.csdn.net/haorengoodman/article/details/19821649
csdn,g zx2080205的专栏-struts2的拦截器:
http://blog.csdn.net/gzx2080205/article/details/6332316
csdn , xufaxi的专栏-struts2拦截器简介:
http://blog.csdn.net/xufaxi/article/details/6410144
csdn , (Java)的专栏-struts2校验器类型详解:
http://blog.csdn.net/weixiao21/article/details/7993480
csdn ,Jan的专栏-struts2默认验证器,自定义验证器:
http://blog.csdn.net/yongjian1092/article/details/7354327
csdn ,zhangweikai的专栏-struts2实现国际化:
http://blog.csdn.net/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> 里面,而且包里面还配置了默认全局自定义的拦截器
<!-- 定义全局默认拦截器 -->
/
为什么呢?思前想后以及在网上不断的翻阅资料,半天多的时间才最终发现了问题:
我设置的链接 <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)。这就是症结所在了。
..........
(特别注意)。
该拦截器里面包含了一个对用户的登录操作,也就是登录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常见错误总结:
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定义。
解决方法步骤:
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
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.csdn.net/u010683048