最近犯了迷糊,写了一个servlet urlmapping配置成/*,如果是访问jsp,则直接转发这个请求,但是又会被这个servlet拦截到,因此陷入了死循环,看了一个spring mvc ,如果controller使用redirect的方式,最后也会使用response.sendredirect,这样为什么没有被spring mvc拦截到,也是/*的匹配方式
拦截的是请求request,你返回响应response了,自然不拦截。这样容易理解,与正确的原理还是有差距的。######重定向之后,流览器会重新去请求你返回的地址吧?怎么不会被拦截呢?######
web.xml
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>######
springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" default-autowire="byName"> <!-- SpringMVC相关Bean配置 --> <!-- View Resolver --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/" /> <property name="suffix" value=".jsp" /> </bean> <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/hello.do">c</prop> </props> </property> </bean> <bean id="c" class="test.TestController" /> </beans>
test.TestController
public class TestController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("redirect:/1.jsp"); } }######
启动服务器之后,输入hello.do,流览器发生跳转,变成1.jsp,404了.
后台输出
WARNING: No mapping found for HTTP request with URI [/1.jsp] in DispatcherServlet with name 'springmvc'
也就是说,跳转之后又被拦截,但是无法处理这个请求.
还请各位示下.
######把你的1.jsp放到 /WEB-INF/ 下面,改成 return new ModelAndView("redirect:1.jsp");######回复 @java9 : 路径看下。。。。######恩.已经放了.改成你说的这样,结果还是404######你好,你自己写得 servlet urlmapping @java9 问题解决了吗
######你去掉.jsp吧
######
我也遇到这个问题,在模仿spring mvc的前端控制器,结果也是拦截所有请求,就算是重新forward,还是会被拦截,LZ有解决吗?@java9
######把servlet 的映射改成 / ,不要后面的* 号。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。