新浦京81707con > 首页 > 新奥门蒲京娱乐场SpringMVC从入门到放弃之第二章

原标题:新奥门蒲京娱乐场SpringMVC从入门到放弃之第二章

浏览次数:142 时间:2020-03-13

注解 作用
@Controller 用于标识是处理器类
@RequestMapping 请求到处理器功能方法的映射规则
@RequestParam 请求参数到处理器功能处理方法的方法参数上的绑定
@ModelAttribute 请求参数到命令对象的绑定
@InitBinder 自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型
@SessionAttributes 用于声明session 级别存储的属性,放置在处理器类上,通常列出模型属性(如@ModelAttribute)对应的名称,则这些属性会透明的保存到session 中

2.5.3、在Spring配置文件中配备HandlerMapping、HandlerAdapter

现实安排在WEB-INF/ chapter2-servlet.xml文件中:

java代码:

  1 <!-- HandlerMapping -->
  2 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
  3 
  4 <!-- HandlerAdapter -->
  5 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

BeanNameUrlHandlerMapping:表示将乞请的U奥迪Q7L和Bean名字映射,如UCR-VL为 “上下文/hello”,则Spring配置文件必需有贰个名称叫“/hello”的Bean,上下文私下认可忽略。

SimpleControllerHandlerAdapter:表示具备完结了org.springframework.web.servlet.mvc.Controller接口的Bean能够视作Spring Web MVC中的微型机。假若急需其它类型的计算机能够通过贯彻HadlerAdapter来消除。

<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

2.3、Spring Web MVC架构

Spring Web MVC框架也是三个基于供给驱动的Web框架,并且也运用了前面一个调控器形式来进行设计,再依靠供给映射法则分发给相应的页面调节器(动作/微电脑)举行管理。首先让我们完全看一下Spring Web MVC管理诉求的流水生产线:

InternalResourceViewResolver:用于帮忙Servlet、JSP视图解析;viewClass:JstlView代表JSP模板页面须求动用JSTL标签库,classpath中必须啊包含jstl的有关jar包;prefix和suffix:查找视图页面包车型客车前缀和后缀(前缀[逻辑视图名]后缀),比方传过来的逻辑视图名字为hello,则该jsp视图页面应该寄放在“/WEB-INF/jsp/hello.jsp”;

2.2、Spring Web MVC能帮大家做什么

√让我们能特别轻巧的宏图出干净的Web层和难得的Web层;

√进行更简洁的Web层的支付;

√天生与Spring框架集成(如IoC容器、AOP等);

√提供有力的约定大于配置的左券式编制程序扶植;

√能大约的举办Web层的单元测量检验;

√扶持灵活的U牧马人L到页面调整器的投射;

√非常轻便与别的视图技艺集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是坐落于三个Model里(Map数据布局完结,因而相当轻巧被其余框架使用);

√特别灵活的数据印证、格式化和数码绑定机制,能使用任何对象开展数量绑定,不必完结特定框架的API;

√提供一套强盛的JSP标签库,简化JSP开荒;

√协理灵活的本地化、主旨等深入分析;

√特别简便易行的优质管理;

√对静态能源的支撑;

√支持Restful风格。

 <!-- HandlerMapping --> <bean /> <!-- HandlerAdapter --> <bean />

1、Spring Web MVC大旨结构图,如图2-2

新奥门蒲京娱乐场 1

 

图2-2

结构图对应的DispatcherServlet焦点代码如下:

java代码:

 

  1 //前端控制器分派方法
  2 protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
  3         HttpServletRequest processedRequest = request;
  4         HandlerExecutionChain mappedHandler = null;
  5         int interceptorIndex = -1;
  6 
  7         try {
  8             ModelAndView mv;
  9             boolean errorView = false;
 10 
 11             try {
 12                    //检查是否是请求是否是multipart(如文件上传),如果是将通过MultipartResolver解析
 13                 processedRequest = checkMultipart(request);
 14                    //步骤2、请求到处理器(页面控制器)的映射,通过HandlerMapping进行映射
 15                 mappedHandler = getHandler(processedRequest, false);
 16                 if (mappedHandler == null || mappedHandler.getHandler() == null) {
 17                     noHandlerFound(processedRequest, response);
 18                     return;
 19                 }
 20                    //步骤3、处理器适配,即将我们的处理器包装成相应的适配器(从而支持多种类型的处理器)
 21                 HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
 22 
 23                   // 304 Not Modified缓存支持
 24                 //此处省略具体代码
 25 
 26                 // 执行处理器相关的拦截器的预处理(HandlerInterceptor.preHandle)
 27                 //此处省略具体代码
 28 
 29                 // 步骤4、由适配器执行处理器(调用处理器相应功能处理方法)
 30                 mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
 31 
 32                 // Do we need view name translation?
 33                 if (mv != null && !mv.hasView()) {
 34                     mv.setViewName(getDefaultViewName(request));
 35                 }
 36 
 37                 // 执行处理器相关的拦截器的后处理(HandlerInterceptor.postHandle)
 38                 //此处省略具体代码
 39             }
 40             catch (ModelAndViewDefiningException ex) {
 41                 logger.debug("ModelAndViewDefiningException encountered", ex);
 42                 mv = ex.getModelAndView();
 43             }
 44             catch (Exception ex) {
 45                 Object handler = (mappedHandler != null ? mappedHandler.getHandler() : null);
 46                 mv = processHandlerException(processedRequest, response, handler, ex);
 47                 errorView = (mv != null);
 48             }
 49 
 50             //步骤5 步骤6、解析视图并进行视图的渲染
 51 //步骤5 由ViewResolver解析View(viewResolver.resolveViewName(viewName, locale))
 52 //步骤6 视图在渲染时会把Model传入(view.render(mv.getModelInternal(), request, response);)
 53             if (mv != null && !mv.wasCleared()) {
 54                 render(mv, processedRequest, response);
 55                 if (errorView) {
 56                     WebUtils.clearErrorRequestAttributes(request);
 57                 }
 58             }
 59             else {
 60                 if (logger.isDebugEnabled()) {
 61                     logger.debug("Null ModelAndView returned to DispatcherServlet with name '"   getServletName()  
 62                             "': assuming HandlerAdapter completed request handling");
 63                 }
 64             }
 65 
 66             // 执行处理器相关的拦截器的完成后处理(HandlerInterceptor.afterCompletion)
 67             //此处省略具体代码
 68 
 69         catch (Exception ex) {
 70             // Trigger after-completion for thrown exception.
 71             triggerAfterCompletion(mappedHandler, interceptorIndex, processedRequest, response, ex);
 72             throw ex;
 73         }
 74         catch (Error err) {
 75             ServletException ex = new NestedServletException("Handler processing failed", err);
 76             // Trigger after-completion for thrown exception.
 77             triggerAfterCompletion(mappedHandler, interceptorIndex, processedRequest, response, ex);
 78             throw ex;
 79         }
 80 
 81         finally {
 82             // Clean up any resources used by a multipart request.
 83             if (processedRequest != request) {
 84                 cleanupMultipart(processedRequest);
 85             }
 86         }
 87     }

 

name="/hello":后边配置的BeanNameUrlHandlerMapping,表示只要央浼的UTiguanL为“上下文/hello”,则将会付给该Bean处理。

实际实践步骤如下:

1、  首先客商发送央浼————>前端调节器,前端调节器依照央求新闻(如U奥迪Q5L)来支配接受哪多个页面调控器举办处理并把乞求委托给它,即从前的调节器的调节逻辑部分;图2-1中的1、2手续;

2、  页面调节器接受到伏乞后,举办职能管理,首先须要收罗和绑定恳求参数到贰个对象,那几个目的在Spring Web MVC中叫命令对象,并开展表达,然后将下令对象委托给职业对象开展管理;处理完结后回去二个ModelAndView(模型数据和逻辑视图名);图2-1中的3、4、5手续;

3、  前端调控器收回调控权,然后依照重回的逻辑视图名,采取相应的视图实行渲染,并把模型数据传入以便视图渲染;图2-1中的步骤6、7;

4、  前端调控器再度撤废调整权,将响应再次来到给客商,图2-第11中学的步骤8;至此整个甘休。

${message}:表示显示由HelloWorldController微型机传过来的模型数据。

2.5.5、开荒计算机/页面调控器

java代码:

  1 package cn.javass.chapter2.web.controller;
  2 import javax.servlet.http.HttpServletRequest;
  3 import javax.servlet.http.HttpServletResponse;
  4 import org.springframework.web.servlet.ModelAndView;
  5 import org.springframework.web.servlet.mvc.Controller;
  6 public class HelloWorldController implements Controller {
  7     @Override
  8     public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
  9        //1、收集参数、验证参数
 10        //2、绑定参数到命令对象
 11        //3、将命令对象传入业务对象进行业务处理
 12        //4、选择下一个页面
 13        ModelAndView mv = new ModelAndView();
 14        //添加模型数据 可以是任意的POJO对象
 15        mv.addObject("message", "Hello World!");
 16        //设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
 17        mv.setViewName("hello");
 18        return mv;
 19     }
 20 }

 

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容器管理:

java代码:

  1 <!-- 处理器 -->
  2 <bean name="/hello" class="cn.javass.chapter2.web.controller.HelloWorldController"/>

 

name=”/hello”:后边配置的BeanNameUrlHandlerMapping,表示如过诉求的UGL450L为 “上下文/hello”,则将会提交该Bean进行拍卖。

1、让大家能非常轻松的两全出到底的Web层和稀世的Web层;2、进行更简明的Web层开拓;3、天生与Spring框架集成(如IOC容器、AOP等);4、提供强劲的约定大于配置的公约式编制程序扶持;5、能轻易的进行Web层的单元测量试验;6、援助灵活的UHavalL到页面调控器的照射;7、特别轻巧与别的视图手艺集成;8、非常灵活的多少证实、格式化和数据绑定机制,能动用其余对象开展数量绑定,不必达成特定框架的API;9、提供一套强大的JSP标签库,简化JSP开采;10、扶助灵活的本地化、主旨等深入分析;11、越发简约的极其处理;12、对静态财富的支撑;13、帮助Restful风格;

在那大家得以看来具体的大旨开垦步骤:

1、  DispatcherServlet在web.xml中的安顿描述,进而阻碍哀告到Spring Web MVC

2、  HandlerMapping的安顿,进而将呼吁映射到Computer

3、  HandlerAdapter的结构,进而扶植三种类型的微处理器

4、  ViewResolver的安插,进而将逻辑视图名分析为实际视图才具

5、微电脑(页面调整器)的配置,进而进行成效管理

上面包车型客车支付步骤大家会在Hello World中详尽表达。

切切实实推行步骤如下:1、首先顾客发送诉求——>前端调控器,前端调整器依照央求新闻来调控选用哪贰个页面调节器举办处理并把须要委托给它,即在此之前调控器的支配逻辑部分;如图中的1、2手续;2、页面调控器选拔到央求后,进行功用途理,首先需求搜集和绑定伏乞参数到三个目的,这几个指标在Spring Web MVC中叫命令对象,并举办验证,然后将指令对象委托给业务对象开展拍卖;管理完成后赶回三个ModelAndView(模型数据和逻辑视图名);如图中的3、4、5步骤;3、前端调节器收回调整权,然后依照再次来到的逻辑视图名,选择相应的视图实行渲染,并把数据模型传入以便视图渲染;如图中的6、7步骤;4、前端调控器再一次撤除调整权,将响应重临给客商;如图中的8步骤;至此整个响应到此甘休。难题:1、伏乞什么给前端调整器?2、前端调整器怎么着依照央浼音讯选取页面调整器实行职能管理?3、怎样支撑各种页面调节器呢?4、页面调控器怎么样采纳专业对象?5、页面调控器怎么样回到模型数据?6、前端调节器怎么着依照页面调控器再次回到的逻辑视图名选用具体的视图举行渲染?7、区别的视图本事什么选拔相应的模子数据?首先大家掌握犹如上难点,那么那个难题我们什么样开展消除吗?在后头依次进行回应。

2.5、Hello World入门

 <!-- ViewResolver --> <bean > <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>

2.7、Spring3.1新特性

额…继续记笔记。。。看看SpringMVC从入门到吐弃之第一章Web MVC简单介绍

新奥门蒲京娱乐场 2几个在实验室的时候正是那样原来的书文地址

运维步骤:

1、  首先顾客发送诉求http://localhost:9080/springmvc-chapter2/hello——>web容器,web容器遵照“/hello”路线映射到DispatcherServlet(url-pattern为/)举行拍卖;

2、  DispatcherServlet——>BeanNameUrlHandlerMapping进行倡议随地理的照耀,BeanNameUrlHandlerMapping将“/hello”路线直接照射到名为“/hello”的Bean举办拍卖,即HelloWorldController,BeanNameUrlHandlerMapping将其包装为HandlerExecutionChain(只囊括HelloWorldController微机,未有拦截器);

3、  DispatcherServlet——> SimpleControllerHandler艾达pter,SimpleControllerHandlerAdapter将HandlerExecutionChain中的微机(HelloWorldController)适配为SimpleControllerHandlerAdapter;

4、  SimpleControllerHandlerAdapter——> HelloWorldController微电脑功用项理方式的调用,SimpleControllerHandlerAdapter将会调用场理器的handleRequest方法实行功效处理,该管理办法重临叁个ModelAndView给DispatcherServlet;

5、  hello(ModelAndView的逻辑视图名)——>InternalResourceViewResolver, InternalResourceViewResolver使用JstlView,具体视图页面在/WEB-INF/jsp/hello.jsp;

6、  JstlView(/WEB-INF/jsp/hello.jsp)——>渲染,将在微处理机传入的模型数据(message=HelloWorld!卡塔尔在视图中呈现出来;

7、  重返调节权给DispatcherServlet,由DispatcherServlet再次回到响应给客户,到此一个流程结束。

到此HelloWorld就到位了,步骤是否有些多?何况纪念下大家根本进行了之类配置:

1、  前端调节器DispatcherServlet;

2、  HandlerMapping

3、  HandlerAdapter

4、  ViewResolver

5、  微处理器/页面调节器

6、  视图

之所以,接下去几章让我们详细看看那个安顿,先从DispatcherServlet最初吧。

☆开荒工具:eclipse☆运维情形:tomcat7☆工程:动态Web工程☆spring全体框架下载:spring-framework-4.3.1.RELEASE-dist.zip ☆正视jar包:1、Spring依赖的jar包:为了简单,将spring-framework-4.3.1.RELEASE-dist.zip/dist/下全数的jar包拷贝到项目标WEB-INF/lib目录下;2、Spring框架信任的jar包:需求加多Apache commons logging日志,此处用的commons-logging-1.2.jar供给增加jstl标签库扶植,此处使用的是jstl-1.1.2.jar和standard-1.1.2.jar3、项目目录

到此,再来看大家日前建议的难点:

1、  央浼什么给前端调整器?那么些应该在web.xml中进行布置描述,在HelloWorld中详尽解说。

2、  前端调整器怎么着根据央求音信选取页面调整器实行功效管理? 我们必要配置HandlerMapping实行映射

3、  怎样援助三种页面调控器呢?配置Handler艾达pter进而扶持三连串型的页面调节器

4、  怎么样页面调控器怎么样行使专门的学问对象?能够预料到,肯定利用Spring IoC容器的重视性注入成效

5、  页面调整器怎样回到模型数据?使用ModelAndView再次来到

6、  前端调控器怎么着根据页面调控器重回的逻辑视图名选拔具体的视图举办渲染? 使用ViewResolver进行拆解深入分析

7、  差别的视图本事什么运用相应的模型数据? 因为Model是三个Map数据布局,非常轻便帮助任何视图技能

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”,视图拆解深入分析器会将其深入分析为实际的视图,如前方的视图深入分析器InternalResourceVi。wResolver 会将其剖判为“WEB-INF/jsp/hello.jsp”。大家必要将其增添到Spring配置文件(WEB-INF/helloworld-servlet.xml卡塔尔国,让其收受Spring IoC容器管理:

问题:

1、  乞求什么给前端调控器?

2、  前端调节器怎么着根据诉求新闻选拔页面控制器实行职能管理?

3、  如何补助三种页面调节器呢?

4、  如何页面调节器怎样行使职业对象?

5、  页面调整器怎么样回到模型数据?

6、  前端调控器怎么着依照页面调整器重回的逻辑视图名选取具体的视图举行渲染?

7、  不相同的视图技术怎么接收相应的模型数据?

先是大家了然犹如上难题,那这个主题材料怎么着消除呢?请让大家先三番两次,在前边依次回答。

//前端控制器分派方法protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception{ HttpServletRequest processedRequest = request; HandlerExecutionChain mappedHandler = null; int interceptorIndex = -1; try { ModelAndView mv; boolean errorView = false; try { //检查是否是请求是否是multipart,如果是将通过MultipartResolver解析 processedRequest = checkMultipart; //步骤2、请求到处理器的映射,通过HandlerMapping进行映射 mappedHandler = getHandler(processedRequest, false); if (mappedHandler == null || mappedHandler.getHandler() == null) { noHandlerFound(processedRequest, response); return; } //步骤3、处理器适配,即将我们的处理器包装成相应的适配器(从而支持多种类型的处理器) HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler; // 304 Not Modified缓存支持 //此处省略具体代码 // 执行处理器相关的拦截器的预处理(HandlerInterceptor.preHandle) //此处省略具体代码 // 步骤4、由适配器执行处理器(调用处理器相应功能处理方法) mv = ha.handle(processedRequest, response, mappedHandler.getHandler; // Do we need view name translation? if (mv != null && !mv.hasView { mv.setViewName(getDefaultViewName; } // 执行处理器相关的拦截器的后处理(HandlerInterceptor.postHandle) //此处省略具体代码 } catch (ModelAndViewDefiningException ex) { logger.debug("ModelAndViewDefiningException encountered", ex); mv = ex.getModelAndView(); } catch (Exception ex) { Object handler = (mappedHandler != null ? mappedHandler.getHandler; mv = processHandlerException(processedRequest, response, handler, ex); errorView = (mv != null); } //步骤5 步骤6、解析视图并进行视图的渲染 //步骤5 由ViewResolver解析View(viewResolver.resolveViewName(viewName, locale)) //步骤6 视图在渲染时会把Model传入(view.render(mv.getModelInternal(), request, response);) if (mv != null && !mv.wasCleared { render(mv, processedRequest, response); if (errorView) { WebUtils.clearErrorRequestAttributes; } } else { if (logger.isDebugEnabled { logger.debug("Null ModelAndView returned to DispatcherServlet with name '"  getServletName()  "': assuming HandlerAdapter completed request handling"); } } // 执行处理器相关的拦截器的完成后处理(HandlerInterceptor.afterCompletion) //此处省略具体代码 catch (Exception ex) { // Trigger after-completion for thrown exception. triggerAfterCompletion(mappedHandler, interceptorIndex, processedRequest, response, ex);throw ex; } catch (Error err) { ServletException ex = new NestedServletException("Handler processing failed", err); // Trigger after-completion for thrown exception. triggerAfterCompletion(mappedHandler, interceptorIndex, processedRequest, response, ex); throw ex; } finally { // Clean up any resources used by a multipart request. if (processedRequest != request) { cleanupMultipart(processedRequest); } }}

一、Spring2.5之前,我们都是通过实现Controller接口或其实现来定义我们的处理器类。

BeanNameUrlHandlerMapping:表示将要伸手的U君越L和Bean名字映射,如U奥德赛L为“上下文/hello”,则Spring配置文件必得有三个名为“/hello”的bean,上下文私下认可忽略。SimpleControllerHandlerAdapter:表示全体达成了org.springframework.web.servlet.mvc.Controller接口的Bean可以看作Spring Web MVC中的微处理器。借使急需别的项指标计算机能够经过落到实处HandlerAdapter来缓慢解决。

2.5.4、在Spring配置文件中配置ViewResolver

切切实实陈设在WEB-INF/ chapter2-servlet.xml文件中:

java代码:

  1 <!-- ViewResolver -->
  2 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  3     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  4     <property name="prefix" value="/WEB-INF/jsp/"/>
  5     <property name="suffix" value=".jsp"/>
  6 </bean>

 

InternalResourceViewResolver:用于协理Servlet、JSP视图剖判;

viewClass:JstlView代表JSP模板页面必要动用JSTL标签库,classpath中必须含有jstl的有关jar包;

prefix和suffix:查找视图页面包车型地铁前缀和后缀(前缀[逻辑视图名]后缀),比方传进来的逻辑视图名称为hello,则该该jsp视图页面应该寄存在“WEB-INF/jsp/hello.jsp”;

四、Spring3.1 新特点:对 Servlet 3.0 的无所不有援助。

☆依赖jar包:

1、  Spring框架jar包:

为了轻巧,将spring-framework-3.1.1.RELEASE-with-docs.zip/dist/下的装有jar包拷贝到项目标WEB-INF/lib目录下;

2、  Spring框架重视的jar包:

内需加多Apache commons logging日志,此处使用的是commons.logging-1.1.1.jar;

亟待添加jstl标签库帮衬,此处使用的是jstl-1.1.2.jar和standard-1.1.2.jar;

Spring Web MVC框架也是二个依据诉求驱动的Web框架,而且也是用了前者调控器方式来举办设计,再依照央浼映射准则分发给相应的页面调节器进行拍卖。首先让大家来全部看一下Spring Web MVC诉求的管理流程。

三、Spring3.0引入RESTful架构风格支持(通过@PathVariable注解和一些其他特性支持),且又引入了更多的注解支持:

@CookieValue:``cookie数据到处理器功能处理方法的方法参数上的绑定;

@RequestHeader:``请求头(header)数据到处理器功能处理方法的方法参数上的绑定;

@RequestBody:``请求的body体的绑定(通过HttpMessageConverter进行类型转换);

@ResponseBody:``处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);

@ResponseStatus:``定义处理器功能处理方法/异常处理器返回的状态码和原因;

@ExceptionHandler:``注解式声明异常处理器;

@PathVariable:``请求URI中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful架构风格的URI;

Spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于搞定POST格局变成的国语乱码难点,具体安顿如下:

宗旨构造的切实流程手续如下:

1、  首先客商发送乞求——>DispatcherServlet,前端调节器收到央求后本身不举办拍卖,而是委托给其余的拆解深入分析器实行管理,作为联合访谈点,进行全局的流水生产线调节;

2、  DispatcherServlet——>HandlerMapping, HandlerMapping将会把须求映射为HandlerExecutionChain对象(满含八个Handler微型机(页面调节器)对象、三个HandlerInterceptor拦截器)对象,通过这种政策情势,超轻便增添新的投射战术;

3、  DispatcherServlet——>HandlerAdapter,HandlerAdapter将会把计算机包装为适配器,进而辅助三类别型的Computer,即适配器设计方式的应用,进而比较轻松辅助广大品类的Computer;

4、  HandlerAdapter——>微处理机效率管理方法的调用,HandlerAdapter将会基于适配的结果调用真正的微电脑的功能处理措施,完成功能管理;并赶回四个ModelAndView对象(包涵模型数据、逻辑视图名);

5、  ModelAndView的逻辑视图名——> ViewResolver, ViewResolver将把逻辑视图名深入分析为现实的View,通过这种政策格局,超轻便调换别的视图本事;

6、  View——>渲染,View会依照传进来的Model模型数据进行渲染,此处的Model实际是叁个Map数据布局,由此非常轻巧帮忙任何视图技巧;

7、重临调控权给DispatcherServlet,由DispatcherServlet再次来到响应给客户,到此多少个流水生产线结束。

此地大家只是讲了基本流程,未有设想拦截器、本地解析、文件上传分析等,前面再细述。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hello World</title></head><body> ${message }</body></html>

 

布局图对应的DispatcherServlet宗旨代码如下:

二、Spring2.5引入注解式处理器支持,通过@Controller 和 @RequestMapping注解定义我们的处理器类。并且提供了一组强大的注解:

需要通过处理器映射DefaultAnnotationHandlerMapping和处理器适配器AnnotationMethodHandlerAdapter来开启支持@Controller 和 @RequestMapping注解的处理器。

@Controller:``用于标识是处理器类;

@RequestMapping:``请求到处理器功能方法的映射规则;

@RequestParam:``请求参数到处理器功能处理方法的方法参数上的绑定;

@ModelAttribute:``请求参数到命令对象的绑定;

@SessionAttributes:``用于声明session级别存储的属性,放置在处理器类上,通常列出模型属性(如@ModelAttribute)对应的名称,则这些属性会透明的保存到session中;

@InitBinder:``自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型;

我们在web.xml中增多如下配置

2.5.6、运行服务器运转测验

经过央浼:,借使页面输出“Hello World! ”就注脚我们成功了!

 

本文由新浦京81707con发布于首页,转载请注明出处:新奥门蒲京娱乐场SpringMVC从入门到放弃之第二章

关键词: 新浦京81707con java 入门 第二章 弃之

上一篇:简单可行的安装包,怎样减少

下一篇:没有了