具体看这两块是怎么执行的 下图是实现了DispatcherServlet从HandleMapping获得处理器执行链的逻辑的源代码 下面是DispatcherServlet从HandleAdaptor中获取适配器…
SpringMVC配置式开发 1. SpringMVC运行原理(执行过程) 2. 需求 用户提交一个请求, 服务端处理器接收到请求后, 给出一条信息,在相应页面中显示该条信息 3. 开发步骤 (1) 导入jar包 导入18个jar包 com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.apache.commons.loggi…
上一篇我们讲解了DispatcherServlet的url-pattern配置详解,今天我们来真正对SpringMVC进行配置式开发.所谓配置式开发是指“处理器类是程序员自己定义的.实现了特定接口的类,然后在SpringMVC配置文件中对该类进行显式的,明确的注册”的开发方式.今天我们的开发还是将中央调度器的url-pattern配置成*.do.然后将springmvc.xml的静态资源访问先取消. 一.处理器映射器(BeanNameUrlHandlerMapping)handlerMappin…
所谓配置式开发是指“处理器类是程序员手工定义,实现了特定接口的类,然后再在SpringMVC 配置文件中对该类进行显示的.明确的注册”的开发方式. 一.处理器映射器HandlerMapping HandlerMapping接口负责根据request请求找到对应的Handler处理器及Interceptor拦截器,并将它们封装在HandlerExecutionChain对象中,返回给中央调度器. 其常用的实现类有2种: BeanNameUrlHandlerMapping SimpleUrlHand…
上一篇我们大致讲解了处理器映射器的处理流程以及跟了一下源码的执行流程.今天我们来了解一下处理器适配器. 一.适配器模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作.用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极.阴极外,还有一个地极.而有些地方的电源插座却只有两极,没有地极.电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使…
处理器映射器 HandlerMapping HandlerMapping 接口负责根据request请求找到对应的Handler处理器及Interceptor拦截器, 并将它们封装在HandlerExecutionChain 对象中,返回给中央调度器 其常用的实现类有两种: 1.BeanNameUrlHandlerMapping(默认) 2.SimpleUrlHandlerMapping BeanNameUrlHandlerMapping 1.根据请求的url与 与id 属性相匹配时,访问 cl…
处理器除了实现Controller 接口外,还可以继承自一些其他的类,来完成一些特殊的功能 1.继承自AbstractController类 若处理器继承自AbstractController类,那么处理器可以通过属性 supportedMethods 来限制 HTTP 请求的提交方式 <!-- 若处理器继承自 AbstractController 类,该类具有 supportedMethods 属性,所以可以在这里 对 supportedMethods属性 进行赋值,来限制HTTP请求方式()…
ModelAndView 1.Model(模型) 1.model的本质就是HashMap,向模型中添加数据,就是往HashMap中去添加数据 2.HashMap 是一个单向查找数组,单向链表数组 3.LinkedHashMap,本质是一个HashMap,但其将Entry进行了扩展,变成双向的了 2.View(视图) ModelAndView 内部通过 setViewName() 指定视图名称 这个视图名称对应一个视图对象,这个视图对象会被封装在ModelAndView中,传给视图解析器来解析 视…
处理器适配器HandlerAdapter 1.SimpleControllerHandlerAdapter(默认) 所有实现了 Controller 接口的处理器 Bean,均是通过SimpleControllerHandlerAdapter 这个适配器进行适配,执行的 2.HttpRequestHandlerAdapter 所有实现了 HttpRequestHandler 接口的处理器Bean 均是通过 HttpRequestHandlerAdapter 这个适配器进行适配,执行的 相对于Si…
多个视图解析器优先级:…
 第一种处理器映射器BeanNameUrlHandlerMapping.class(注册器映射器 bean节点的class属性中用到的,这种方式dean id属性必须要以“/”开头) 第二种处理器映射器SimpleUrlHandlerMapping…
上一篇我们结束了配置式开发,配置式开发目前在企业中用的并不是很多,大部分企业都在使用注解式开发,所以今天我们就来学习注解式开发.所谓SpringMVC注解式开发是指,处理器是基于注解的类的开发方式.对于每一个定义的处理器,无需在配置文件中逐个注册,只需在代码中通过对类与方法的注解,便可完成注册. 一.注册组件扫描器 这里说的组件即处理器,需要指定处理器所在的基本包. <?xml version="1.0" encoding="UTF-8"?> <b…
SpringMVC注解式开发 1. 搭建环境 (1) 后端控制器无需实现接口 , 添加相应注解 Controller类添加注解 @Controller //该注解表将当前类交给spring容器管理 @Scope("prototype") @RequestMapping("/springmvc")  //该注解起到限定范围的作用,命名空间 public class MyController{ @RequestMapping("/hadleRequest&qu…
上两篇我们对处理器方法的参数进行了分别讲解,今天来学习处理器方法的返回值. 一.返回ModelAndView 若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回ModelAndView较好.在使用时,若该处理器方法只是进行跳转而不传递数据,或只是传递数据而不跳转资源(比如对页面的Ajax异步响应),此时若返回ModelAndView,总有一部分多余,要么Model多余,要么View多余,此时返回ModelAndView不合适. 二.返回String 1:内…
openresty开发系列31--openresty执行流程 我们先看个例子 location /test {    set $a 32;    echo $a;    set $a 56;    echo $a;} echo nginx第三方模块,是用于做响应输出 输出了 56 Nginx 处理每一个用户请求时,都是按照若干个不同阶段依次处理的.而不是根据配置文件上的顺序. 之上的例子 涉及到了 两个阶段  rewrite和content阶段 set属于rewrite阶段echo属于conte…
前言 我们现在学习的是Struts2,其实Struts1和Struts2在技术上是没有很大的关联的.Struts2其实基于Web Work框架的,只不过它的推广没有Struts1好,因此就拿着Struts这个名气推出了Struts2框架. 因此,学习Struts2的时候,不了解Struts1是没有任何关系的. 在开山篇的时候,已经说明了为什么要引入Struts框架,其实就是为了提高开发效率- Struts2框架预先实现了一些功能: 请求数据自动封装 文件上传的功能 对国际化功能的简化 数据效验功…
SpringMVC的注解式开发是指,处理器是基于注解的类的开发.对于每一个定义的处理器,无需再配置文件中逐个注册,只需在代码中通过对类与方法的注解,便可完成注册.即注解替换是配置文件中对于处理器的注册部分. 一.第一个注解式开发程序 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-/…
上一篇我们学习了注解式开发的配置方式并写了一个小Demo跑起来.今天我们来学习注解开发的参数接收.处理器方法中的常用参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用.具体如下: 1:HttpServletRequest 2:HttpServletResponse 3:HttpSession 4:用户承载数据的Model 5:请求中所携带的请求参数 在进行参数接收之前我们先在/WebRoot/index.jsp下添加如下内容: <%@ page language=&quo…
第一个注解式开发程序 SpringMVC 是 Spring 框架的一部分,所以它和Spring结合的是非常紧密的 使用 @Controller 注解,既可以将处理器交给Spring容器去管理,又可以说明这是一个处理器类, 不需要通过实现Controller的接口的方式去声明了 1.注册组件扫描器 <context:component-scan base-package="com.springmvc.handlers"></context:component-scan&…
1.定义实体类Student 2.定义Student表 3.定义index页面 4.定义处理器 5.定义Service 6.定义Dao接口 7.定义Dao的Mapper配置文件 8.定义MyBatis的主配置文件(很多配置已经在spring-mybatis文件中完成了) <!-- 该配置文件中主要用于注册 Mapper 中所使用的 类的 别名,及Mapper的位置 --> <configuration> <!-- 别名 --> <typeAliases> &…
上一篇我们学习了简单的参数接收方式,以及对编码的统一处理.今天我们来接收对象参数. 一.接收对象参数 jsp页面: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>…
搭建环境 后端控制器无需实现接口,添加相应的注解 springmvc配置文件中无需注册controller springmvc配置文件中添加组件扫描器.注解驱动 涉及常用的注解 @controller.@RequestMapping(类体上[命名空间].方法上)起到限定范围的作用 @Scope 代码一: 访问路径: http://localhost:8089/springmvc-03-annotation-primary/springmvc/hadleRequest…
处理器方法的返回值 使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型 1.ModelAndView 2.String 3.void 4.自定义类型对象 1.返回ModelAndView 若处理器方法处理完后,需要跳转到其他资源,且又要在跳转的资源间传递数据,此时处理器方法 返回ModelAndView比较好.当然,若要返回ModelAndView,则处理器方法中需要定义ModelAndView对象 在使用时,若该处理器方法只是进行跳转而不传递数据或只是传递数据而不向…
1.对请求URI的命名空间的定义 @RequestMapping的value属性用于定义所匹配请求的URI.但对于注解在方法上和注解在类上, 其value 属性 所指定的URI,意义是不同的 一个@Controller 所注解的类中,可以定义多个处理器方法.当然,不同的处理器方法 所匹配的 URI 是不同的. 这些不同的 URI 被指定在注解于方法之上的@RequestMapping 的 value 属性中. 但若这些请求具有相同的 URI 部分,则这些相同的 URI,可以被抽取到注解在 类之上…
逐个接收(涉及注解@RequestParam) index.jsp的name必须和后端的名字一致,第一种才可以实现. 以对象形式整合接收 域属性参数的接收 数组或集合参数的接收 restfull风格传参(涉及注解@PathVariable) 接收json字符串(涉及注解@RequestBody,注册mvc注解驱动,导入jackson包) 获取请求头中的注解:…
1.返回void -Ajax请求 后台: 前台: 返回object中的数值型: 返回object中的字符串型: 返回object中的自定义类型对象: 返回object中的list: 返回object中的map:…
1.校正请求参数名: 2.以对象形式整体接收 3.路径变量:…
1.逐个参数接收 只要保证请求参数名与该请求处理方法的参数名相同即可 // 请求参数名 与该处理器中的请求方法的参数名相同 ,即可接收前台传递过来的参数 public ModelAndView method1(String username, int age) { 2.请求参数中文乱码问题 <!-- 使用 Spring 中的 过滤器 ,解决编码问题 (只对Post 请求生效)--> <filter > <filter-name>characterEncodingFilt…
功能一:请求地址公共部分,模块名称 (放在类) 功能二:…