springmvc之自定义视图
在springmvc.xml中配置
<!-- 配置视图 BeanNameViewResolver 解析器: 使用视图的名字来解析视图 --> <!-- 通过 order 属性来定义视图解析器的优先级, order 值越小优先级越高 --> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> <property name="order" value="100"></property> </bean>
常用的视图解析器是:
<!-- 配置视图解析器:如何把handler返回值解析为实际的物理视图 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> </bean>
一般而言,这两种视图解析器都存在,所以我们要将自定义视图的优先级设置为低。
HelloView.java 自定义视图需要继承View
package com.gong.springmvc.views; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; import org.springframework.web.servlet.View; @Component public class HelloView implements View{ @Override public String getContentType() { return "text/html"; } @Override public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception { response.getWriter().print("hello view, time: " + new Date()); } }
SpringmvcTest.java
@RequestMapping("/springmvc") @Controller public class SpringmvcTest { private static final String SUCCESS = "success"; @RequestMapping("/testView") public String testView(){ System.out.println("testView"); return "helloView"; } }
返回的值是我们自定义视图的名字:首字母小写。
index.jsp
<a href="springmvc/testView">Test View</a>
启动服务器之后:
点击:
证明自定义的视图解析器是成功的。当然我们也可以定义解析向excel等视图。