视图解析器 -- 去解析一个视图View,所有的view最终都会被解析成一个字符串给输出到页面。ViewResolver就是把这个view解析成以上的字符串。
试图View -- 就是上面说到的符合一定语法的一个页面。
试图解析器的种类类有很多,这里挑选了一些常用的如下:
1. 自定义ViewResolver -- BeanNameViewResolver
Controller 文件编写:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
public class RequestMappingControl {
@RequestMapping("/hello.do1")
public ModelAndView helloWorld(HttpServletRequest request, HttpServletResponse response){
ModelAndView mv = new ModelAndView("firstView");
mv.addObject("name","My View !");
return mv;
}
}
自定义View:
package com.allen.spring;
import org.springframework.web.servlet.View;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
public class MyView implements View {
@Override
public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
String parameter = (String) model.get("name");
response.getWriter().print(" It's my first viewResolver , hi " + parameter);
}
}
spring 配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="com.allen.spring.RequestMappingControl"/>
<bean name="firstView" class="com.allen.spring.MyView"/>
<bean name="myResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
</beans>
执行结果:
2. 内部资源解析器 -- InternalResourceViewResolver
Controller 文件内容:
package com.allen.spring;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
public class RequestMappingControl {
@RequestMapping("/hello.do")
public ModelAndView helloWorld1(HttpServletRequest request, HttpServletResponse response){
ModelAndView mv = new ModelAndView("user");
mv.addObject("name","RequestMappingControl");
return mv;
}
}
user.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1> Hello ${name} </h1>
</body>
</html>
spring 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="com.allen.spring.RequestMappingControl"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
<property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/>
</bean>
</beans>
执行结果: