admin 1 anno fa
parent
commit
5ae67d1c17

+ 52 - 0
cookieeSpringBootsession/pom.xml

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.example</groupId>
+    <artifactId>cookieeSpringBootsession</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.2.2.RELEASE</version>
+    </parent>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 14 - 0
cookieeSpringBootsession/src/main/java/org/example/Main.java

@@ -0,0 +1,14 @@
+package org.example;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.context.annotation.ComponentScan;
+
+@ServletComponentScan("org.example.servlet")
+@SpringBootApplication
+public class Main {
+    public static void main(String[] args){
+        SpringApplication.run(Main.class, args);
+    }
+}

+ 47 - 0
cookieeSpringBootsession/src/main/java/org/example/controller/GoodsController.java

@@ -0,0 +1,47 @@
+package org.example.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+@Controller
+public class GoodsController {
+    @RequestMapping("/Login")
+    public String Login(@RequestParam("phone")String phone, @RequestParam("pass")String pass, HttpServletRequest request, HttpServletResponse response){
+        boolean flag = false;
+        Cookie[] cookies = request.getCookies();
+        // 如果Cookie存在,则从Cookie中调取信息
+        if(cookies != null) {
+            for (Cookie cookie : cookies) {
+                if (cookie.getName().equals(phone)) {
+                    System.out.println("cookie的时效: " + cookie.getMaxAge());
+                    System.out.println("cookie的Comment: " + cookie.getComment());
+                    System.out.println("cookie的Domain: " + cookie.getDomain());
+                    System.out.println("cookie的Name: " + cookie.getName());
+                    System.out.println("cookie的Path: " + cookie.getPath());
+                    System.out.println("cookie的Value: " + cookie.getValue());
+                    System.out.println("cookie的Secure: " + cookie.getSecure());
+                    System.out.println("cookie的Version: " + cookie.getVersion());
+                    flag = true;
+                }
+            }
+            // 如果没有Cookie,则新建一个Cookie
+        } if(flag == false){
+            LocalDateTime now = LocalDateTime.now();
+            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd_HH:mm:ss");
+            String format = LocalDateTime.now().format(dateTimeFormatter);
+            Cookie cookie = new Cookie(phone, pass + "创建的时间是:_" + format);
+            cookie.setMaxAge(10 * 60);
+            // 设置路径:cookie.setPath(“/项目名/路径”),只有访问“/项目名/路径”才会携带 Cookie
+            cookie.setPath("/");
+            response.addCookie(cookie);
+        }
+        return "Success";
+    }
+}

+ 46 - 0
cookieeSpringBootsession/src/main/java/org/example/servlet/CheckServlet.java

@@ -0,0 +1,46 @@
+package org.example.servlet;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+@WebServlet("/checkLogin")
+public class CheckServlet extends HttpServlet {
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        //得到用户名和密码
+        String username = request.getParameter("username");
+        String password = request.getParameter("password");
+        //判断用户名和密码是否为我们设置的密码
+        if (username.equals("tom") && password.equals("tom123")){
+            //得到session
+            /** request.getSession():浏览器如果没有带sessionID,该方法就会直接创建一个sessionID
+             *	并在响应结束后返回sessionID给浏览器
+             */
+            HttpSession session = request.getSession();
+            //设置最长访问间隔时间
+            session.setMaxInactiveInterval(60*60*24);
+            //将用户名存入session
+            session.setAttribute("username",username);
+            //重定向到主页面
+            response.sendRedirect(request.getContextPath()+"/mainPage");
+        }else {
+            //设置MIME类型和编码
+            response.setContentType("text/html;charset=utf-8");
+            //写回提示信息
+            PrintWriter writer = response.getWriter();
+            writer.write("<h1>账号或密码错误</h1>");
+            writer.write("<h3><a href='"+request.getContextPath()+"/login.html'>点击重新登录</a></h3>");
+        }
+    }
+
+    @Override
+    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        this.doGet(request, response);
+    }
+}

+ 38 - 0
cookieeSpringBootsession/src/main/java/org/example/servlet/MainServlet.java

@@ -0,0 +1,38 @@
+package org.example.servlet;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+@WebServlet("/mainPage")
+public class MainServlet extends HttpServlet {
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        //设置响应的MIME类型和编码
+        response.setContentType("text/html;charset=utf-8");
+        //得到session
+        HttpSession session = request.getSession();
+        //取出用户名
+        Object username = session.getAttribute("username");
+        PrintWriter writer = response.getWriter();
+        //判断用户名是否存在
+        if (username != null){
+            //在一天内登录过,无需再次登录
+            writer.write("<h1>用户:"+username+" 登录成功</h1>");
+        }else {
+            //没有登录,或者登录间隔大于1天。重定向到登陆界面
+            response.sendRedirect(request.getContextPath()+"/login.html");
+        }
+    }
+
+    @Override
+    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        this.doGet(request, response);
+    }
+}
+

+ 15 - 0
cookieeSpringBootsession/src/main/resources/static/login.html

@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>login</title>
+    <base href="/">
+</head>
+<body>
+<form action="checkLogin" method="post">
+    用户名:<input type="text" name="username" /><br/>
+    密 码:<input type="password" name="password" /><br/>
+    <input type="submit" value="登录">
+</form>
+</body>
+</html>