《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>


目录
相关文章
|
2天前
|
SQL Java 数据库连接
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
52 34
|
2月前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
62 4
|
3月前
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
59 4
|
3月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
201 2
|
3月前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
78 2
|
3月前
|
前端开发 Java 开发者
Spring MVC中的控制器:@Controller注解全解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序控制层的核心。它不仅简化了控制器的定义,还提供了灵活的请求映射和处理机制。本文将深入探讨`@Controller`注解的用法、特点以及在实际开发中的应用。
152 0
|
4月前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
9月前
|
Java API Spring
Spring容器如何使用一个注解来指定一个类型为配置类型
Spring容器如何使用一个注解来指定一个类型为配置类型
73 0
|
2月前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
175 73
|
4月前
|
XML Java 数据格式
手动开发-简单的Spring基于注解配置的程序--源码解析
手动开发-简单的Spring基于注解配置的程序--源码解析
62 0