Spring Boot整合Spring MVC
集成Spring MVC
Spring Boot整合Spring MVC只需在pom.xml中引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
配置Spring MVC,application.yml 示例:
server:
port: 8080 # web服务端口号
servlet:
multipart:
enabled: true # 启用文件上传
location: # 上传文件临时保存位置
max-file-size: 50MB # 单个文件上传最大大小限制
max-request-size: 100MB # 单次请求主体最大大小限制
mvc:
format:
date: yyyy-MM-dd # 日期格式
date-time: yyyy-MM-dd HH:mm:ss # 日期时间格式
time: HH:mm:ss # 时间格式
servlet:
path: / # servlet路径
static-path-pattern: # 匹配静态资源路径
view:
prefix: # view前缀
suffix: # view后缀,如:.jsp
用户请求参数传递
前端页面可以通过表单、url传值、ajax方式等传输数据到控制端
相关注解:
**@RequestParam**
**@PathVariable**
**@ RequestBody**
**@ ModelAttribute
**
方式1:参数名一致
若传送form表单数据,表单属性名称与Controller中方法参数名保持一致,这时可以不用注解,直接传
参。
前端页面:
username:<input type="text" name="username"><br>
tel:<input type="text" name="telephone"><br>
<input type="submit" value="注册">
</form>
控制器(Contro
ller)代码:
@RestController
public class UserController {
@RequestMapping("/user")
public String test1(String username,String telephone){
return username+"\n"+telephone;
}
}
使用url请求传参,请求的url为:
http://localhost:8080/user?username=aaa&telephone=1111,参数名和方法的属性名保持一致,同
样可以将值传输到Controller方法中。
方式2:参数名不一致
前端的参数名与Controller方法中的参数名不一致时,可以使用@RequestParam注解来指定URL参数与
方法参数之间的映射关系
username:<input type="text" name="username"><br>
tel:<input type="text" name="telephone"><br>
<input type="submit" value="注册">
</form>
控制器(Controller)代码:
@RestController
public class UserController {
@RequestMapping("/user")
public String test1(@RequestParam(value = "username",required = false) String
name, @RequestParam(value = "telephone",required = false) String tel){
return name+"\n"+tel;
}
}
默认参数值不能为空(required=true),否则会出现异常信息,可以使用required属性指明参数是否允许
为空
方式3:Restful风格
在RESTFul风格的请求中,常将参数在url中以“/param”的方式进行传递,这时就需要使用
@PathVariable注解从url中获取相应的参数值
@RestController
public class UserController {
@RequestMapping("/user/{name}/{tel}")
public String test1(@PathVariable(value = "name",required = false) String name,
@PathVariable(value = "tel",required = false) String tel){
return name+"\n"+tel;
}
}
@PathVariable注解的value属性值和地址中的第一个参数名一致,表示把此参数值传给方法的第一个参
数。
方式4:@RequestBody注解方式
前端js代码:
$.ajax({
url:"/login",
type:"POST",
data:'{"username":"admin","pwd","123"}',
contentType:"applicaation/json charset=utf-8",
success: function(data){
alert("success ! ");
}
});
控制器(Controller)代码:
@RequestMapping("/login")
public String login(@RequestBody User user){
return user.getUsername()+" :"+user.getPwd();
}
或者:
@RequestMapping("/login")
public String login(@RequestBody String username,@RequestBody String pwd){
return username+" :"+pwd;
}
用户响应处理
返回对应视图页面
如html页面或jsp页面,类名使用@Controller**注解**,即返回对应的页面
返回数据
如JSON格式的数据,若在类名或方法上结合使用了@ResponseBody**注解**,则返回 JSON格式
的数据
@RestController注解
可以在类名直接 使用@RestController注解,替代@Controller+@ResponseBody这两个注解
Spring MVC实例
1. 创建实体类User
package cn.js.ccit.vo;
import lombok.Data;
//实体类
@Data
public class User {
private Integer id;
private String username;
private String pwd;
private String telephone;
}
2. 创建前端页面 userReg.html
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
username:<input type="text" name="username"><br>
pwd:<input type="password" name="pwd"><br>
tel:<input type="text" name="telephone"><br>
<input type="submit" value="注册">
</form>
</body>
</html>
3. 创建控制端UserJSONController
/\*\*
\*返回用户数据的JSON数据
\*/
@RestController
@RequestMapping("user")
public class UserJSONController {
@RequestMapping("getUser")
public User getUser(User user){
return user;
}
}
4. 结果测试