SpringMVC-请求处理

男娘i 2022-10-18 04:59 299阅读 0赞

SpringMVC获取请求带来的各种信息

    • 一、默认方法获取参数
    • 二、获取请求参数的值-@RequestParam
      • @RequestParam(“user”)与 @PathVariable(“user”)区别
    • 三、获取请求头中的信息-@RequestHeader
    • 四、获取请求中带来的某个cookie的值-@CookieValue
    • 五、传入-POJO
    • 解决乱码问题

一、默认方法获取参数

直接给方法入参写一个和请求名请求名相同的变量,这个变量就来接收请求参数的值
在这里插入图片描述

运行截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、获取请求参数的值-@RequestParam

参数默认是必带的
http://localhost:8080/SpringMVC/hand01? 报错400

@RequestParam(“user”)String usrname
usrname=requeset.getParameter(“user”);

value:指定要获取的参数的key(浏览器地址栏里的参数)
required:参数是否必带,required=false:不带不报错
defaultValue:不带参数时显示的值,默认为null

  1. @RequestMapping("/hand01")
  2. public String hand01(@RequestParam(value="user",required=false,defaultValue="ss")String usrname){
  3. System.out.println("变量:"+usrname);
  4. return "success";
  5. }

在这里插入图片描述

@RequestParam(“user”)与 @PathVariable(“user”)区别

在这里插入图片描述

三、获取请求头中的信息-@RequestHeader

request.getHeader(“User-Agent”)
@RequestHeader(“User-Agent”)String userAgent
userAgent=request.getHeader(“User-Agent”)

三个属性同@RequestParam

  1. @RequestMapping("/hand01")
  2. public String hand01(@RequestHeader("User-Agent")String userAgent){
  3. System.out.println("请求头中浏览器的信息:"+userAgent);
  4. return "success";
  5. }

以前获取某个cookie的操作

  1. Cookie[] cookies = request.getCookies();
  2. for(Cookie c:cookies){
  3. if(c.getName().equals("SESSIONID")){
  4. String cv = c.getValue();
  5. }
  6. }

@CookieValue

  1. @RequestMapping("/hand01")
  2. public String hand01(@CookieValue(value="JSESSIONID",required=false)String jid){
  3. System.out.println("cookie中jid的值:"+jid);
  4. return "success";
  5. }

五、传入-POJO

如果我们的请求参数数一个POJO
SpringMVC自动为这个POJO进行赋值:
1)将POJO中的每个属性,从request参数中尝试获取出来,并封装
2)还可以级联封装;属性的属性

  1. @RequestMapping("/book")
  2. public String addBook(Book book){
  3. System.out.println("我要保存的图书:"+book);
  4. return "success";
  5. }
  6. package com.jh.book;
  7. public class Book {
  8. private String bookName;
  9. private String author;
  10. private Double price;
  11. private Integer stock;
  12. private Integer sales;
  13. private Adress adress;
  14. package com.jh.book;
  15. public class Adress {
  16. private String province;
  17. private String city;
  18. private String street;
  19. <form action="book" method="post">
  20. 书名:<input type="text" name="bookName"><br>
  21. 作者:<input type="text" name="author"><br>
  22. 价格:<input type="text" name="price"><br>
  23. 库存:<input type="text" name="stock"><br>
  24. 销量:<input type="text" name="sales"><br>
  25. <hr>
  26. 作者省: <input type="text" name="Adress.province">
  27. 市: <input type="text" name="Adress.city">
  28. 街道: <input type="text" name="Adress.street">
  29. <br>
  30. <input type="submit">
  31. </form>

解决乱码问题

提交的数据可能乱码

1.请求乱码
GET请求:改server.xml

  1. <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

POST请求:web.xml配置filter

web.xml中配置如下即可

  1. <!-- 配置一个字符编码的filter -->
  2. <filter>
  3. <filter-name>CharacterEncodingFilter</filter-name>
  4. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  5. <!-- encoding:指定解决POST请求乱码 -->
  6. <init-param>
  7. <param-name>encoding</param-name>
  8. <param-value>UTF-8</param-value>
  9. </init-param>
  10. <!-- forceEncoding:顺手解决响应乱码 -->
  11. <init-param>
  12. <param-name>forceEncoding</param-name>
  13. <param-value>true</param-value>
  14. </init-param>
  15. </filter>
  16. <filter-mapping>
  17. <filter-name>CharacterEncodingFilter</filter-name>
  18. <url-pattern>/*</url-pattern>
  19. </filter-mapping>

2.响应乱码
response.setContentType(“Text/html;charset=utf-8”)

发表评论

表情:
评论列表 (有 0 条评论,299人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Springmvc请求处理

    在上两篇中,我们简单的介绍了web模式下bean的注入以及ioc容器的创建时间。那么,在容器创建之后,servletContext会持有ioc容器,以便在后面去处理业务逻辑

    相关 SpringMVC处理ajax请求

    由于之前我写过几篇关于如何搭建SpringMVC项目的日志,故在本文中不在写各种配置怎么写。只写涉及到处理ajax请求的代码。如果有想了解SpringMVC项目怎么搭建的朋友,

    相关 springmvc异步处理请求

    有两种情况,第一种是业务逻辑复杂,但不需要业务逻辑的结果,第二种是需要返回业务逻辑的处理结果 第一种比较简单,利用多线程处理业务逻辑,或者利用spring中@Asyn注