登陆页面: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);
}
}