• 深入浅出 SpringMVC 1


     原创播客,如需转载请注明出处。原文地址:http://www.cnblogs.com/crawl/p/7690973.html  

    前言:

      本篇笔记是LZ在之前学习 SpringMVC 框架时所的记录,分两篇分享,此篇为基础篇,包括 SpringMVC 环境在 Eclipse 中的搭建SpringMVC 的 HelloWorld常用注解:@RequestMapping、@PathVariable、@RequestParam、 @SessionAttributes、@ModelAttribute等REST 风格的 URL 的使用使用 POJO 对象绑定请求的参数在 SpringMVC 的处理器的方法中使用原生的 Servlet 的 API处理模型数据@ModelAttribute 的源码分析SpringMVC 的视图解析器及其流程的分析,最后还有一个 SpringMVC 的 CRUD 小案例。

      笔记中提供了大量的代码示例,需要说明的是,大部分代码示例都是以图片的形式展示的,所有的图片都是来自本人所敲代码的截图,不足之处,请大家指正~

     一、SpringMVC 的 HelloWorld 

    1.加入 jar 包  spring-framework-4.0.0.RELEASE\libs 下的 spring 基本 jar 包和 apache-commons\commons-logging-1.1.1 下的日志包

    2.配置 web.xml 文件 Alt + / 选择 dispatcherservlet

    注:实际上也可以不通过 contextConfigLocation 来配置 SpringMVC 的配置文件,而是使用默认的,默认的配置文件的路径和名字为:/WEB-INF/<servlet-name>-servlet.xml 其中 <servlet-name> 为 web.xml 文件中的配置的 SpringMVC 的 <servlet-name> 属性值

    3.类路径下新建 Spring 的配置文件 springmvc.xml 选择 beans  context  mvc 约束

    4.编写请求处理器类,在 springmvc.xml 中配置自动扫描的包,并为处理器类添加处理器标志注解

    4.编写视图:index.jsp;在请求处理器类中通过 @RequestMapping(xxx) 的方式来映射请求的 URL;在 springmvc.xml 文件中配置视图解析器

    二、@RequestMapping 映射请求

    1.@RequestMapping 既可以修饰类又可以修饰方法

    若在类上使用了 @RequestMapping("/springmvc"),则对应 view  层的请求为:

    2. @RequestMapping 的 value method 属性

    value 属性:指定映射的 URL

    method 属性: 指定映射的请求方式

    3. @RequestMapping 的 params 和 headers 属性 (了解即可,不常用)

    ① params 属性:指定映射的请求参数

    ② headers 属性: 指定映射的请求头

     

    4. @RequestMapping 的 Ant 风格的路径,即使用通配符 (了解即可)

     

    5. 补充: @PathVariable(xxx) 注解可以来映射 URL 中的占位符到目标方法的参数中

     

    三、REST 

    1.简介:即Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便, 所以正得到越来越多网站的采用

    2.HTTP协议里面,四个表示操作方式的动 词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源

    3.以 CRUD 为例,演示 REST 风格 URL 的使用

    1)在 web.xml 中配置 HiddenHttpMethodFilter 过滤器,此过滤器可以将 POST 请求转换为 DELETE 或 PUT 请求

    2)在 jsp 页面中模拟发送 GET POST DELETE PUT 请求

    3) 在请求处理器类中编写 GET POST DELETE PUT 请求各自对应的方法,通过 @PathVariable 注解获取请求的参数,即 id

     

    四、 @RequestParam 注解 (重要,常用) 

    1.@RequestParam 注解可以在请求方法中获取请求的参数

     

    2.具体获取:

    五、@RequestHeader 注解 (了解)

    1. 在请求方法中映射(获取)请求头的信息

    2. 使用

    六、@CookieValue 注解 (了解)

    1.根据 Cookie 的 key 获取 Cookie 的 value

    2.使用

    七、使用 POJO 对象绑定请求的参数  (POJO:普通的 Java 类) (常用)

    1.构建 User 类和 Address 类,其中 User 类中包含 Address 对象

    2.在 view 层构建表单 (index.jsp 中)

    3.在请求控制器类中编写请求方法

    八、在处理器的方法中使用原生的 Servlet 的 API (常用)

    九、处理模型数据

    1. ModelAndView 作为处理器方法的返回值

    2. 向目标方法添加 Map 类型的参数

    3. @SessionAttributes 注解 (常用) 注:此注解只能放在类上,不能放在方法上

    1)作用:① 通过属性名指定需要放到会话中的属性(使用 @SessionAttributes 注解的 value 属性)  ② 通过模型属性的对象类型指定哪些模型属性需要放到会话中(使用 @SessionAttributes 的 types 属性)

    2)演示;

    4. @ModelAttribute 注解 (类似于 Struts2 中的 Preparable)

    1)应用场景:只对一个对象的部分属性进行修改,而不需要修改的属性需要保持原样不能为 null

    2)具体使用及注意事项:

    3)使用 @ModelAttribute 注解在 SpringMVC 中的源码分析 (了解)

    4)结论,需要记住

    5)补充

    十、视图解析器及其流程的分析  (默认使用的是 InternalResourceView 视图解析器)

    1、 InternalResourceViewResolver 视图解析流程

    2.、 JstlView 视图解析器 (若项目中使用了 JSTL,则 SpringMVC 会自动把视图由 InternalResourceView转为 JstlView

    使用 JSTL 的 fmt 标签模拟国际化:

    1)新建三个国际化资源文件

    2)在 jsp 页面中引入 jstl,使用 fmt 标签

     

    3)在 SpringMVC 的配置文件中配置国际化资源文件

     

    3、mvc:view-controller 标签:配置直接转发的页面,配置的路径可以直接响转发的页面,而无需再经过 Handler 的目标方法

    测试:在 url 中输入:http://localhost:8888/springmvc-1/success (LZ 将 Tomcat 的端口号修改为了 8888)

    注:使用此注解必须配置另一个注解mvc:annotation-driven

    4、 自定义视图

    1)创建视图类,实现 View 接口,实现两个方法

    2)SpringMVC 配置文件中配置 BeanNameViewResolver 视图解析器

    3)测试:

    5、重定向到目标页面

     

    十一、SpringMVC 的 CRUD 小案例

    1.按照之前的步骤搭建 SpringMVC 的环境

    2.注意点:

    1)在 jsp 页面中使用 SpringMVC 的 form 表单标签

    jsp 页面:

    更正:上图中应该是 form:radiobuttons 而不是 form:checkboxes

    请求处理器类中:

    2)SpringMVC 处理静态资源文件

     

    解决:

    3)如何将 GET 请求转换为 POST 请求,再转化为 DELETE 请求

    GET 请求:

    GET ---> POST:

    4)关于 _method ,将 POST 请求转为 PUT 或 DELETE 请求

    -------------------------------------------------- Written by crawl~ Crawling on the way of programming. -------------------------------------------
  • 相关阅读:
    DEBUG 知识
    转载:telnet启动后的登录问题
    通过ip找主机名
    转载:网线的相关知识
    hdu2717(广度优先搜索)
    hdu1241(bfs)
    hdu1060 数论
    大数除(hdu2117)
    hdu1159(DP)
    hdu2181__DFS
  • 原文地址:https://www.cnblogs.com/crawl/p/7690973.html
Copyright © 2020-2023  润新知