struts2.1.*中再实现了一个servlet的方法
学习Struts2也有一段时间了,今天用Servlet写了一个验证码,然后搬到Struts2中,惊奇地发现Servlet无法访问,出现404错误!后来折腾了半天,终于找出原因了。这也算我学习中的一个重大发现吧。写下来给大家分享一下:
在李刚编写的《Struts2权威指南》一书中,他用的是Struts2.0*版本。而我在开发中用的是Struts2.1*版本的构包。其中有很大不同就是,新版本对servlet实现了过滤,而旧版本并未对其进行过滤!
原来我的web.xml定义了一个struts的Filter过滤所有用户请求,如下:
|
<!-- 定义Struts2的FilterDispathcer的Filter --> <!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 --> |
再实现了一个servlet。这样是不能访问到这个Servlet的,因为struts将其拦截了。
为了能够实现servlet,我们可以如下的方式定义struts的Filter:
|
<!-- 定义Struts2的FilterDispathcer的Filter --> <!-- FilterDispatcher用来初始化struts2并且处理.action和.jsp的WEB请求。 --> <filter-mapping> |
只需对过滤规则改一改,我们就能够解决在Strut2中出现的Servlet的404错误.
这让我思索了一个问题:我们的java的包,不断地在更新中,每一次更新也许都会做出很大的改动,我们作为一个程序爱好者,不断地跟上最前沿的技术是必不可少的,但是我们在追赶潮流的时候,不要迷失了方向。要主意每一个细节,追赶潮流是要付出代价的。我就是其中的一个。
所以我们要时刻保持冷静的头脑,当用新的技术的时候,我们不能够死死地陷入旧的编程习惯的死胡同中,寻求更本就不可能出现的错误!而应该去发布新技术的网站去看看他们的最新文档,看看他们的原则,看看他们对哪些地方做出了改动。这样我们才能一路顺风地解决问题。
我今天钻进了两个大的死胡同,一个是Servlet不能方位,另外一个就是Ajax的Json插件两个版本中的很大程度上的不同。实际上对于Struts2.1*版本的Json插件已经与Struts的ActionSupport相兼容了,而低版本的Json插件只是实现了Struts的Action接口。
生活也是这样,我们要活到老,学到老!只有掌握最佳的方法,我们才能更有城府。
struts2.1.*中再实现了一个servlet的方法的更多相关文章
- html中引入调用另一个html的方法
html中引入调用另一个html的方法,尝试了好几种,都列出来: 其中第一种是最好的,其他的方法,可以尝试看看,是不是适合你当前项目 一.div+$("#page1").load( ...
- Markdown 代码块中再内嵌一个行内代码
在 jQuery 1.9 之前(不含1.9):如果传入一个空字符串. null 或 jQuery.parseJSON( jsonString ) ,该函数将返回,而不是抛出一个错误,即使它不是有效的 ...
- Sublime3 中在行尾增加一个分号的方法
1,自己录制一个宏,名称为add comma to end.sublime-macro,宏内容如下: [ { "args": { "extend": false ...
- js判断一个dom中是否包含另一个dom的方法
首先,比较原始(蠢)的方法 function isChildOf(child, parent) { if(child && parent) { let parentNode = chi ...
- Winform中只运行运行一个实例的方法
在Program类的main方法按如下代码编写即可 1 static void Main() 2 { 3 if (Process.GetProcessesByName(Process.GetCurre ...
- 如何开发一个Servlet
1 如何开发一个Servlet 1.1 步骤: 1)编写java类,继承HttpServlet类 2)重新doGet和doPost方法 3)Servlet程序交给tomcat服务器运行!! 3.1 s ...
- Struts2框架中使用Servlet的API示例
1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的 ...
- 在Struts2框架中使用Servlet的API
1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收到,然后保存到三个域对象中,最后再显示到JSP的 ...
- Eclipse创建第一个Servlet(Dynamic Web Project方式)、第一个Web Fragment Project(web容器向jar中寻找class文件)
创建第一个Servlet(Dynamic Web Project方式) 注意:无论是以注解的方式还是xml的方式配置一个servlet,servlet的url-pattern一定要以一个"/ ...
随机推荐
- SQL 2008 清除数据库日志
USE [master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECO ...
- hdu 5124
bc上的题目,很水,有很多方法做吧,题意大概就是给定你票数,然后让你求出票数最多的那个下标...... 之前我用两个for循环分开写,一个是读入,然后是判断,提交就wa,后来网上看了别人的,就是不能分 ...
- jQuery中使用 .html() function在IE8和9中显示不正常源码中多出sizset和sizcache
错误原因:在引入jquery的时候,使用了html function,在IE8和IE9下面有可能会出现不兼容 解决办法:在html头部加一句 <meta http-equiv="X-U ...
- WEB文件上传下载功能
WEB文件上传下载在日常工作中经常用到的功能 这里用到JS库 http://files.cnblogs.com/meilibao/ajaxupload.3.5.js 上传代码段(HTML) <% ...
- Ubuntu11.10打开XDMCP,使用XManager远程管理
ubuntu11.10-desktop-i386.iso缺省安装使用lightdm作为缺省登录器,这里说说开启XDMCP进行远程登录 首先关闭防火墙 sudo ufw disables Ubuntu所 ...
- Java实现断点下载Demo
//1.声明URL String path="http://localhost:8080/day22_DownLoad/file/a.rmvb"; URL url=new URL( ...
- JAVA-2-DATA
import java.util.*; public class Ch0310 { public static void main(String[] args) { // TODO 自动生成的方法存根 ...
- C++采用模板实现栈的方法
今天又看了遍<effective C++>,手动实现了一下条款42中的栈,贴出来当博客的处女贴. 首先栈的声明如下,采用了模板传入类型,而栈的底层采用是个链表. // stack.h // ...
- [转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile
http://blog.csdn.net/stpeace/article/details/39534361 进程间的通信方式有很多种, 上次我们说了最傻瓜的“共享外存/文件”的方法. 那么, 在本文中 ...
- Css溢出隐藏
display: -webkit-box;-webkit-line-clamp: 2; /*多少行数之后显示为省略...*/word-wrap: break-word;word-break: ...