持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
1.pom.xml引入fastjson依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
2.创建controller包
新建LoginServlet
@WebServlet(name = "LoginServlet", value = "/check_login")
public class LoginServlet extends HttpServlet {
Logger logger = LoggerFactory.getLogger(LoginServlet.class);
UserService userService = new UserService();
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//1.获取参数
String userName = request.getParameter("username");
String password = request.getParameter("password");
Map<String,Object> result = new HashMap<>();
//2.捕获异常
try{
User user = userService.checkLogin(userName,password);
result.put("code",0);
result.put("message","success");
}catch (BusinessException e){
logger.error(e.getMessage(),e);
result.put("code",e.getCode());
result.put("message", e.getMessage());
} catch (Exception e){
logger.error(e.getMessage(),e);
result.put("code", e.getClass().getSimpleName());
result.put("message",e.getMessage());
}
//3.返回结果
String json = JSON.toJSONString(result);
response.getWriter().println(json);
}
}
代码说明:
- /check_login:表示接口url地址
- Logger logger = LoggerFactory.getLogger(LoginServlet.class):初始化日志对象
- doPost:表单提交,通常我们采用post方式来保证数据的安全性
- request.setCharacterEncoding("utf-8"):设置请求采用utf-8编码要求
- response.setContentType("text/html;charset=utf-8"):设置返回的格式
- request.getParameter("username"):获取表单提交上来的数据
- Map<String,Object> result = new HashMap<>():定义Map对象用来返回数据对象
- userService.checkLogin(userName,password):传参用户名和密码来判断用户的合法性
- result.put("code",0):设置返回状态码code
- result.put("message","success"):设置返回信息message
- catch (BusinessException e):用来捕获业务异常
- result.put("code", e.getClass().getSimpleName()):系统的其他异常
- String json = JSON.toJSONString(result):result放到Json上
- response.getWriter().println(json):输出json结果
3.重启项目
看到以下界面,说明接口调用成功
4.登录按钮调用api
设置用户名和密码设置成必填
<script src="resources/layui/layui.js"></script>
<script>
layui.form.on("submit(login)",function (formData){
console.log(formData);
layui.$.ajax({
url:"/check_login",
data:formData.field,
type:"POST",
dataType:"json",
success:function (data){
if(data.code==0){
layui.layer.msg("登录成功");
}else{
layui.layer.msg(data.message);
}
}
});
return false;
})
</script>
5.重启项目
登录成功