最近在做项目开发过程中犯了一个很低级的错误,在这里列举出来,供大家参考借鉴:我希望通过Url请求一个Action,最终通过服务器的处理能得到一个Json串,所以我在Url中体现这一特点,将action的扩展名写为xxaction.json,在web.xml 中将struts2过滤设置成了全部拦截,代码如下:
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
最后在采用这种方式访问action的时候,页面就抛出404错误,找不到服务器资源。朋友看了后,使用.action作为Actin的扩展名,就正常访问了。
原因很简单:当struts2的"url-pattern"设置为"/*"时,此时Struts2的扩展名就默认为.action,所以使用.json这个扩展名就会访问不到。如果任然坚持使用.json这个扩展名,有三种发放来更改Struts2 Actin的扩展名。
方法一:
配置struts.xml
文件内容:
<struts> <constant name="struts.action.extension" value="json" /> //注意这里 <package name="default" extends="struts-default" namespace="/"> <action name="helloword" class="com.test.HelloWord"> <result name="success">/test/helloWord.jsp</result> </action> </package> </struts>
方法二:
在struts.properties
文件中加入一行配置信息:struts.action.extension=json
方法三:
在web.xml文件中给filter加上init-param属性,代码如下所示
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> <init-param> <param-name>struts.action.extension</param-name> <param-value>json</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.json</url-pattern> </filter-mapping>
注意:
以上所有方法,需要注意的是action的扩展名更改了之后,<url-pattern>*.json</url-pattern>,此处的配置要么是"/*",要么与更改之后的 扩展名一致。若配置不一致,例如配置为"*.html",当访问时的扩展名为html时,能通过Struts2的过滤,但是会报404错误;当访问时扩展名为json时,Struts2的过滤都不能通过。
分享到:
相关推荐
该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理.如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开. struts.serve.static 该属性设置是否...
该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理。 如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。 --> <constant name="...
从struts2.1版本开始,Convention Plugin作为替换替换Codebehind Plugin来实现Struts2的零配置。• 包命名习惯来指定Action位置• 命名习惯制定结果(支持JSP,FreeMarker等)路径• 类名到URL的约定转换• 包名...
4个xml文件(applicationContext-dao.xml(dao注入配置),applicationContext-service.xml(service注入配置),action-servlet.xml(action注入配置),struts-{自定义的存放包名}.xml(struts2的action配置文件)) ...
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...
答:Struts1和Struts2是两个完全不同的框架,Struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的所有请求。Struts2以核心控制器FilterDispatcher为基础,包含了框架内部的控制流程和处理机制。 ...
-- 更改struts2请求Action的后缀名,默认为action。若想去掉后缀,设为","即可 --> <constant name="struts.action.extension" value=","/> <!-- 当配置文件修改后,系统自动加载该文件。开发阶段建议打开此功能...
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...
框架将各个零散的框架(struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)搭建好,并内置一个代码生成器,辅助项目开发,可以生成java的hibernat model,dao,manager,struts+struts2 action类,可以生成jsp...
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而...
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而...
NetBeans Struts 2 插件(http://nbstruts2support.dev.java.net)很长时间没有更新了,我对原插件进行了少量修改,并在 NetBeans 6.7 上测试通过,其中修改包括:1.包含了最新的 Struts 2.1.6 库文件。2.更新至...
["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as x> ${x_index + 1}.${x}, 星期四"><#break></#if> <p>We have these animals: <tr><th>Name<th>Price <tr><td>${...