spring mvc视图与视图解析器

spring提供视图解析器来解析ModelAndView到特定的视图上
下面介绍使用FreeMaker作为视图
首先第一步建立后端控制器 FreeMakerController.java

@SuppressWarnings("deprecation")
public class FreeMarkerController extends AbstractCommandController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest reqeust, HttpServletResponse throws Exception {
ModelAndView mav = new ModelAndView("base");
mav.addObject("username", "张三");
mav.addObject("time", new Date().toString());
return mav;
}
@Override
protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object BindException errors) throws Exception {
return null;
}
}

web.xml配置和以前一样
在spmvc-servlet.xml中添加如下配置

<!-- freemarker相关的配置 -->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="defaultEncoding" value="UTF-8" />
<property name="templateLoaderPath" value="/WEB-INF/" />
</bean>
<bean id="fmViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="contentType" value="text/html;charset=utf-8" />
<property name="cache" value="true" />
<property name="prefix" value="" />
<property name="suffix" value=".jsp" />
</bean>
<bean name="/me.do" class="FreeMarkerController.class"></bean>

接下来建立/WEB-INF/base.jsp文件
在文件下添加如下代码

<body>
姓名:${username}
当前时间:${time}
</body>

然后启动服务器 输入…/me.do 完成调试
视图解析链:在spmvc-servlet.xml中配备多个视图解析器
首先 创建后端控制器

public class SelectViewController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) String param = request.getParameter("op");
ModelAndView mav = new ModelAndView("sv");
if ("me".equals(param)) {
mav = new ModelAndView("forward:me.do");
return mav;
} 
} else {
return mav;
}
}
}

简单介绍一下 若是请求参数op为aa 那么就调用aa.do 若是请求参数为bb 那么就调用bb.do 否则调用cc.do 当使用forward跳转的时候 用法是直接forward:路径
当使用重定向的时候 用法有两种 第一种是 直接 redirect:视图名 第二种是 new RedirectView(“视图名”)

接下来 在spmvc-servlet.xml中添加如下配置:

<bean id="irViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<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="/me.do">FreeMarkerController</prop>

<prop key="/sv.do">svControl</prop>
</props>
</property>
</bean>
<bean name="svControl" class="SelectViewController"></bean>

接下来在index.jsp页面添加如下代码

<body>
<a href="<%=request.getContextPath()%>/sv.do?op=me">freeMarker页面</a>
<a href="<%=request.getContextPath()%>/sv.do">sv.jsp页面</a>
</body>

接下来创建
sv.jsp

<body>
<a href="<%=request.getContextPath()%>/sv.do?op=me">freeMarker页面</a>
<a href="<%=request.getContextPath()%>/sv.do">sv.jsp页面</a>
</body>

然后启动服务器 运行项目 进行调试

上一篇:开始学SpringMVC之Request方式


下一篇:Spring Boot + Hibernate 项目搭建和登录注册例子