spring mvc 从 controller 调到静态页面 , html

来源:互联网 发布:ubuntu 16.04设置中文 编辑:程序博客网 时间:2024/04/29 01:27

在用springmvc 开发web的时候, 常常会有 从 controller里调到静态页面的需求 。 比如根据请求参数, 然后调到不同的静态页面 

配置如下:

在 server-servlet.xml 配置:

<span style="white-space:pre"></span><mvc:annotation-driven /><mvc:resources location="/html" mapping="/**/*.html" />

具体controller写法如下:

@RequestMapping("/someurl")    public String someurl() {        // 服务端跳转, 推荐使用        //UrlBasedViewResolver.FORWARD_URL_PREFIX 就是字符串 “forward:"        return UrlBasedViewResolver.FORWARD_URL_PREFIX + "/html/someurl.html";    }    @RequestMapping("/someurl2")    public String someurl2() {        // 重定向        // UrlBasedViewResolver.REDIRECT_URL_PREFIX 就是字符串 ”redirect"        return UrlBasedViewResolver.REDIRECT_URL_PREFIX + "/html/someurl.html";    }



注意: 由于 forward/redirect  是由UrlBasedViewResolver 处理的,server-servler.xml 里面必须存在一个 UrlBasedViewResolver或者其子类, 而

InternalResourceViewResolver 是它的子类, 所以如果配置如下, 就是完全ok的

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/" /><property name="suffix" value=".jsp" /></bean>


原理: UrlBasedViewResolver 内部调用了RequestDispatcher.forward(). 这是servlet的方法, 调用过后, spring的servlet 拦截住这个请求, 由于配置了

<mvc:resources location="/html" mapping="/**/*.html" />
所以直接去 /html 目录下寻找对应静态文件

0 0
原创粉丝点击