案例:使用上下文域ServletContext得到该用户是第几位登陆的用户

登陆页面:index.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
</head>
<body>
<h2>用户登录</h2>
<form action="login" method="post">
    <table>
        <tr>
            <td>用户名</td>
            <td><input type="text" name="username"/></td>
        </tr>
        <tr>
            <td>密码</td>
            <td><input type="password" name="password"/></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="登录"/></td>
        </tr>
    </table>
</form>
</body>
</html>

LoginServlet.java:
在init()方法中设置上下文域中的初始人数为0,然后判断用户密码是否正确,用户名正确则登陆成功,将之前上下文域中的值取出来+1之后再存回去,接着转发另一个页面显示登陆成功信息。

import javax.servlet.ServletContext;
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 java.io.IOException;
import java.io.PrintWriter;

/**
 1. 判断用户是否登录
 2. 将登录成功的计数放在上下文域中 */
@WebServlet(name = "LoginServlet", urlPatterns = "/login")
public class LoginServlet extends HttpServlet {

    //第1个用户访问的时候执行,执行1次
    @Override
    public void init() throws ServletException {
        //初始化,向上下文域中保存一个count=0
        getServletContext().setAttribute("count", 0);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //得到用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //登录
        if ("admin".equals(username) && "123".equals(password)) {
            //取出上下文域中值
            ServletContext application = getServletContext();
            //取出对象,转成int类型
            int count = (int) application.getAttribute("count");
            //加1,放回到上下文域中,count是键名
            application.setAttribute("count", ++count);
            //重定向,count是访问地址
            response.sendRedirect("count");
        }
        else {
            //登录失败
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            out.print("登录失败<br/>");
            out.print("<a href='index.html'>请重试</a>");
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

CountServlet.java:
显示第几位用户的Servlet,将上下文域中的值取出,显示在页面上。

import javax.servlet.ServletContext;
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 java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "CountServlet", urlPatterns = "/count")
public class CountServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        //得到上下文域
        ServletContext application = getServletContext();
        out.print("<h2>欢迎您,登录成功。你是第" + application.getAttribute("count") + "个登录的用户</h2>");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值