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

该文章是关于SpringMVC的教程,详细介绍了@Controller和@RequestMapping注解的用法,包括类作用域、value、method、params和headers属性。同时,文章还讲解了如何通过不同方式获取请求参数,如HttpServletRequest、方法形参、@RequestParam以及实体类对象,并提到了中文乱码的解决方案。
摘要由CSDN通过智能技术生成

系列文章目录

第一章 MVC模式
第二章 让程序run起来
第三章 @Controller、@RequestMapping 注解和获取请求参数
第四章 域对象、视图、转发和重定向
第五章 第五章 实现RESTful
第六章 MVC类型转换器、格式化器
第七章 JSON数据交互
第八章 拦截器实现权限验证、异常处理
第九章 文件上传、下载
第十章 使用logback+Slf4j打印日志
第十一章 单体架构任务调度



在这里插入图片描述


前言

使用@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>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青花锁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值