springmvc入门
springmvc概述
controller层的框架,代替Servlet,处理请求和响应。
springmvc快速入门
@Controller:将Bean交给Spring管理
,创建对象保存到Spring容器中。
@RequestMapping:定义映射路径。
位置:写在类上表示一级路径。如果类上有映射路径,写在方法上就表示二级路径。最终的方法路径一级路径+二级路径。
通过jar包运行程序
【第一步】package打包
【第二步】在cmd中:java -jar jar包的名称
配置文件中,修改虚拟目录和端口号
server:
port: 8080 # 端口号
servlet:
context-path: /springmvc_01
Springmvc响应
响应普通字符串
@ResponseBody:可以写在类上或者方法上,表示方法返回值不是页面跳转,而是通过响应体响应数据。
@RestController:写在类上,等价于@Controller+@ResponseBody注解的作用。
响应json数据
做法:在Controller方法中返回值为java对象,SpringMVC会自动将java对象转换成json响应给客户端。
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“Asia/Shanghai”)
作用:格式化,pattern指定格式化模式,timezone指定日期时区。
@JsonIgnore:忽略该属性,不转换到json中
@JsonInclude(JsonInclude.Include.NON_NULL)
作用:该属性值非空才会被转换到json中
Springmvc响应
接收普通类型参数
@RequestMapping(“/req1”)
public String req1(String name,Integer age){…}
@RequestParam:写在参数位置,将指定名称的请求参数赋值给当前变量。
@RequestMapping(“/req1”)
public String req1(@RequestParam(“username”) String name,Integer age){…}
接收POJO类型参数
@RequestMapping(“/req2”)
public String req2(User user){…} //封装普通表单参数(name=value&name=value&…)
接收JSON格式参数
@RequestBody:写在方法参数上:将请求体中的json数据转换成java对象,底层使用jackson转换。
使用@RequestBody 需要满足两个条件:①、有请求体。②、参数为json格式
@RequestMapping(“/req3”)
public String req3(@RequestBody User user){…} //将请求体中的json转换成java对象
@ResponseBody和@RequestBody和@RequestParam的区别?
@ResponseBody:写类或者方法上,表示不进行页面跳转,响应数据。
@RequestBody:写在方法参数上,表示将请求体中的json数据转换成java对象。
@RequestParam:将指定名称的请求参数赋值给方法变量,解决请求参数和变量名不一样的问题。
接收日期类型参数
@DateTimeFormat:指定日期的格式
@RequestMapping(“/req4”)
public String req4(@DateTimeFormat(pattern = “yyyy-MM-dd”) Date birthday){…}
接收请求头和Cookie
@RequestMapping(“/req5”)
public String req5(@RequestHeader(“user-agent”) String userAgent,
@CookieValue(“username”) String username){…}
Servlet原生Api的使用
@RequestMapping(“/req6”)
public String req6(HttpServletRequest request, HttpSession session){}