spring mvc 文档学习笔记

在web.xml文件中配置url映射请求
<servlet>
  <servlet-name>spring</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 
 <servlet-mapping>
  <servlet-name>spring</servlet-name>
  <url-pattern>*.html</url-pattern>
 </servlet-mapping>
在初始化时  框架会尝试从WebContent/WEB-INF目录下名为[servlet-name]-servlet.xml

DispatcherServlet:
    它是前端控制器设计模式的实现  负责职责的分派 控制流程:    
        1、文件上传解析,如果请求类型是 multipart 将通过 MultipartResolver 进行文件上传解析;
        2、通过 HandlerMapping,将请求映射到处理器(返回一个 HandlerExecutionChain,它包括一个处理器、多个
                HandlerInterceptor 拦截器);
        3、 通过 HandlerAdapter 支持多种类型的处理器(HandlerExecutionChain 中的处理器);
        4、通过 ViewResolver 解析逻辑视图名到具体视图实现;
        5、本地化解析;
        6、渲染具体的视图等;
        7、如果执行过程中遇到异常将交给 HandlerExceptionResolver 来解析。 
    我们也可以配置自己的初始化参数来覆盖默认的配置
    如:
            contextConfigLocation : 传给上下文实例(由 contextClass 指定)的字符串,用来指定上下文的位置。 
                                                        这个字符串可以被分成多个字符串(使用逗号作为分隔符) 来支持多个上下文
                                                    (在多上下文的情况下,如果同一个 bean 被定义两次,后面一个优先)。  
            namespace:  WebApplicationContext 命名空间。默认值是[server-name]-servlet。

     <servlet>
        <servlet-name>chapter2</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-servlet-config.xml</param-value>
        </init-param>
    </servlet> 
    用此方式配置时,框架将加载“classpath:spring-servlet-config.xml”来进行初始化上下
    文而不是“/WEB-INF/[servlet 名字]-servlet.xml”。 

   一: DispatcherServlet中使用的特殊的Bean 这些Bean在DispatcherServlet启动时就自动注册了
              无需我们再次手动注册
            1、Controller:处理器/页面控制器,做的是 MVC 中的 C 的事情,但控制逻辑转移到前端控制器了,用于对请求进行
                处理;
            2、HandlerMapping:请求到处理器的映射,如果映射成功返回一个 HandlerExecutionChain 对象(包含一个 Handler
            处理器(页面控制器)对象、多个 HandlerInterceptor 拦截器)对象;如 BeanNameUrlHandlerMapping 将 URL 与 Bean
            名字映射,映射成功的 Bean 就是此处的处理器;
            3、HandlerAdapter:HandlerAdapter 将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的
            应用,从而很容易支持很多类型的处理器;如 SimpleControllerHandlerAdapter 将对实现了 Controller 接口的
            Bean 进行适配,并且掉处理器的 handleRequest 方法进行功能处理; 
            4、ViewResolver:ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;
            如InternalResourceViewResolver将逻辑视图名映射为jsp视图;
            5、LocalResover:本地化解析,因为 Spring 支持国际化,因此 LocalResover 解析客户端的 Locale 信息从而方便进行国
            际化;
            6、ThemeResovler:主题解析,通过它来实现一个页面多套风格,即常见的类似于软件皮肤效果;
            7、MultipartResolver:文件上传解析,用于支持文件上传;
            8、HandlerExceptionResolver:处理器异常解析,可以将异常映射到相应的统一错误界面,从而显示用户友好的
            界面(而不是给用户看到具体的错误信息);
            9、RequestToViewNameTranslator:当处理器没有返回逻辑视图名等相关信息时,自动将请求 URL 映射为逻辑视
            图名;
            10、FlashMapManager:用于管理 FlashMap 的策略接口,FlashMap 用于存储一个请求的输出,当进入另一个请求时
            作为该请求的输入,通常用于重定向场景,
                    
二:注解式控制器
    需要通过处理器映射 DefaultAnnotationHandlerMapping 和处理器适配器 AnnotationMethodHandlerAdapter 来开启支
    持@Controller 和 @RequestMapping 注解的处理器
常用的注解:
    @Controller:用于标识是处理器类;
    @RequestMapping:请求到处理器功能方法的映射规则;
    @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;
    @ModelAttribute:请求参数到命令对象的绑定;
    @SessionAttributes:用于声明 session 级别存储的属性,放置在处理器类上,通常列出模型属性(如
    @ModelAttribute)对应的名称,则这些属性会透明的保存到 session 中;
    @InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型; 

1、控制器实现
//通过在一个POJO类上放置@Controller和@RequestMaping  就把一个POJO类变身为处理器
@Controller
public class HelloWorldController{
 
  //@RequestMapping(value="/hello")请求URL(/hello)到处理器的功能处理方法的映射
  @RequestMapping(value="/hello")
  public  ModelAndView helloWorld(){
   ModelAndView mav = new ModelAndView();
   //添加模型数据  可以是任意的POJO对象
   mav.addObject("message","hello spring");
   //设置逻辑视图名  视图解析器会根据该名字解析到具体的视图页面
   mav.setViewName("hello");

   return mav;
  }
}
三、URL路径映射
(1)普通URL路径映射
    @RequestMaping(value={“/test1”,“/test2”})
    多个URL路径可以映射到同一个处理器的功能处理
(2)URI模板模式映射
    @RequestMaping(value=“/users/{userId}”)
    {xxxxx}占位符  请求URL可以是"/users/12345"或者“/users/abcd”
    以此类推 
(3)Ant风格的URL路径映射
    @RequestMapping(value="/users/**"):可以匹配“/users/abc/abc”,但“/users/123”将会被【URI模板模式映射
    中的“/users/{userId}”模式优先映射到】
 
    @RequestMapping(value="/product?"):可匹配“/product1”或“/producta”,但不匹配“/product”或“/productaa”;
    @RequestMapping(value="/product*"):可匹配“/productabc”或“/product”,但不匹配“/productabc/abc”;
    @RequestMapping(value="/product/*"):可匹配“/product/abc”,但不匹配“/productabc”;
    @RequestMapping(value="/products/**/{productId}"):可匹配“/products/abc/abc/123”或“/products/123”,
    也就是Ant风格和URI模板变量风格可混用; 

四、请求方法映射限定
    展示表单一般为GET请求方法  提交表单一般为POST请求方法
@Controller
@RequestMapping("/customers/**")  //处理器的通用映射前缀
public class RequestMethodController{
 //类级别的@RequestMapping的窄化
 @RequestMapping(value = "/create",method = RequestMethod.GET)
 public String showForm(){
  System.out.println("-==========GET");
  return "customer/create"
 }

 //类级别的@RequestMapping的窄化
 @RequestMapping(value = "/create",method = RequestMethod.POST)
 public String submit(){
  System.out.println("===========POST");
  return "redirect:/successs";
 }
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值