diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 0ba92b0..4903cef 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -20,7 +20,7 @@
-
+
diff --git a/test05/pom.xml b/test05/pom.xml
index eedc7fa..e790a29 100644
--- a/test05/pom.xml
+++ b/test05/pom.xml
@@ -77,6 +77,12 @@
lombok
true
+
+
+ io.jsonwebtoken
+ jjwt
+ 0.12.3
+
diff --git a/test05/src/main/java/test05/Test05Application.java b/test05/src/main/java/test05/Test05Application.java
index 7a90406..009b481 100644
--- a/test05/src/main/java/test05/Test05Application.java
+++ b/test05/src/main/java/test05/Test05Application.java
@@ -2,7 +2,9 @@ package test05;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+@ServletComponentScan
@SpringBootApplication
public class Test05Application {
diff --git a/test05/src/main/java/test05/controller/LoginController.java b/test05/src/main/java/test05/controller/LoginController.java
new file mode 100644
index 0000000..5299f1c
--- /dev/null
+++ b/test05/src/main/java/test05/controller/LoginController.java
@@ -0,0 +1,36 @@
+package test05.controller;
+
+import jakarta.servlet.http.HttpSession;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import test05.pojo.Result;
+import test05.pojo.User;
+import test05.service.UserService;
+
+@RestController
+@RequestMapping("/userAction")
+public class LoginController {
+ private final UserService userService;
+ @Autowired
+ public LoginController(UserService userService) {
+ this.userService = userService;
+ }
+
+ @CrossOrigin
+ @RequestMapping("/login")
+ public Result login(String username, String password, HttpSession session) {
+ if (session.getAttribute("user") != null) {
+ return Result.success(session.getAttribute("user"));
+ }else if (username==null || password==null) {
+ return Result.error("login fail");
+ }
+ Result res = userService.login(new User(username, password));
+ if (res.isSuccess()) {
+ session.setAttribute("user", res.getData());
+ }
+ return res;
+ }
+
+}
diff --git a/test05/src/main/java/test05/filter/loginFilter.java b/test05/src/main/java/test05/filter/loginFilter.java
new file mode 100644
index 0000000..d21fd80
--- /dev/null
+++ b/test05/src/main/java/test05/filter/loginFilter.java
@@ -0,0 +1,20 @@
+package test05.filter;
+
+import jakarta.servlet.*;
+import jakarta.servlet.annotation.WebFilter;
+import jakarta.servlet.http.HttpServletRequest;
+
+import java.io.IOException;
+import java.util.Objects;
+
+@WebFilter("/*Action/*")
+public class loginFilter implements Filter {
+
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ if (Objects.equals(((HttpServletRequest) servletRequest).getRequestURI(), "/userAction/login")) {
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+}
diff --git a/test05/src/main/java/test05/mapper/UserMapper.java b/test05/src/main/java/test05/mapper/UserMapper.java
index 05833ca..b56eb2e 100644
--- a/test05/src/main/java/test05/mapper/UserMapper.java
+++ b/test05/src/main/java/test05/mapper/UserMapper.java
@@ -7,7 +7,7 @@ import java.util.List;
@Mapper
public interface UserMapper {
- List selectUser(User user);
+ List selectUser(User user, int page, int pageSize);
User selectUserByName(String username);
int insertUser(User user);
int deleteUser(User user);
diff --git a/test05/src/main/java/test05/pojo/Student.java b/test05/src/main/java/test05/pojo/Student.java
index 3f61bf9..ce87ca8 100644
--- a/test05/src/main/java/test05/pojo/Student.java
+++ b/test05/src/main/java/test05/pojo/Student.java
@@ -10,20 +10,20 @@ import lombok.NonNull;
@NoArgsConstructor
public class Student {
@NonNull
- private Integer N_STUDENT_ID=-1;
+ private Integer id =-1;
@NonNull
- private String VC_STUDENT_CODE="";
+ private String code ="";
@NonNull
- private String VC_STUDENT_NAME="";
+ private String name ="";
@NonNull
- private Integer N_SEX=-1;
+ private Integer sex =-1;
@NonNull
- private Integer N_GRADE=-1;
+ private Integer grade =-1;
@NonNull
- private Integer N_MAJOR=-1;
+ private Integer major =-1;
@NonNull
- private String VC_DETAIL="";
+ private String detail ="";
public Student(int id){
- N_STUDENT_ID=id;
+ this.id =id;
}
}
diff --git a/test05/src/main/java/test05/pojo/User.java b/test05/src/main/java/test05/pojo/User.java
index de14c09..c924b46 100644
--- a/test05/src/main/java/test05/pojo/User.java
+++ b/test05/src/main/java/test05/pojo/User.java
@@ -10,12 +10,16 @@ import lombok.NonNull;
@NoArgsConstructor
public class User {
@NonNull
- private Integer N_USER_ID=-1;
+ private Integer id =-1;
@NonNull
- private String VC_LOGIN_NAME ="";
+ private String name ="";
@NonNull
- private String VC_PASSWORD="";
+ private String password ="";
public User(int id){
- N_USER_ID = id;
+ this.id = id;
+ }
+ public User(@NonNull String name, @NonNull String password){
+ this.name = name;
+ this.password = password;
}
}
diff --git a/test05/src/main/java/test05/service/UserService.java b/test05/src/main/java/test05/service/UserService.java
index 67d8ff5..568d4a4 100644
--- a/test05/src/main/java/test05/service/UserService.java
+++ b/test05/src/main/java/test05/service/UserService.java
@@ -1,4 +1,13 @@
package test05.service;
+import test05.pojo.Result;
+import test05.pojo.User;
+
public interface UserService {
+ /**
+ * 用户登录服务
+ * @param user 包含用户名和密码用于比对
+ * @return 登录结果
+ */
+ public Result login(User user);
}
diff --git a/test05/src/main/java/test05/service/impl/CourseServiceImpl.java b/test05/src/main/java/test05/service/impl/CourseServiceImpl.java
index 681f4ef..ac645b6 100644
--- a/test05/src/main/java/test05/service/impl/CourseServiceImpl.java
+++ b/test05/src/main/java/test05/service/impl/CourseServiceImpl.java
@@ -20,7 +20,7 @@ public class CourseServiceImpl implements CourseService {
return "do not set N_COURSE_ID";
}
if (course.getName().length()<4||course.getName().length()>25){
- return "name too long";
+ return "name invalid";
}
if (course.getGrade()>3000||course.getGrade()<2000){
return "grade invalid";
diff --git a/test05/src/main/java/test05/service/impl/UserServiceImpl.java b/test05/src/main/java/test05/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..e6272ee
--- /dev/null
+++ b/test05/src/main/java/test05/service/impl/UserServiceImpl.java
@@ -0,0 +1,37 @@
+package test05.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import test05.mapper.UserMapper;
+import test05.pojo.Result;
+import test05.pojo.User;
+import test05.service.UserService;
+import test05.utils.JwtUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class UserServiceImpl implements UserService {
+ private UserMapper userMapper;
+ @Autowired
+ public void setUserMapper(UserMapper userMapper) {
+ this.userMapper = userMapper;
+ }
+
+ @Override
+ public Result login(User user) {
+ User selectUser = userMapper.selectUserByName(user.getName());
+ if (selectUser == null) {
+ return Result.error("user dose not exist");
+ }
+ if (selectUser.getPassword().equals(user.getPassword())) {
+ Map map = new HashMap();
+ map.put("id", selectUser.getId());
+ map.put("name", selectUser.getName());
+ return Result.success(JwtUtils.getJwt(map));
+ }else{
+ return Result.error("password incorrect");
+ }
+ }
+}
diff --git a/test05/src/main/java/test05/utils/JwtUtils.java b/test05/src/main/java/test05/utils/JwtUtils.java
new file mode 100644
index 0000000..bd87419
--- /dev/null
+++ b/test05/src/main/java/test05/utils/JwtUtils.java
@@ -0,0 +1,53 @@
+package test05.utils;
+
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.security.Keys;
+
+import javax.crypto.SecretKey;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class JwtUtils {
+ static private final SecretKey KEY=Keys.hmacShaKeyFor("12@529#5e2#54t8r8$0454g9&hj|03nb13df1h1351xY".getBytes());
+ // ms s m h d
+ static private final int[] expireTime = {0,0,0,3,0};
+
+ static public String getJwt(Map map){
+ return Jwts.builder()
+ // 设置头部信息header
+ .header()
+ .add("typ", "JWT")
+ .add("alg", "HS256")
+ .and()
+ // 设置自定义负载信息payload
+ .claim("data", map)
+ // 过期日期
+ .expiration(getExpireTime())
+ // 签名8
+ .signWith(KEY)
+ .compact();
+ }
+ static public void setExpireTime(int ms, int seconds, int minutes, int hour,int day){
+ expireTime[0] = ms;
+ expireTime[1] = seconds;
+ expireTime[2] = minutes;
+ expireTime[3] = hour;
+ expireTime[4] = day;
+ }
+ static public Date getExpireTime(){
+ return new Date(System.currentTimeMillis()
+ + (expireTime[0])
+ + (expireTime[1] * 1000L)
+ + (expireTime[2] * 60000L)
+ + (expireTime[3] * 3600000L)
+ + (expireTime[4] * 86400000L)
+ );
+ }
+ static public Map parseJwt(String jwt){
+ return Jwts.parser()
+ .verifyWith(KEY)
+ .build()
+ .parseSignedClaims(jwt).getPayload();
+ }
+}
diff --git a/test05/src/main/resources/test05/mapper/CourseMapper.xml b/test05/src/main/resources/test05/mapper/CourseMapper.xml
index a48ba70..6edd6e5 100644
--- a/test05/src/main/resources/test05/mapper/CourseMapper.xml
+++ b/test05/src/main/resources/test05/mapper/CourseMapper.xml
@@ -9,6 +9,7 @@
N_TYPE AS type,
F_CREDIT AS credit,
N_MAJOR AS major,
+ N_GRADE AS grade,
VC_DETAIL AS detail
FROM t_course
WHERE #{course.id} in (N_COURSE_ID, -1)
@@ -16,19 +17,19 @@
AND #{course.credit} in (F_CREDIT, -1)
AND #{course.major} in (N_MAJOR, -1)
AND UPPER(VC_COURSE_NAME) LIKE CONCAT('%', UPPER(#{course.name}), '%')
- ORDER BY N_COURSE_ID
- LIMIT #{page}*#{pageSize},#{pageSize}
+ ORDER BY N_COURSE_ID DESC
+ LIMIT (#{page}-1)*#{pageSize},#{pageSize}
-
+
INSERT INTO t_course
(VC_COURSE_NAME, N_TYPE, F_CREDIT, N_GRADE, N_MAJOR, VC_DETAIL)
VALUES (#{name}, #{type}, #{credit}, #{grade}, #{major}, #{detail})
diff --git a/test05/src/main/resources/test05/mapper/StudentMapper.xml b/test05/src/main/resources/test05/mapper/StudentMapper.xml
index 07606d4..f808c37 100644
--- a/test05/src/main/resources/test05/mapper/StudentMapper.xml
+++ b/test05/src/main/resources/test05/mapper/StudentMapper.xml
@@ -4,37 +4,43 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
+
INSERT INTO t_student
(VC_STUDENT_CODE, VC_STUDENT_NAME, N_SEX, N_GRADE, N_MAJOR, VC_DETAIL)
VALUES
- (#{VC_STUDENT_CODE},#{VC_STUDENT_NAME},#{N_SEX},#{N_GRADE},#{N_MAJOR},#{VC_DETAIL});
+ (#{code},#{name},#{sex},#{grade},#{major},#{detail});
DELETE
FROM t_student
- WHERE N_STUDENT_ID = #{N_STUDENT_ID};
+ WHERE N_STUDENT_ID = #{id};
UPDATE t_student
- SET VC_STUDENT_CODE=#{VC_STUDENT_CODE},
- VC_STUDENT_NAME=#{VC_STUDENT_NAME},
- N_SEX=#{N_SEX},
- N_GRADE=#{N_GRADE},
- N_MAJOR=#{N_MAJOR},
- VC_DETAIL=#{VC_DETAIL}
- WHERE N_STUDENT_ID=#{N_STUDENT_ID};
+ SET VC_STUDENT_CODE=#{code},
+ VC_STUDENT_NAME=#{name},
+ N_SEX=#{sex},
+ N_GRADE=#{grade},
+ N_MAJOR=#{major},
+ VC_DETAIL=#{detail}
+ WHERE N_STUDENT_ID=#{id};
\ No newline at end of file
diff --git a/test05/src/main/resources/test05/mapper/UserMapper.xml b/test05/src/main/resources/test05/mapper/UserMapper.xml
index 8fe7102..317475f 100644
--- a/test05/src/main/resources/test05/mapper/UserMapper.xml
+++ b/test05/src/main/resources/test05/mapper/UserMapper.xml
@@ -4,32 +4,38 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
+
INSERT INTO t_user
(VC_LOGIN_NAME, VC_PASSWORD)
VALUES
- (#{VC_LOGIN_NAME}, #{VC_PASSWORD})
+ (#{name}, #{password})
UPDATE t_user
- SET VC_PASSWORD=#{VC_PASSWORD},
- VC_LOGIN_NAME=#{VC_LOGIN_NAME}
- WHERE N_USER_ID = #{N_USER_ID};
+ SET VC_PASSWORD=#{password},
+ VC_LOGIN_NAME=#{name}
+ WHERE N_USER_ID = #{id};
DELETE
FROM t_user
- WHERE N_USER_ID = #{N_USER_ID}
+ WHERE N_USER_ID = #{id}
diff --git a/test05/src/test/java/test05/Test05ApplicationTests.java b/test05/src/test/java/test05/Test05ApplicationTests.java
index e501fe7..62b6639 100644
--- a/test05/src/test/java/test05/Test05ApplicationTests.java
+++ b/test05/src/test/java/test05/Test05ApplicationTests.java
@@ -1,13 +1,19 @@
package test05;
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.Jws;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.security.Keys;
import org.junit.jupiter.api.Test;
import org.opentest4j.TestAbortedException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import test05.mapper.*;
import test05.pojo.*;
+import test05.utils.JwtUtils;
+
+import java.util.*;
-import java.util.List;
@SpringBootTest
class Test05ApplicationTests {
@@ -23,7 +29,7 @@ class Test05ApplicationTests {
UserMapper userMapper;
@Test
- public void courseMapperTest(){
+ public void courseMapperTest() {
Course course = new Course();
course.setName("测试课程");
@@ -36,7 +42,7 @@ class Test05ApplicationTests {
courseMapper.deleteCourse(course);
}
courseMapper.insertCourse(course);
- if (course.getId()==-1){
+ if (course.getId() == -1) {
System.out.println("课程添加出阿信错误");
throw new TestAbortedException();
}
@@ -58,50 +64,17 @@ class Test05ApplicationTests {
}
@Test
- public void scoreSelectTest(){
- Score score = new Score();
- List result = scoreMapper.selectScore(score);
- System.out.println(result);
- }
-
- @Test
- public void scoreInsertTest(){
- Score score = new Score();
- score.setN_COURSE_ID(22);
- score.setN_STUDENT_ID(22);
- score.setF_SCORE(1.0F);
- scoreMapper.insertScore(score);
- }
-
- @Test
- public void scoreUpdateTest(){
- Score score = new Score();
- score.setN_COURSE_ID(22);
- score.setN_STUDENT_ID(22);
- score.setF_SCORE(2.0F);
- scoreMapper.updateScore(score);
- }
-
- @Test
- public void scoreDeleteTest(){
- Score score = new Score();
- score.setN_COURSE_ID(22);
- score.setN_STUDENT_ID(22);
- scoreMapper.deleteScore(score);
- }
-
- @Test
- public void studentMapperTest(){
+ public void studentMapperTest() {
Student student = new Student();
- student.setVC_STUDENT_CODE("2020202");
- student.setN_MAJOR(2);
- student.setVC_STUDENT_NAME("测试学生");
- student.setN_SEX(1);
- student.setN_GRADE(2022);
+ student.setCode("2020202");
+ student.setMajor(2);
+ student.setName("测试学生");
+ student.setSex(1);
+ student.setGrade(2022);
//添加学生
studentMapper.insertStudent(student);
- System.out.println(student.getN_STUDENT_ID());
- if (student.getN_STUDENT_ID()==-1) {
+ System.out.println(student.getId());
+ if (student.getId() == -1) {
System.out.println("学生信息添加出现错误");
throw new TestAbortedException();
}
@@ -113,14 +86,14 @@ class Test05ApplicationTests {
}
System.out.println(selectResult);
//修改学生
- student.setN_GRADE(2023);
+ student.setGrade(2023);
studentMapper.updateStudent(student);
selectResult = studentMapper.selectStudent(student, 0, 10);
if (selectResult.size() != 1) {
System.out.println("学生信息查询出现错误");
throw new TestAbortedException();
}
- if (selectResult.getFirst().getN_GRADE() != 2023) {
+ if (selectResult.getFirst().getGrade() != 2023) {
System.out.println("学生信息修改出现错误");
throw new TestAbortedException();
}
@@ -133,7 +106,7 @@ class Test05ApplicationTests {
}
@Test
- public void teacherMapperTest(){
+ public void teacherMapperTest() {
Teacher teacher = new Teacher();
teacher.setVC_TEACHER_NAME("测试老师");
teacher.setN_EDUC(2);
@@ -149,7 +122,7 @@ class Test05ApplicationTests {
}
//查询老师
List selectResult = teacherMapper.selectTeacher(new Teacher());
- if (selectResult.isEmpty()){
+ if (selectResult.isEmpty()) {
System.out.println("查询老师信息出现错误");
throw new TestAbortedException();
}
@@ -158,65 +131,76 @@ class Test05ApplicationTests {
//修改老师
teacherMapper.updateTeacher(teacher);
selectResult = teacherMapper.selectTeacher(teacher);
- if (selectResult.size() != 1){
+ if (selectResult.size() != 1) {
System.out.println("查询老师信息出现错误");
throw new TestAbortedException();
}
- if (selectResult.getFirst().getN_SEX()!=0) {
+ if (selectResult.getFirst().getN_SEX() != 0) {
System.out.println("老师信息修改出现错误");
throw new TestAbortedException();
}
//删除老师
teacherMapper.deleteTeacher(teacher);
selectResult = teacherMapper.selectTeacher(teacher);
- if (!selectResult.isEmpty()){
+ if (!selectResult.isEmpty()) {
System.out.println("老师信息删除出现错误");
}
}
@Test
- public void userMapperTest(){
+ public void userMapperTest() {
User user;
user = userMapper.selectUserByName("测试用户");
if (user == null) {
user = new User();
- }else{
+ } else {
userMapper.deleteUser(user);
}
- user.setVC_PASSWORD("123456");
- user.setVC_LOGIN_NAME("测试用户");
+ user.setPassword("123456");
+ user.setName("测试用户");
userMapper.insertUser(user);
- if (user.getN_USER_ID()==-1) {
+ if (user.getId() == -1) {
System.out.println("添加用户出现错误");
throw new TestAbortedException();
}
- List selectResult = userMapper.selectUser(new User());
- if (selectResult.isEmpty()){
+ List selectResult = userMapper.selectUser(new User(), 0, 10);
+ if (selectResult.isEmpty()) {
System.out.println("查询用户出现错误");
throw new TestAbortedException();
}
System.out.println(selectResult);
- user.setVC_PASSWORD("654321");
+ user.setPassword("654321");
userMapper.updateUser(user);
- selectResult = userMapper.selectUser(user);
- if (selectResult.size()!=1){
+ selectResult = userMapper.selectUser(user, 0, 10);
+ if (selectResult.size() != 1) {
System.out.println("查询用户失败");
throw new TestAbortedException();
}
- if (!selectResult.getFirst().getVC_PASSWORD().equals(user.getVC_PASSWORD())) {
+ if (!selectResult.getFirst().getPassword().equals(user.getPassword())) {
System.out.println("修改用户出现错误");
throw new TestAbortedException();
}
- User selectUser = userMapper.selectUserByName(user.getVC_LOGIN_NAME());
- if (selectUser==null){
+ User selectUser = userMapper.selectUserByName(user.getName());
+ if (selectUser == null) {
System.out.println("用户定位失败");
throw new TestAbortedException();
}
userMapper.deleteUser(user);
- selectResult = userMapper.selectUser(user);
- if (!selectResult.isEmpty()){
+ selectResult = userMapper.selectUser(user, 0, 10);
+ if (!selectResult.isEmpty()) {
System.out.println("删除用户失败");
throw new TestAbortedException();
}
}
+
+ @Test
+ public void genJwtTest(){
+ Map map = new HashMap();
+ map.put("id", "1");
+ map.put("name", "tom");
+ String jwt = JwtUtils.getJwt(map);
+ System.out.println(jwt);
+ Map result = JwtUtils.parseJwt(jwt);
+ System.out.println(result);
+ }
}