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
orHttpServletRequest
.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
修饰的参数