Spring boot 对RESTful的支持
1.什么是RESTful
RESTful是目前最流行的一种互联网软件架构
2.按照REST的思想我们来设计一组对用户操作的RESTful API:
|请求 | 地址 |说明
|GET | /users |查询所有数据
|GET | /users |根据Id查询
|Post |/users |新增
|Put |/users |修改
|Delete | /users |删除
编写实体类
package com.lm.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("sys_user")
public class SysUser {
@TableId(type = IdType.AUTO)
@TableField("user_id")
private long userId;
@TableField("user_name")
private String userName;
@TableField("user_password")
private String userPassword;
@TableField("user_role_id")
private long userRoleId;
@TableField("user_flag")
private long userFlag;
public SysUser(long userId, String userName, String userPassword, long userRoleId, long userFlag) {
this.userId = userId;
this.userName = userName;
this.userPassword = userPassword;
this.userRoleId = userRoleId;
this.userFlag = userFlag;
}
public long getUserId() {
return userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public long getUserRoleId() {
return userRoleId;
}
public void setUserRoleId(long userRoleId) {
this.userRoleId = userRoleId;
}
public long getUserFlag() {
return userFlag;
}
public void setUserFlag(long userFlag) {
this.userFlag = userFlag;
}
}
Mapper接口
public interface UserMapper extends BaseMapper<SysUser> {
public IPage<SysUser> selectPage(IPage page, @Param("ew") Wrapper queryWrapper);
}
Service
记得实现service接口
编写UserController
package com.lm.controller;
import com.lm.pojo.SysUser;
import com.lm.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.List;
@Controller
public class UserController {
@Resource
UserService userService;
@PostMapping("/user/login")
public String getlogin(String userName,String userPassword, Model model, HttpSession session){
SysUser sysUser= userService.login(userName,userPassword);
System.out.println(sysUser);
if (sysUser!=null){
session.setAttribute("loginUser",sysUser);
return "main";
}else {
model.addAttribute("msg","用户名或密码错误,登录失败");
return "login";
}
}
@GetMapping("/users")
public List<SysUser> findAllUsers(){
List<SysUser> list=userService.findAllUsers();
return list;
}
@GetMapping("/user/{id}")
public SysUser getUser(@PathVariable("id") Long userId){
SysUser sysUser=userService.getSysUser(userId);
return sysUser;
}
@PostMapping("/user/add")
public void addUser(String userName,String userPassword,String userRoleId,String userFlag){
SysUser sysUser=new SysUser(1,userName,userPassword,Integer.parseInt(userRoleId),Integer.parseInt(userFlag));
userService.addSysUser(sysUser);
}
@PutMapping("/user/update")
public void updateUser(String userId,String userName,String userPassword,String userRoleId,String userFlag){
SysUser sysUser=new SysUser(Integer.parseInt(userId),userName,userPassword,Integer.parseInt(userRoleId),Integer.parseInt(userFlag));
userService.updateSysUser(sysUser);
}
@DeleteMapping("/user/delete/{id}")
public void deleteUser(@PathVariable("id") Long userId){
userService.deleteSysUser(userId);
}
@GetMapping("/login")
public String login(){
return "login";
}
@GetMapping("/main")
public String main(){
return "main";
}
}
Web测试的
package com.lm;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MockMvcBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.context.WebApplicationContext;
import javax.annotation.Resource;
@SpringBootTest
@RunWith(SpringRunner.class)
public class UserControllerTester {
@Resource
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setup(){
this.mockMvc= MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void testGetUser(){
try {
String mvcResult=mockMvc.perform(MockMvcRequestBuilders.get("/user/29")).andReturn().getResponse()
.getContentAsString();
System.out.println(mvcResult);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testAddUser(){
final MultiValueMap<String,String> params=new LinkedMultiValueMap<>();
params.add("userName","RESTful1111");
params.add("userPassword","123456");
params.add("userRoleId","9");
params.add("userFlag","1");
try {
mockMvc.perform(MockMvcRequestBuilders.put("/user/add").params(params))
.andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print());
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testupdate(){
final MultiValueMap<String,String> params=new LinkedMultiValueMap<>();
params.add("userId","31");
params.add("userName","REST");
params.add("userPassword","123456");
params.add("userRoleId","9");
params.add("userFlag","1221");
try {
mockMvc.perform(MockMvcRequestBuilders.put("/user/update").params(params))
.andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print());
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testdelete(){
try {
String mvcResult=mockMvc.perform(MockMvcRequestBuilders.delete("/user/delete/31")).andReturn().getResponse()
.getContentAsString();
System.out.println(mvcResult);
} catch (Exception e) {
e.printStackTrace();
}
}
}
二整合JSP开发
1.创建一个web文件夹
配置一个web的资源
引入依赖
<!--添加jstl标签依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--添加jsp引擎依赖 Spring Boot内置Tomcat没有此依赖-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
编写Controller控制器
@Controller
public class UserController {
@Resource
UserService userService;
@PostMapping("/user/login")
public String getlogin(String userName,String userPassword, Model model, HttpSession session){
SysUser sysUser= userService.login(userName,userPassword);
System.out.println(sysUser);
if (sysUser!=null){
session.setAttribute("loginUser",sysUser);
return "main";
}else {
model.addAttribute("msg","用户名或密码错误,登录失败");
return "login";
}
}
}
jsp文件
成功的页面
注意:启动项目的需要配置
在这里插入图片描述
就可以正常访问了