开发者社区> 问答> 正文

servlet 拦截所有请求之后如何做分发 403.10 禁止访问:配置无效 

最近犯了迷糊,写了一个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>

展开
收起
kun坤 2020-05-27 14:01:02 658 0
1 条回答
写回答
取消 提交回答
  • 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 的映射改成 / ,不要后面的* 号。

    2020-05-27 17:33:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载