Spring MVC学习 (一)

本文介绍了Spring MVC的基础概念,包括三层架构、MVC模型和Spring MVC的优势。详细讲解了Spring MVC的入门程序,包括请求处理流程和@RequestMapping注解的使用。此外,还探讨了请求参数的绑定机制和常用注解如@RequestParam、@RequestBody和@PathVariable的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring MVC学习 (一)

1. 概念

1.1 三层架构

C/S架构:客户端/服务端架构

B/S架构:浏览器/服务端架构

服务器端三层架构

image-20210201114311265

1.2 MVC模型

  1. M model: 模型 (javaBean)
  2. V View: 视图 (JSP)
  3. C Controller: 控制器 (servlet)

1.3 Spring MVC

概念:

基于java的实现MVC设计模型的请求驱动类型的轻量级Web框架 其他的(structs2)

通过一套注解,让一个简单的Java类成为处理请求的控制器, 支持RESTful编程风格

优势:

  1. 清晰的角色划分: 前端控制器、请求到处理映射、 处理器适配器 。。
  2. 分工明确, 拓展灵活
  3. 等等

2. 入门程序

2.1 流程

  1. 启动服务器, 加载配置文件

    a. DispacherServlet对象创建

    b. 加载springmvc.xml 配置文件

    c. 创建controller对象

  2. 发送请求, 后台处理请求

    a. 通过超链接发送请求

    b. 执行RequestMapping映射的方法

    c. 返回字符串

    d. 视图解析器根据该字符串找到跳转页面

基于组件的执行流程

image-20210201202009080

2.2 @RequestMapping

作用: 用于简历请求URL和处理请求方法之间的对应关系

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping

注解参数:

  1. path: 指定超链接路径
  2. value: 等同于path
  3. method: 请求方法(get、post)
  4. params: 指定限制请求参数的条件(该请求必须带有指定参数)
  5. headers: 发送的请求中必须包含该请求头

3. 请求参数的绑定

3.1 请求参数绑定说明

  1. 绑定机制

要求表单的name和参数的名称相同

  1. 支持的数据类型

基本数据类型和字符串

实体类型

集合类型

  1. 解决中文乱码

a. 增加tomcat vm option: -Dfile.encoding=UTF-8

b. 增加过滤器

<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>
    <init-param>  <!--强制使用Encoding设置的编码格式-->

    <param-name>forceEncoding</param-name>

    <param-value>true</param-value></init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

3.2 集合属性数据

  1. list
list0: <input type="text" name="list[0]" />
list1: <input type="text" name="list[1]" />
  1. map
mapa: <input type="text" name="map[a]" />
mapb: <input type="text" name="map[b]" />

4. 常用注解

4.1 @RequestParam

作用: 把请求中指定名称的参数给控制器中的形参赋值

属性: value: 请求参数的名称 ; required: 请求参数中是否必须提供此参数(默认true)

// 当请求的参数名称与方法形参名称不一致时可用
@RequestMapping(path="/test")
public String test(@RequestParam(value = "name") String username)

4.2 @RequestBody

作用: 用于获取请求体中的内容

属性:required:是否必有请求体

@RequestMapping(path="/test")
public String test(@RequestBody String body){ //获取请求体
    System.out.println(body);
}

4.3 @PathVaribale

作用: 用于绑定uri中的占位符

属性: value:占位符名称 ; required

4.4 其他注解

@RequestHeader

获取请求头

@CookieValue

把指定cookie名称的值传入控制器方法参数

@ModelAttribution

作用: 1.作用在方法上: 当前方法会在控制器的方法前执行 ; 2.作用参数上: 获取指定的数据给参数赋值

属性: value:用于获取数据的key

@SessionAttribution

所用: 用于多次执行控制器方法间的参数共享

属性: value;type

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值