《Spring MVC》 第三章 @Controller、@RequestMapping 注解和获取请求参数

简介: 《Spring MVC》 第三章 @Controller、@RequestMapping 注解和获取请求参数

前言

使用@Controller、@RequestMapping 注解提供Web服务,介绍如何获取请求参数。

1、@Controller

@Controller 注解可以将一个普通的 Java 类标识成控制器(Controller)类

2、@RequestMapping

2.1、类作用域

@RequestMapping("/springMvc")
public class HelloWorldController {
    @RequestMapping("/")
    public String sayHelloWorld(){
        return "index";
    }
}

2.2、value是默认属性,可以对应多个地址

@RequestMapping(value = {"/register","/login"})
public String register(){
    return "register";
}

2.3、method属性

仅支持GET请求

@RequestMapping(value = "/",method = RequestMethod.GET)

支持GET、POST请求

@RequestMapping(value = "/",method = {RequestMethod.GET,RequestMethod.POST})

2.4、params属性

params 属性用于指定请求中的参数,只有当请求中携带了符合条件的参数时,控制器方法才会对该请求进行处理

序号 表达式 含义
“param” 请求中必须携带名为 param 的参数
“!param” 与表达式 ① 的含义完全相反,请求中不能携带名为 param 的参数
“param=value” 请求中必须携带名为 param 的参数,且参数的取值必须为:value
“param!=value” 与表达式 ③ 的含义完全相反,请求中不能携带参数:param = value。

2.5、headers属性

headers 属性用于设置请求中请求头信息,只有当请求中携带指定的请求头信息时,控制器方法才会处理该请求。

序号 表达式 含义
“header” 请求必须携带请求头信息:header
“!header” 与表达式 ① 的含义完全相反,请求中不能携带请求头信息:header
“header=value” 请求中必须携带请求头信息:header=value 。
“header!=value” 与表达式 ③ 的含义完全相反,请求中不能携带请求头信息:header=value。

2.6、value可用通配符表示

通配符 说明
? 表示任意的单个字符。
* 表示任意的 0 个或多个字符。
** 表示任意的一层或多层目录。
注意,在使用该通配符时,其使用方式只能时是"/**/xxx"。

3、获取请求参数

Spring MVC 提供了多种获取请求参数的方式

3.1、通过 HttpServletRequest 获取请求参数

@RequestMapping("/register")
    public String register(HttpServletRequest request){
        String userName= request.getParameter("userName");
        String password = request.getParameter("pwd");
        log.info("用户:{} , 密码:{}" , userName, password);
        return "register";
    }

3.2、通过控制器方法的形参获取请求参数

@PostMapping(value = "/register")
public ModelAndView register(String userName,String password){
    log.info("用户:{} , 密码:{}" , userName, password);
        ModelAndView modelAndView = new ModelAndView();
     //给request对象设置一个属性
      modelAndView.addObject("userName","zhangsan");
      //设置跳转的视图
      modelAndView.setViewName("success");
      return modelAndView;
}

3.3、使用 @RequestParam 注解获取请求参数

@PostMapping(value = "/register")
public ModelAndView register(@RequestParam("userName") String userName,@RequestParam("password") String password){
    log.info("用户:{} , 密码:{}" , userName, password);
        ModelAndView modelAndView = new ModelAndView();
     //给request对象设置一个属性
      modelAndView.addObject("userName","zhangsan");
      //设置跳转的视图
      modelAndView.setViewName("success");
      return modelAndView;
}

3.4、通过实体类对象获取请求参数(推荐)

<form th:action="@{/register}" method="post">
    用户名:<input type="text" name="userName"/><br/>
    密码:<input type="password" name = "password"/><br/>
    <button type="submit">提交</button>
    <button type="reset">重置</button>
</form>
@PostMapping(value = "/register")
public ModelAndView register(User user){
  log.info("用户:{} , 密码:{}" , user.getUserName(), user.getPassword());
    ModelAndView modelAndView = new ModelAndView();
    //给request对象设置一个属性
    modelAndView.addObject("userName","zhangsan");
    //设置跳转的视图
    modelAndView.setViewName("success");
    return modelAndView;
}

3.5、中文乱码解决:(web.xml增加以下的过滤器)

<!--请求和响应的字符串过滤器-->
    <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>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


目录
相关文章
|
9天前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
28 0
|
16天前
|
XML JSON Java
SpringBoot必须掌握的常用注解!
SpringBoot必须掌握的常用注解!
41 4
SpringBoot必须掌握的常用注解!
|
18天前
|
存储 缓存 Java
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
58 2
|
18天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
33 1
|
13天前
|
存储 安全 Java
springboot当中ConfigurationProperties注解作用跟数据库存入有啥区别
`@ConfigurationProperties`注解和数据库存储配置信息各有优劣,适用于不同的应用场景。`@ConfigurationProperties`提供了类型安全和模块化的配置管理方式,适合静态和简单配置。而数据库存储配置信息提供了动态更新和集中管理的能力,适合需要频繁变化和集中管理的配置需求。在实际项目中,可以根据具体需求选择合适的配置管理方式,或者结合使用这两种方式,实现灵活高效的配置管理。
10 0
|
Java Spring
spring 4.3新特性之@RequestMapping注解细化
spring 4.3新特性之@RequestMapping注解细化
179 0
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
1月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
163 2
|
11天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
23 2
 SpringBoot入门(7)- 配置热部署devtools工具
|
7天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
18 2