SpringMVC笔记.docx_第1页
SpringMVC笔记.docx_第2页
SpringMVC笔记.docx_第3页
SpringMVC笔记.docx_第4页
SpringMVC笔记.docx_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Spring MVCSpring框架提供了构建web应用程序的全功能的MVC模块。使用Spring可插入MVC框架,可以选择使用内置的Spring Web框架还是Struts这样的web框架。通过策略接口,Spring框架是高度可配置的,而且包含多种视图技术。例如 JavaServer Pages(JSP技术)、Velcoty、Tiles、iText等。、Spring MVC 主要解决的问题有1. 将Web页面中输入的元素封装为一个(请求)数据对象;2. 根据请求的不同,调用相应的逻辑处理单元,并将(请求)的对象作为参数注入;3. 逻辑处理单元完成处理后,返回一个结果数据对象;4. 将结果数据对像中的数据与预先设计的表现层相结合并展现给用户。前段控制器是DispatcherServlet,应用控制器其实拆分为处理器映射器Handler Mapping进行处理器管理和视图解析器View Resolver进行视图管理;页面控制器/动作/处理器是Controller接口(只包含ModelAndViewhandleRequest(request,response)方法)的实现;支持本地化(Locale)解析、主题(Theme)解析及文件上传下载等。Spring MVC处理请求流程:DispatcherServlet在web.xml中的配置testorg.springframework.web.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/ test-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 Web 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视图页面应该存放在“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;publicclassHelloWorldControllerimplementsControllerOverridepublicModelAndViewhandleRequest(HttpServletRequestreq,HttpServletResponseresp)throwsException/1、收集参数、验证参数/2、绑定参数到命令对象/3、将命令对象传入业务对象进行业务处理/4、选择下一个页面ModelAndViewmv=newModelAndView();/添加模型数据可以是任意的POJO对象mv.addObject(message,HelloWorld!);/设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面mv.setViewName(hello);returnmv;org.springframework.web.servlet.mvc.Controller:页面控制器/处理器必须实现Controller接口,注意别选错了;后边我们会学习其他的处理器实现方式;public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) :功能处理方法,实现相应的功能处理,比如收集参数、验证参数、绑定参数到命令对象、将命令对象传入业务对象进行业务处理、最后返回 ModelAndView对象;ModelAndView:包含了视图要实现的模型数据和逻辑视图名;“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:前边配置的BeanNameUrlHandlerMapping,表示如过请求的URL为 “上下文/hello”,则将会交给该Bean进行处理。开发视图页面创建 /WEB-INF/jsp/hello.jsp视图页面:HelloWorld$message$message:表示显示由HelloWorldController处理器传过来的模型数据。Spring MVC 常用 Controller直接实现Controller 接口或AbstractController抽象类ModelAndView对象用于直接跳转页面的ParameterizableViewController, UrlFilenameViewController在同一控制器类中处理多个请求的MultiActionController.具体调用的方法通过MethodNameResolver决定(InternalPathMethodResolver, ParameterMethodNameResolver, PropertiesMethodResolver)方法签名:public (ModelAndView | Map | String | void) actionName(HttpServletRequest request, HttpServletResponse response, ,HttpSession ,AnyObject);能封装表单参数的CommondController、 FormController用于直接跳转页面的ParameterizableViewController, 是SpringMVC自带的一种可以直接跳转的方法,用于不用controller处理的跳转,需要自定义property属性,可灵活命名跳转的jsp页面的名称。UrlFilenameViewController 是SpringMVC自带的另一种可以直接跳转的方法,用于不用controller处理的跳转,不需要自定义property属性,但跳转的页面名称必须与请求名称相同。能封装表单参数CommondController 实现AbstractCommandController接口,是为了能方便的接收整个表单元素并封装成一个objec不需要用getParameter接收吗 用set方法传参数方便使用 使用CommondController时如果封装日期Date类型回报空指针错误,需要在数据绑定DateBind里注册一个Date类型属性编辑器/* * 在command中中介重写initBinder方法,注册一个日期理性的编辑器, * new CustomDateEditor(dateFormat, allowEmpty)方法是框架自带的半成品方法 * 第一个参数标识日期转化的格式 * 第二个参数表示是否允许注入值为空 */Overrideprotected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat(yyyy-MM-dd), true);FormController ;表单控制器,可以直接由一个控制器控制跳转多个页面public class empFromController extends SimpleFormController /* * 用于跳转页面 */Overrideprotected Map referenceData(HttpServletRequest request) throws Exception Map model = new HashMap();model.put(adeptlist, new Stringa,b,c,d);return model;/* *用于处理数据 */Overrideprotected ModelAndView onSubmit(Object command) throws Exception emp e = (emp)command;System.out.println(e.tostring();return new ModelAndView(success); 在同一控制器类中处理多个请求的MultiActionController.具体调用的方法通过MethodNameResolver决定(InternalPathMethodResolver, ParameterMethodNameResolver, PropertiesMethodResolver)在实现MultiActionController接口是可自定义方法,但方法名遵循以下命名规则public (ModelAndView | Map | String | void) actionName(HttpServletRequest request, HttpServletResponse response, ,HttpSession ,AnyObject);返回值类型可以是ModelAndView | Map | String | void 当只返回页面名称是一般用string;参数HttpServletRequest request, HttpServletResponse response必须有,,HttpSession ,AnyObject可以选择,但都有时,顺序不能变。InternalPathMethodNameResolver 按路径解析,方法名与请求名相同; ParameterMethodNameResolver 根据参数解析 配置参数 在输入路径是要加入方法名如 to_add.do 请求 和 eno: name: adept: $adept PropertiesMethodResolver 按属性解析(少用)默认的ControllerClassNameHandlerMapping 是按请求名称寻找controller,可以极大的简化映射关系的配置,比如请求名为XXX.do 会自动找XXXController如果请求MultiActionController多个请求则发请求为XXX/AAA.do 自动找XXXController中的AAA方法。常用的SimpleUrlHandlerMappingBeanNameUrlHandlerMapping 也不用配置映射关系,根据配置文件test-servlet.xml中的bean属性的name值寻找Controller 如基于注解的MVC配置:在mvc-servlet.xml中!- 有默认值不用配置 -Controller将一个普通类注解为控制器类(Controller)RequestMapping请求路径映射 在controller类中的方法上注解请路径 如:/请求路径映射RequestMapping(/start)public String start()return start;也可以在类上注解RequestMapping(test)public class TestController RequestMapping(/start)public String start(HttpServletRequest request) String name = request.getParameter(name);System.out.println(name);return start;但请求路径变为/test/start。不论怎样处理的方法上必须有RequestMapping注解RequestMapping和PathVariable 连用还可以以URL模板路径请求以前请求方式为:Http:/localhsot:8080/mvc/start.do?name=zhangsan现在:以前请求方式为:Http:/localhsot:8080/mvc/start/zhangsan.do注解方式为:RequestMapping(/start/name)public String start1(PathVariable(name) String name) System.out.println(name);return start;现在:以前请求方式为:Http:/localhsot:8080/mvc/start/zhangsan/20.doRequestMapping(/start/name/age)public String start2(PathVariable(name) String name,PathVariable(age) int nianling) System.out.println(name + nianling);return start;RequestMapping还可以根据请求方法不同(GET/POST),映射到不同的处理方法。RequestMapping(value = /start3, method = RequestMethod.GET)public String st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论