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>
然后启动服务器 运行项目 进行调试