为了方便后续的接口测试分享,本次特开发一登录接口,以供参考
环境介绍:
mysql,tomcat 8,idea
下面开始我们的接口开发
1.mysql创建用户表
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(1000) COLLATE utf8_bin DEFAULT NULL,
`pwd` VARCHAR(1000) COLLATE utf8_bin DEFAULT NULL,
`email` VARCHAR(1000) COLLATE utf8_bin DEFAULT NULL,
`phone` VARCHAR(1000) COLLATE utf8_bin DEFAULT NULL,
`addr` VARCHAR(1000) COLLATE utf8_bin DEFAULT NULL,
`token` VARCHAR(1000) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=68 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
2.在model目录下创建User类,用于存放用户数据,代码如下
package com.model;
public class User {
private long id;
private String name;
private String pwd;
private String email;
private String phone;
private String addr;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
3..在mapper目录下创建User.xml文件,代码如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 设置为UserDao接口方法提供sql语句配置 -->
<mapper namespace="com.dao.UserDao">
<!--注意这里的参数类型是parameterType而不是parameterMap,因为返回的是单个类型 -->
<!--登录语句 -->
<select id="findUserByNameAndPwd" parameterType="map" resultType="User">
select * from user where name=#{name} and pwd=#{pwd}
</select>
<!--更新token语句 -->
<update id="updateToken" parameterType="map">
update user set token=#{token} where name =#{name}
</update>
<!--查看个人信息语句 -->
<select id="userInfo" parameterType="map" resultType="User">
select * from user where name=#{name} and token=#{token}
</select>
</mapper>
4.在dao目录下创建UserDao类,代码如下
package com.dao;
import com.model.User;
import org.apache.ibatis.annotations.Param;
//该类里面的方法名需要和User.xml里的语句id保持一致
public interface UserDao {
//根据用户名和密码查询用户
//注解的两个参数会自动封装成map集合,括号内即为键
public User findUserByNameAndPwd(@Param("name") String name, @Param("pwd") String pwd);
public void updateToken(@Param("name") String name, @Param("token") String token);
public User userInfo(@Param("name") String name, @Param("token") String token);
}
5.在controller目录下新建UserAction类,代码如下
package com.controller;
import com.google.gson.Gson;
import com.model.User;
import com.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@Controller
@RequestMapping("")
public class UserAction {
//注入Service
List userRespound;
@Autowired
private UserService userService;
//登陆接口
@RequestMapping(value="login",method = {RequestMethod.POST, RequestMethod.GET})
public void login(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
userRespound=new ArrayList();
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String name=request.getParameter("name");
String password=request.getParameter("pwd");
System.out.println("用户登录:"+name+password+"方法"+request.getMethod());
User user=userService.login(name,password);
//登录成功
if(user!=null){
userRespound.add("code:1000");
userRespound.add("name:"+name);
String token=UUID.randomUUID().toString().replace("-", "");
//token存入到数据库
userService.updateToken(name,token);
userRespound.add("token:"+token);
}
//登录失败
else{
userRespound.add("code:800");
userRespound.add("login fail");
}
//页面输出josn
Gson gson = new Gson();
String json = gson.toJson(userRespound);
System.out.println(json);
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
PrintWriter out = new PrintWriter(response.getOutputStream());
out.print(json);
out.flush();
}
//查看个人信息接口
@RequestMapping(value="userInfo",method = {RequestMethod.POST, RequestMethod.GET})
public void userInfo(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
userRespound=new ArrayList();
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String name=request.getParameter("name");
String token=request.getParameter("token");
User user=userService.userInfo(name,token);
//token验证通过
if(user!=null){
userRespound.add(user);
userRespound.add("code:1000");
}
//token验证失败
else{
userRespound.add("code:800");
userRespound.add("Token failure");
}
//页面输出json
Gson gson = new Gson();
String json = gson.toJson(userRespound);
System.out.println(json);
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
PrintWriter out = new PrintWriter(response.getOutputStream());
out.print(json);
out.flush();
}
}
代码部分就到此结束了,开始运行,项目运行后
在数据库里创建一条用户数据
提交登录的请求 http://localhost:8080/login.action?name=aa&pwd=bb结果如下(每提交一次登录的请求,返回的token都会变) image.png
提交查看个人信息的接口:http://localhost:8080/userInfo.action?name=aa&token=9107fc7f5f7347ca9e6a7c19a1bb9d5b(token必须取登录返回的token才能请求成功)
image.png
网友评论