《SpringMVC笔记》由会员分享,可在线阅读,更多相关《SpringMVC笔记(12页珍藏版)》请在金锄头文库上搜索。
1、Spring MVCSpring框架提供了构建web应用程序的全功能的MVC模块。使用Spring可插入MVC框架,可以选择使用内置的Spring Web框架还是Struts这样的web框架。通过策略接口,Spring框架是高度可配置的,而且包含多种视图技术。例如 JavaServer Pages(JSP技术)、Velcoty、Tiles、iText等。、Spring MVC 主要解决的问题有1. 将Web页面中输入的元素封装为一个(请求)数据对象;2. 根据请求的不同,调用相应的逻辑处理单元,并将(请求)的对象作为参数注入;3. 逻辑处理单元完成处理后,返回一个结果数据对象;4. 将结果数据
2、对像中的数据与预先设计的表现层相结合并展现给用户。前段控制器是DispatcherServlet,应用控制器其实拆分为处理器映射器Handler Mapping进行处理器管理和视图解析器View Resolver进行视图管理;页面控制器/动作/处理器是Controller接口(只包含ModelAndViewhandleRequest(request,response)方法)的实现;支持本地化(Locale)解析、主题(Theme)解析及文件上传下载等。Spring MVC处理请求流程:DispatcherServlet在web.xml中的配置testorg.springframework.we
3、b.servlet. DispatcherServlet1test*.do load-on-startup:表示启动容器时初始化该Servlet;url-pattern:表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。自此请求已交给Spring Web MVC框架处理,因此我们需要配置Spring的配置文件,默认DispatcherServlet会加载WEB- INF/DispatcherServlet的Servlet名字-servlet.xml配置文件。本示例为WEB-INF/ te
4、st-servlet.xml。在Spring配置文件中配置HandlerMapping、HandlerAdapter具体配置在WEB-INF/ test-servlet.xml文件中:BeanNameUrlHandlerMapping:表示将请求的URL和Bean名字映射,如URL为 “上下文/hello”,则Spring配置文件必须有一个名字为“/hello”的Bean,上下文默认忽略。SimpleControllerHandlerAdapter: 表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作为Spring W
5、eb MVC中的处理器。如果需要其他类型的处理器可以通过实现HadlerAdapter来解决。2.5.4、在Spring配置文件中配置ViewResolver具体配置在WEB-INF/ test-servlet.xml文件中:InternalResourceViewResolver:用于支持Servlet、JSP视图解析; viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包; prefix和suffix:查找视图页面的前缀和后缀(前缀逻辑视图名后缀),比如传进来的逻辑视图名为hello,则该该jsp视图页面应该存放在
6、“WEB-INF/jsp/hello.jsp”;开发处理器/页面控制器packagecn.javass.chapter2.web.controller;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.web.servlet.ModelAndView;importorg.springframework.web.servlet.mvc.Controller;publicclassHelloWorldController
7、implementsControllerOverridepublicModelAndViewhandleRequest(HttpServletRequestreq,HttpServletResponseresp)throwsException/1、收集参数、验证参数/2、绑定参数到命令对象/3、将命令对象传入业务对象进行业务处理/4、选择下一个页面ModelAndViewmv=newModelAndView();/添加模型数据可以是任意的POJO对象mv.addObject(message,HelloWorld!);/设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面mv.setVie
8、wName(hello);returnmv;org.springframework.web.servlet.mvc.Controller:页面控制器/处理器必须实现Controller接口,注意别选错了;后边我们会学习其他的处理器实现方式;public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) :功能处理方法,实现相应的功能处理,比如收集参数、验证参数、绑定参数到命令对象、将命令对象传入业务对象进行业务处理、最后返回 ModelAndView对象;ModelAndView:包含了视图
9、要实现的模型数据和逻辑视图名;“mv.addObject(message, Hello World!);”表示添加模型数据,此处可以是任意POJO对 象;“mv.setViewName(hello);”表示设置逻辑视图名为“hello”,视图解析器会将其解析为具体的视图,如前边的视图解析器 InternalResourceVi。wResolver会将其解析为“WEB-INF/jsp/hello.jsp”。我们需要将其添加到Spring配置文件(WEB-INF/chapter2-servlet.xml),让其接受Spring IoC容器管理: name=/hello:前边配置的BeanNameU
10、rlHandlerMapping,表示如过请求的URL为 “上下文/hello”,则将会交给该Bean进行处理。开发视图页面创建 /WEB-INF/jsp/hello.jsp视图页面:HelloWorld$message$message:表示显示由HelloWorldController处理器传过来的模型数据。Spring MVC 常用 Controller直接实现Controller 接口或AbstractController抽象类ModelAndView对象用于直接跳转页面的ParameterizableViewController, UrlFilenameViewController在同
11、一控制器类中处理多个请求的MultiActionController.具体调用的方法通过MethodNameResolver决定(InternalPathMethodResolver, ParameterMethodNameResolver, PropertiesMethodResolver)方法签名:public (ModelAndView | Map | String | void) actionName(HttpServletRequest request, HttpServletResponse response, ,HttpSession ,AnyObject);能封装表单参数的CommondController、 FormController用于直接跳转页面的ParameterizableViewController, 是SpringMVC自带的一种可以直接跳转的方法,用于