用户登录代码jsp
<3(编写一个用户登录Java Web应用程序,要求使用Servelet监听器技术,当用户成功登
录后跳转到欢迎页面,在欢迎页面上显示当前在线人员的登录名称。
Login.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
登录页面
LoginServlet:
package cn.edu.qfnu.ch08.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;
/**
* Servlet implementation class LoginServlet
*/
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取用户名信息
String username=request.getParameter("username");
//将用户名信息写入Session
HttpSession session=request.getSession();
session.setAttribute("username", username);
//将用户名信息写入ServletContext
ServletContext ctx=this.getServletContext();
List onlineUserList=(List)ctx.getAttribute("onlineUserList");
//第一个用户访问时,需要初始化onlineUserList
if(onlineUserList==null){
onlineUserList=new ArrayList();
}
onlineUserList.add(username);
//更新onlineUserList
ctx.setAttribute("onlineUserList", onlineUserList);
//转到显示当前用户的Servlet
response.sendRedirect("ShowOnlineServlet");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse respon
se)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
ShowOnlionServlet:
ackage cn.edu.qfnu.ch08.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;
/**
* Servlet implementation class ShowOnlineServlet
*/
public class ShowOnlineServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ShowOnlineServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取当前用户的username
HttpSession session=request.getSession();
String username=(String)session.getAttribute("username");
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
out.print("");
out.print("");
out.print("
");
out.print("显示当前在线的所有用户名");
out.print("");
out.print("");
out.print("");
if(username!=null){
//给出注销链接
out.print(username+"欢迎访问,
注销");
}
ServletContext ctx=this.getServletContext();
List onlineUserList=(List)ctx.getAttribute("onlineUserList");
if(onlineUserList!=null&&onlineUserList.size()>0){
out.print("当前的在线用户为:");
//显示所有当前用户
for(int i=0;i
");
out.print("");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse respon
se)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
LogoutServlet:
package cn.edu.qfnu.ch08.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;
/**
* Servlet implementation class LogoutServlet
*/
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LogoutServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取session对象
HttpSession session=request.getSession();
//获取当前用户名
String username=(String)session.getAttribute("username");
//销毁session
session.invalidate();
ServletContext ctx=this.getServletContext();
//在ServletContext中删除当前用户名
List onlineUserList=(List)ctx.getAttribute("onlineUserList");
onlineUserList.remove(username);
ctx.setAttribute("onlineUserList", onlineUserList);
//重定向到ShowOnlineServlet
response.sendRedirect("ShowOnlineServlet");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse respon
se)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
经调试实验结果如图: