访问Struts2的Action路径问题
我在struts.xml中配置了一个Action,名叫news启动Tomcat,在地址栏中输入:http://localhost:8080/GraPro/news.act...
我在struts.xml中配置了一个Action,名叫news
启动Tomcat,在地址栏中输入:
http://localhost:8080/GraPro/news.action能正确访问,GraPro是我项目的名字,我现在要实现这样一个功能,在WebRoot下有一个index.jsp,里面就一句话:<jsp:forward page="news.action"/>
目的是当用户访问的时候跳转到news.action,可是问题来了,报404错误,找不到news.action,后来我着改成了/news.action、/GraPro/news.action等,都不行,请问Struts2的路径是怎么回事?我改了N多回也搞不定,请教高手,谢谢!
改成了<%response.sendRedirct("news.action");%>就正确了,为什么<jsp:forward page="news.action"/>不行? 展开
启动Tomcat,在地址栏中输入:
http://localhost:8080/GraPro/news.action能正确访问,GraPro是我项目的名字,我现在要实现这样一个功能,在WebRoot下有一个index.jsp,里面就一句话:<jsp:forward page="news.action"/>
目的是当用户访问的时候跳转到news.action,可是问题来了,报404错误,找不到news.action,后来我着改成了/news.action、/GraPro/news.action等,都不行,请问Struts2的路径是怎么回事?我改了N多回也搞不定,请教高手,谢谢!
改成了<%response.sendRedirct("news.action");%>就正确了,为什么<jsp:forward page="news.action"/>不行? 展开
2个回答
展开全部
一般来说,只要web.xml中配置正确的映射路径,struts.xml能够实例化action就不会出现404错误,可能是web.xml中的filter-mapping出现问题
<filter>
<filter-name>action</filter-name>
<filter- class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>action</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
你把<url-pattern>/*</url-pattern>的内容改动后调试看看,good luck!
----------------------------
Struts2的路径和struts1的一致,/ 表示web应用更目录(就是GraPro目录),在struts2中FilterDispatcher就是根据你在web.xml filter-mapping中配置的路径去映射你的请求路径(/news.action),
如果匹配,就加载struts.xml中定义的actionMapping,然后转交action处理请求
你可以参考:http://www.blogjava.net/max/archive/2006/10/10/74353.html的说明吧
---------------------
因为response.sendRedirct("news.action")是采用浏览器重新定位的方法去请求的,相当于你在地址栏直接输http://localhost:8080/GraPro/news.action
而jsp:forward 是将request和response作为参数传递请求,它会读取web根目录+action path 作为请求URL
<filter>
<filter-name>action</filter-name>
<filter- class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>action</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
你把<url-pattern>/*</url-pattern>的内容改动后调试看看,good luck!
----------------------------
Struts2的路径和struts1的一致,/ 表示web应用更目录(就是GraPro目录),在struts2中FilterDispatcher就是根据你在web.xml filter-mapping中配置的路径去映射你的请求路径(/news.action),
如果匹配,就加载struts.xml中定义的actionMapping,然后转交action处理请求
你可以参考:http://www.blogjava.net/max/archive/2006/10/10/74353.html的说明吧
---------------------
因为response.sendRedirct("news.action")是采用浏览器重新定位的方法去请求的,相当于你在地址栏直接输http://localhost:8080/GraPro/news.action
而jsp:forward 是将request和response作为参数传递请求,它会读取web根目录+action path 作为请求URL
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询