From bc720e627005207ec302d7c207d96d652bd0b795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=E5=98=89=E9=98=B3?= Date: Tue, 30 Jan 2018 16:58:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=99=BB=E5=BD=95=EF=BC=8C?= =?UTF-8?q?=E7=BC=96=E5=86=99=E9=94=99=E8=AF=AF=E7=A0=81=EF=BC=8C=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E9=94=99=E8=AF=AF=E7=A0=81=E8=BF=94=E5=9B=9Ejson?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/controller/LoginController.java | 9 +++-- .../java/com/fjy/spring/domain/Result.java | 34 +++++++++++++++++++ .../java/com/fjy/spring/enums/ResultEnum.java | 28 +++++++++++++++ .../fjy/spring/exception/UserException.java | 17 ++++++++++ .../fjy/spring/handle/ExceptionHandle.java | 28 +++++++++++++++ .../com/fjy/spring/service/UserService.java | 4 ++- .../com/fjy/spring/untils/ResultUtil.java | 12 +++++++ .../login.html => templates/home.html} | 6 ++-- src/main/resources/templates/login.html | 11 +++++- .../controller/LoginControllerTest.java | 18 ++++++++-- 10 files changed, 155 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/fjy/spring/domain/Result.java create mode 100644 src/main/java/com/fjy/spring/enums/ResultEnum.java create mode 100644 src/main/java/com/fjy/spring/exception/UserException.java create mode 100644 src/main/java/com/fjy/spring/handle/ExceptionHandle.java create mode 100644 src/main/java/com/fjy/spring/untils/ResultUtil.java rename src/main/resources/{static/login.html => templates/home.html} (55%) diff --git a/src/main/java/com/fjy/spring/controller/LoginController.java b/src/main/java/com/fjy/spring/controller/LoginController.java index 8eee3ef..f3e3ff6 100644 --- a/src/main/java/com/fjy/spring/controller/LoginController.java +++ b/src/main/java/com/fjy/spring/controller/LoginController.java @@ -6,7 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; @Controller public class LoginController { @@ -14,16 +13,16 @@ public class LoginController { @Autowired private UserService userService; - @GetMapping("/index") + @GetMapping(value = {"index",""}) public String toLoginPage(){ return "login"; } @PostMapping("/login/dologin") - public boolean doLogin(TbUser tbUser){ + public String doLogin(TbUser tbUser)throws Exception{ if (userService.doLoginService(tbUser.getColname(),tbUser.getColpassword())){ - return true; + return "home"; } - return false; + return "login"; } } diff --git a/src/main/java/com/fjy/spring/domain/Result.java b/src/main/java/com/fjy/spring/domain/Result.java new file mode 100644 index 0000000..9907e5e --- /dev/null +++ b/src/main/java/com/fjy/spring/domain/Result.java @@ -0,0 +1,34 @@ +package com.fjy.spring.domain; + +/** + * Http请求返回的最外层对象 + */ +public class Result { + private Integer code; + private String message; + private T data; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } +} diff --git a/src/main/java/com/fjy/spring/enums/ResultEnum.java b/src/main/java/com/fjy/spring/enums/ResultEnum.java new file mode 100644 index 0000000..a0dcec8 --- /dev/null +++ b/src/main/java/com/fjy/spring/enums/ResultEnum.java @@ -0,0 +1,28 @@ +package com.fjy.spring.enums; + +public enum ResultEnum { + UNKOWN_ERROR(-1,"未知错误"), + SUCCESS(0,"请求成功"), + USER_NOTEXIST(101,"用户不存在"), + UPDATE_ERROR(102,"更新失败"), + DELETE_ERROR(103,"删除失败"), + ADD_ERROR(104,"添加失败"), + WRONGPASS(105,"用户名或密码错误"), + ILLEGAL_ACCESS(106,"非法访问") + ; + private Integer code; + private String msg; + + public Integer getCode() { + return code; + } + + public String getMsg() { + return msg; + } + + ResultEnum(Integer code, String msg) { + this.code = code; + this.msg = msg; + } +} diff --git a/src/main/java/com/fjy/spring/exception/UserException.java b/src/main/java/com/fjy/spring/exception/UserException.java new file mode 100644 index 0000000..a4473e5 --- /dev/null +++ b/src/main/java/com/fjy/spring/exception/UserException.java @@ -0,0 +1,17 @@ +package com.fjy.spring.exception; + +import com.fjy.spring.enums.ResultEnum; + +public class UserException extends RuntimeException{ + + private Integer code; + + public UserException(ResultEnum resultEnum) { + super(resultEnum.getMsg()); + this.code = resultEnum.getCode(); + } + + public Integer getCode() { + return code; + } +} diff --git a/src/main/java/com/fjy/spring/handle/ExceptionHandle.java b/src/main/java/com/fjy/spring/handle/ExceptionHandle.java new file mode 100644 index 0000000..3792394 --- /dev/null +++ b/src/main/java/com/fjy/spring/handle/ExceptionHandle.java @@ -0,0 +1,28 @@ +package com.fjy.spring.handle; + +import com.fjy.spring.domain.Result; +import com.fjy.spring.enums.ResultEnum; +import com.fjy.spring.exception.UserException; +import com.fjy.spring.untils.ResultUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +@ControllerAdvice +public class ExceptionHandle { + private final static Logger logger = LoggerFactory.getLogger(ExceptionHandle.class); + + @ExceptionHandler(value = Exception.class) + @ResponseBody + public Result handle(Exception e){ + if (e instanceof UserException){ + UserException userException = (UserException)e; + return ResultUtil.error(userException.getCode(),userException.getMessage()); + }else{ + logger.error("系统异常",e); + return ResultUtil.error(ResultEnum.UNKOWN_ERROR.getCode(),ResultEnum.UNKOWN_ERROR.getMsg()); + } + } +} diff --git a/src/main/java/com/fjy/spring/service/UserService.java b/src/main/java/com/fjy/spring/service/UserService.java index 38e154f..38d5515 100644 --- a/src/main/java/com/fjy/spring/service/UserService.java +++ b/src/main/java/com/fjy/spring/service/UserService.java @@ -1,6 +1,8 @@ package com.fjy.spring.service; import com.fjy.spring.domain.TbUser; +import com.fjy.spring.enums.ResultEnum; +import com.fjy.spring.exception.UserException; import com.fjy.spring.repository.TbUserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -17,6 +19,6 @@ public class UserService { if (password.equals(user.getColpassword())){ return true; } - return false; + throw new UserException(ResultEnum.USER_NOTEXIST); } } diff --git a/src/main/java/com/fjy/spring/untils/ResultUtil.java b/src/main/java/com/fjy/spring/untils/ResultUtil.java new file mode 100644 index 0000000..3101824 --- /dev/null +++ b/src/main/java/com/fjy/spring/untils/ResultUtil.java @@ -0,0 +1,12 @@ +package com.fjy.spring.untils; + +import com.fjy.spring.domain.Result; + +public class ResultUtil { + public static Result error(Integer code,String msg){ + Result result = new Result(); + result.setCode(code); + result.setMessage(msg); + return result; + } +} diff --git a/src/main/resources/static/login.html b/src/main/resources/templates/home.html similarity index 55% rename from src/main/resources/static/login.html rename to src/main/resources/templates/home.html index 2443076..38c6cf8 100644 --- a/src/main/resources/static/login.html +++ b/src/main/resources/templates/home.html @@ -2,9 +2,11 @@ - 登录 + 主页 -

登录系统

+
+

欢迎访问主页

+
\ No newline at end of file diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 2443076..75edb52 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -5,6 +5,15 @@ 登录 -

登录系统

+
+

登录系统

+
+

用户名: +

+

密码: +

+ +
+ \ No newline at end of file diff --git a/src/test/java/com/fjy/spring/controller/LoginControllerTest.java b/src/test/java/com/fjy/spring/controller/LoginControllerTest.java index faf5232..0d6777d 100644 --- a/src/test/java/com/fjy/spring/controller/LoginControllerTest.java +++ b/src/test/java/com/fjy/spring/controller/LoginControllerTest.java @@ -11,6 +11,7 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import static org.junit.Assert.*; + @RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc @@ -20,9 +21,20 @@ public class LoginControllerTest { private MockMvc mvc; @Test - public void toLoginPage() throws Exception{ + public void toLoginPage() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/index")) - .andExpect(MockMvcResultMatchers.status().isOk()) - .andExpect(MockMvcResultMatchers.content().string("/login")); + .andExpect(MockMvcResultMatchers.status().isOk()); + } + + @Test + public void doLogin() throws Exception { + mvc.perform(MockMvcRequestBuilders.post("/login/dologin").param("colname", "root").param("colpassword", "root")) + .andExpect(MockMvcResultMatchers.status().isOk()); + mvc.perform(MockMvcRequestBuilders.post("/login/dologin").param("colname", "root").param("colpassword", "123")) + .andExpect(MockMvcResultMatchers.content().json("{\n" + + " \"code\": 101,\n" + + " \"message\": \"用户不存在\",\n" + + " \"data\": null\n" + + "}")); } } \ No newline at end of file