摄影网站建设的论文,如何做贴吧类网站多钱,在建设官网的公司做运营,做外贸生意在哪个网站SpringMVC–视图和视图解析器
基本介绍 在springMVC 中的目标方法最终返回都是一个视图(有各种视图)。 返回的视图都会由一个视图解析器来处理(视图解析器有很多种)。
自定义视图
为什么需要自定义视图
在默认情况下#xff0c;我们都是返回默认的视图, 然后这个返回…SpringMVC–视图和视图解析器
基本介绍 在springMVC 中的目标方法最终返回都是一个视图(有各种视图)。 返回的视图都会由一个视图解析器来处理(视图解析器有很多种)。
自定义视图
为什么需要自定义视图
在默认情况下我们都是返回默认的视图, 然后这个返回的视图交由SpringMVC 的InternalResourceViewResolver 视图处理器来处理的。
在实际开发中我们有时需要自定义视图,这样可以满足更多更复杂的需求。
自定义视图实例-代码实现
配置springDispatcherServlet-servlet.xml , 增加自定义视图解析器
!--1. 配置可以解析自定义的视图的解析器2. BeanNameViewResolver 这个就是可以解析自定义视图的解析器3. nameorder 表示给这个解析器设置优先级, 默认优先级很低值Integer.MAX_VALUE4. 一般来说明我们自己的视图解析优先级高Order 值越小优先级越高
--
bean classorg.springframework.web.servlet.view.BeanNameViewResolverproperty nameorder value99/property
/bean创建springmvc\src\com\web\viewresolver\MyView.java -自定义视图类
/*** 1. MyView继承了AbstractView, 就可以作为一个视图使用* 2. Component(value myView),该视图会注入到容器中, 名字/id是 myView*/
Component(value myView)
public class MyView extends AbstractView {Overrideprotected void renderMergedOutputModel(MapString, Object model,HttpServletRequest request,HttpServletResponse response) throws Exception {//完成视图渲染//并且可以确定我们要跳转的页面 [请求转发] /WEB-INF/pages/my_view.jspSystem.out.println(进入到自己的视图..);//1. 下面就是进行请求转发到 /WEB-INF/pages/my_view.jsp//2. /WEB-INF/pages/my_view.jsp 会被springmvc解析 /springmvc/WEB-INF/pages/my_view.jsprequest.getRequestDispatcher(/WEB-INF/pages/my_view.jsp) .forward(request, response);}
}创建springmvc\src\com\web\viewresolver\GoodsHandler.java
RequestMapping(/goods)
Controller
public class GoodsHandler {RequestMapping(value /buy)public String buy() {System.out.println(------buy()-----);return myView;}
}创建springmvc\web\view.jsp 和/WEB-INF/pages/my_view.jsp
% page contentTypetext/html;charsetUTF-8 languagejava %
htmlheadtitleview/title/headbodyh2测试自定义视图/h2a hrefgoods/buy测试自定义视图/abr//body
/html% page contentTypetext/html;charsetUTF-8 languagejava %
htmlheadtitleTitle/title/headbodyh1从自己的视图过来的/h1hr/welcome! /body
/html自定义视图工作流程小结
自定义视图-小结 自定义视图: 创建一个View 的bean, 该bean 需要继承自AbstractView, 并实现renderMergedOutputModel 方法。 并把自定义View 加入到IOC 容器中。 自定义视图的视图处理器使用BeanNameViewResolver 这个视图处理器也需要配置到ioc 容器。 BeanNameViewResolver 的调用优先级需要设置一下设置order 比Integer.MAX_VAL小的值
以确保其在InternalResourceViewResolver 之前被调用。
自定义视图-工作流程 SpringMVC 调用目标方法, 返回自定义View 在IOC 容器中的id。 SpringMVC 调用BeanNameViewResolver 解析视图: 从IOC 容器中获取返回id 值对应的bean, 即自定义的View 的对象。 SpringMVC 调用自定义视图的renderMergedOutputModel 方法渲染视图。 如果在SpringMVC 调用目标方法, 返回自定义View 在IOC 容器中的id不存在 则仍然按照默认的视图处理器机制处理。
目标方法直接指定转发或重定向
使用实例
目标方法中指定转发或者重定向。 默认返回的方式是请求转发然后用视图处理器进行处理比如在目标方法中这样写: PostMapping(value /buy)public String buy() {System.out.println(购买商品~);return success;}也可以在目标方法直接指定重定向或转发的url 地址 如果指定重定向不能定向到/WEB-INF 目录中
应用实例-代码实现
修改GoodsHandler.java, 增加方法order()
// 在目标方法直接指定重定向请求转发
RequestMapping(value /order)
public String order() {System.out.println(order());//这里直接指定转发到哪个页面//return forward:/WEB-INF/pages/my_view.jsp;//重定向, 如果是重定向就不能重定向到/WEB-INF 目录中return redirect:/login.jsp;
}修改view.jsp
h2测试自定义视图/h2
a hrefgoods/buy测试自定义视图/abr/
a hrefgoods/order测试目标方法直接指定重定向请求转发/abr/