struts2: servlet 转发到 action的错误,404.

时间:2022-01-02 17:37:35
在servlet中,有这样一段代码,实行跳转:


              String action="/cartypeInfo/queryinfo_queryCarInfo.do";
               RequestDispatcher rd = request.getRequestDispatcher(action);
rd.forward(request, response);



总是报404错误,但是我直接请求这个action,或者在地址栏输入这个action地址都是没有错的。

如果我请求String action="/test.jsp";  也是没有错的。这是什么原因呢?


网上找了很久,有的也出现这种问题了,但是都没有得到解决。


是不是struts2就不支持转发action呢?郁闷中。。

17 个解决方案

#1


还有就是,
response.sendRedirect(request.getContextPath()+action);
   也是没有错的。

#2


cartypeInfo/queryinfo_queryCarInfo.do

去掉前面的"/"试试

#3




要不就直接这样写 String action = "queryinfo_queryCarInfo.do    ";

#4


都不行的。我觉得不是路径的问题。

#5


没见过这样写的,学习学习

#6


404 肯定是路径问题啊

#7


struts 咋跳转的
要不就这样写

 request.getRequestDispatcher("/cartypeInfo/queryinfo_queryCarInfo.do").forward(request, response);

试试

#8


用转发试试..

#9


解决了。哎,好像每次在csdn发帖子,到最后都是自己解决的。。

#10


如何解决的啊。。。

#11


还是用的
RequestDispatcher rd = request.getRequestDispatcher(action);
rd.forward(request, response);
是我struts2的FilterDispatcher配置错了。它会自动拦截action的路径。

#12


能不能把你的web.xml贴出来看看,我想看看你的FilterDispatcher如何配置的~我遇到类似问题

#13


能不能把你的web.xml贴出来看看,我想看看你的FilterDispatcher如何配置的~我也遇到类似问题

#14


b理解中

#15


struts2中RequestDispatcher问题



web.xml 2.4版本里,默认的filter只拦截request。 
如果使用request.getRequestDispatcher("xx").forward(request,response),属于服务器内部forward,不会被拦截器拦截,所以你需要为filter配置拦截forward才行。 

struts1用的是servlet,forward也会起作用。struts2里的filter的确是个大问题哟。
用filter配置拦截fowward要写成


    <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>
        <dispatcher>REQUEST</dispatcher>
     <dispatcher>FORWARD</dispatcher>
   </filter-mapping>

#16


今天偶遇此种情况,非常感谢各位给出的解决方案

#17


我也遇到这样的问题,写相对路径就好了哦

#1


还有就是,
response.sendRedirect(request.getContextPath()+action);
   也是没有错的。

#2


cartypeInfo/queryinfo_queryCarInfo.do

去掉前面的"/"试试

#3




要不就直接这样写 String action = "queryinfo_queryCarInfo.do    ";

#4


都不行的。我觉得不是路径的问题。

#5


没见过这样写的,学习学习

#6


404 肯定是路径问题啊

#7


struts 咋跳转的
要不就这样写

 request.getRequestDispatcher("/cartypeInfo/queryinfo_queryCarInfo.do").forward(request, response);

试试

#8


用转发试试..

#9


解决了。哎,好像每次在csdn发帖子,到最后都是自己解决的。。

#10


如何解决的啊。。。

#11


还是用的
RequestDispatcher rd = request.getRequestDispatcher(action);
rd.forward(request, response);
是我struts2的FilterDispatcher配置错了。它会自动拦截action的路径。

#12


能不能把你的web.xml贴出来看看,我想看看你的FilterDispatcher如何配置的~我遇到类似问题

#13


能不能把你的web.xml贴出来看看,我想看看你的FilterDispatcher如何配置的~我也遇到类似问题

#14


b理解中

#15


struts2中RequestDispatcher问题



web.xml 2.4版本里,默认的filter只拦截request。 
如果使用request.getRequestDispatcher("xx").forward(request,response),属于服务器内部forward,不会被拦截器拦截,所以你需要为filter配置拦截forward才行。 

struts1用的是servlet,forward也会起作用。struts2里的filter的确是个大问题哟。
用filter配置拦截fowward要写成


    <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>
        <dispatcher>REQUEST</dispatcher>
     <dispatcher>FORWARD</dispatcher>
   </filter-mapping>

#16


今天偶遇此种情况,非常感谢各位给出的解决方案

#17


我也遇到这样的问题,写相对路径就好了哦