springmvc视图及视图解析器

springmvc视图及视图解析器

处理模型数据

ModelAndView

既包含视图信息,也包含模型数据信息。

Map Model

通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据。

MVC Handler 方法可以接受ServletAPI类型的参数

HttpServletRequest

HttpServletResponse

HttpSession

java.security.Principal

Locale

InputStream

OutputStream

Reader

Writer

视图解析器

请求处理方法执行完成后,最终返回一个 ModelAndView对象,ModelAndView包含了逻辑名和模型对象的视图。

对于返回 String,View 或 ModeMap 等类型的处理方法,Spring MVC 也会在内部将它们装配成一个ModelAndView 对象。

视图对象由视图解析器负责实例化。由于视图是无状态的,所以他们不会有线程安全的问题

常用视图解析器

程序员可以选择一种视图解析器或混用多种视图解析器。

每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性,可以通过 order 属性指定解析器的优先顺序,order 越小优先级越高。

InternalResourceViewResolver

若项目中使用了 JSTL,则 SpringMVC 会自动把视图由InternalResourceView 转为 JstlView。

若使用 JSTL 的 fmt 标签则需要在 SpringMVC 的配置文件中配置国际化资源文件。

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    <property name="prefix" value="/WEB-INF/views/"></property>

    <property name="suffix" value=".jsp"></property>

</bean>

若希望直接响应通过 SpringMVC 渲染的页面,可以使用 mvc:view-controller 标签实现。

<mvc:view-controller path="/testMvcViewController" view-name="success" />

重定向

如果返回的字符串中带 forward: 或 redirect: 前缀时,SpringMVC 会对他们进行特殊处理:将 forward: 和redirect: 当成指示符,其后的字符串作为 URL 来处理。

 

静态资源

在 SpringMVC 的配置文件中配置 <mvc:default-servlet-handler/> 的方式解决静态资源的问题。

<mvc:default-servlet-handler/> 将在 SpringMVC 上下文中定义一个DefaultServletHttpRequestHandler,它会对进入 DispatcherServlet 的请求进行筛查,如果发现是没有经过映射的请求,就将该请求交由 WEB 应用服务器默认的 Servlet 处理,如果不是静态资源的请求,才由DispatcherServlet 继续处理

视图

常见视图

可以配置一种或多种解析策略,并指定他们之间的先后顺序。每一种映射策略对应一个具体

的视图解析器实现类。

自定义视图

@Component("helloView1")

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());

}

}
@RequestMapping("/testView")

public String testView(User user){

System.out.println("testView");

return "helloView1";

}

猜你喜欢

转载自blog.csdn.net/weixin_44416039/article/details/86320396