视图和视图解析器
上一讲, 我们学习的是SpringMVC系列五: SpringMVC映射请求数据
现在打开springmvc项目
💞基本介绍
1.在SpirngMVC
中的目标方法最终返回都是一个视图(有各种视图)
2.返回的视图都会由一个视图解析器来处理(视图解析器有很多种)
💞 自定义视图
为什么需要自定义视图
1.在默认情况下, 我们都是返回默认的视图, 然后返回的视图交由SpringMVC
的InternalResourceViewResolver
视图解析器来处理的.
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置属性prefix 和 suffix-->
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
2.在实际开发中, 我们有时需要自定义视图, 这样可以满足更多更复杂的需求.
自定义试图实例-代码实现
1.创建web路径/view.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>自定义视图测试</title>
</head>
<body>
<h2>自定义视图测试</h2>
<a href="?">点击到自定义视图</a>br/><br/>
</body>
</html>
2.创建com.zzw.web.viewresolver.GoodsHandler.java
@RequestMapping("/goods")
@Controller
public class GoodsHandler {
@RequestMapping("/buy")
public String buy() {
System.out.println("buy() 被调用...");
return "?";//待会再填写自定义视图名称
}
}
3.创建comzzw.web.viewresolver.MyView.java
自定义视图类
/**
* 解读
* 1.MyView 继承了AbstractView, 就可以作为一个视图使用
* 2.@Component(value="myView"), 该视图会注入到容器中, 名字/id 是 zzwView
*/
@Component(value = "zzwView")
public class MyView extends AbstractView {
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("进入到自己的视图");
//完成视图渲染
//并且可以确定我们要跳转的页面
}
}
4.创建web路径/WEB-INF/pages/my_view.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>my_view页面</title>
</head>
<body>
<h2>进入到my_view页面</h2>
<p>是从自定义视图来的</p>
</body>
</html>
5.补充MyView
的代码
/**
* 解读
* 1.MyView 继承了AbstractView, 就可以作为一个视图使用
* 2.@Component(value="myView"), 该视图会注入到容器中, 名字/id 是 zzwView
*/
@Component(value = "zzwView")
public class MyView extends AbstractView {
@Override
protected void renderMergedOutputModel(Map<String, Object> model,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("进入到自己的视图");
//完成视图渲染
//并且可以确定我们要跳转的页面[请求转发] /WEB-INF/pages/my_view.jsp
//解读
//1.下面就是进行请求转发到 /WEB-INF/pages/my_view.jsp
//2./WEB-INF/pages/my_view.jsp 会被springmvc解析
// /springmvc/WEB-INF/pages/my_view.jsp
request.getRequestDispatcher("/WEB-INF/pages/my_view.jsp")