Spring Mvc 下 Controller的开发

Controller的开发

一、请求方式的处理

可以处理任意请求。

@RequestMapping("/demo1")

(一)对于处理Get请求:

在这里插入图片描述

@GetMapping("/demo1")
//等价于:
@RequestMapping(value = "/demo1",method = RequestMethod.GET)  

(二)对于处理Post请求:

在这里插入图片描述

@RequestMapping(value = "/demo1",method = RequestMethod.POST)
//等价于:
@PostMapping("/demo1")

二、请求参数的获取

1.原来的方式:

request.getParameter("参数名");

2.现在 在spring 框架下:

@RequestMapping 注解,既可以标记在方法上,也可以标记在类。

加载类上,会跟方法上的映射结合。

在这里插入图片描述
结果显示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果显示:
在这里插入图片描述

在这里插入图片描述
演示用形参x 接收请求参数p_a
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对于post请求中文乱码的问题,在Spring MVC中默认仍然存在。需要借助其提供的一个过滤器来处理。

<!--    通过Spring mvc的过滤器来处理请求中文乱码-->
    <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>forceRequestEncoding</param-name>
            <param-value>true</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>

请求头的获取

原来的做法:

request.getHeader("头部字段");

有了框架以后:

Spring MVC支持的参数类型

  • Serlvet API的请求响应类型: ServletRequest or HttpServletRequest. ServletResponse HttpServletResponse

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T1oio39S-1599541496204)(imges/image-20200908111527561.png)]

  • Session object (Servlet API): of type HttpSession

  • java.util.Locale for the current request locale, determined by the most specific locale resolver
    available, in effect, the configured LocaleResolver / LocaleContextResolver in an MVC
    environment. 【做国际化,绑定请求参数对应的区域。】

  • @PathVariable 注解修饰的参数,用于获取URL模板变量。

    RestFUL风格的URL地址,是通过请求方式来描述(get 获取,post 新增,put 修改,delete 删除)

    以用户为例:

    /web/users    --->  get请求  返回用户列表
    /web/user【资源:名词】/1  --->  get  返回id是1 的用户信息
    /web/user    ---> post 请求  ,进行新增操作
    /web/user    ---> put 请求, 进行修改操作
    /web/user/1   ---> delete请求, 删除id是1的用户
    
  • @RequestParam 注解修饰的参数,用于获取请求参数。

  • @RequestHeader 注解修饰的参数,用于获取请求头。

  • @RequestBody 用于JSON提交的请求。前后端分离的开发模式中用的比较多。

  • @RequestPart 修饰的参数,用于文件上传的处理。

  • @SessionAttribute 配合 @SessionAttributes 访问Session域。

  • @RequestAttribute 注解修饰的参数,访问Request域。

  • java.util.Map / org.springframework.ui.Model / org.springframework.ui.ModelMap

    它们可以当成我们的 “request域” 来存储数据。

    public class RequestScopeController {
          
          
        //证明: 在Spring MVC中默认使用的是请求转发。
    
        //演示后台的controller向 前端的页面通过请求域来传值
        @RequestMapping("/demo1")
        public String demo1(HttpServletRequest request){
          
          
            request.setAttribute("aaa", 111);
            return "demo1";
        }
    
        //在Spring MVC中推荐大家使用 "域字典对象"
        @RequestMapping("/demo2")
        public String demo2(Map map){
          
          
            map.put("aaa", 222);
            return "demo1";
        }
    
        @RequestMapping("/demo3")
        public String demo3(ModelMap mp){
          
          
            mp.addAttribute("aaa",333);
            return "demo1";
        }
    
        @RequestMapping("/demo4")
        public String demo4(Model model){
          
          
            model.addAttribute("aaa",444);
            return "demo1";
        }
    }
    
  • org.springframework.validation.Errors / org.springframework.validation.BindingResult 做校验

  • @ModelAttribute 修饰的参数

猜你喜欢

转载自blog.csdn.net/weixin_47371330/article/details/108463389