cookie和session

cookie干嘛用的

直接记录东西在浏览器

1. 用户登录界面(HTML)

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <form action="login" method="post">
        Username: <input type="text" name="username"><br>
        Password: <input type="password" name="password"><br>
        <input type="submit" value="Login">
    </form>
</body>
</html>

2. 登录Servlet

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        // 这里简化了用户验证过程,实际应用中应该查询数据库或其他用户存储
        if ("admin".equals(username) && "password123".equals(password)) {
            HttpSession session = request.getSession();
            session.setAttribute("username", username);

            // 登录成功,重定向到某个页面
            response.sendRedirect("home");
        } else {
            // 登录失败,显示错误信息
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println("<script>alert('Invalid username or password');location='login.html';</script>");
        }
    }
}

3. 使用会话的Servlet

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class HomeServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession(false);

        if (session != null && session.getAttribute("username") != null) {
            // 用户已登录
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println("<h1>Welcome, " + session.getAttribute("username") + "</h1>");
        } else {
            // 用户未登录或会话已过期
            response.sendRedirect("login.html");
        }
    }
}

4. 配置web.xml

在你的Web应用的web.xml文件中,你需要配置这些Servlet:

<web-app>
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>HomeServlet</servlet-name>
        <servlet-class>HomeServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HomeServlet</servlet-name>
        <url-pattern>/home</url-pattern>
    </servlet-mapping>
</web-app>

注意事项

  • 安全性: 这个例子非常简单,没有考虑安全性(如密码加密、SQL注入防护等)。在实际应用中,这些都是必须考虑的。
  • 会话管理: 会话可以通过cookie或URL重写来维护。确保考虑到用户禁用cookie的情况。
  • 会话过期: 应该处理会话过期的情况,例如重定向用户到登录页面。
  • 框架支持: 在实际开发中,通常会使用Spring等框架来简化会话管理和安全性控制。

Session

session是生成一个id 给浏览器 浏览器存id 当交互的时候id传给idea idea再将通过 session.getAttribute("指定属性") 拿到之前设置的属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值