📄 loginservlet.java
字号:
package com.alumni.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import com.alumni.bean.*;
public class LoginServlet extends HttpServlet
{
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
//调用doPost方法
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
this.doPost(request,response);
}
//doPost核心方法
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
//session
HttpSession session=request.getSession(true);
//application
ServletContext application=this.getServletConfig().getServletContext();
//out
PrintWriter out=response.getWriter();
//连接数据库对象
DBConnection dbConn=null;
StringBuffer query=null;
ResultSet rs=null;
Statement stmt=null;
Connection conn=null;
Hashtable list=null;
//设定响应报头
response.setContentType("text/html");
//获取并格式化表单数据
String username=formatString(request.getParameter("username"));
String password=formatString(request.getParameter("password"));
String cookieSetting=formatString(request.getParameter("cookieSetting"));
String skin=formatString(request.getParameter("skin"));
//用户基本信息
String adminClass=null;
String userID=null;
query=new StringBuffer();
try
{
//连接到数据库
dbConn=new DBConnection();
conn=dbConn.getConnectionToAccess(application.getRealPath("/db/alumni.mdb"));
//组合查询语句
query.append("SELECT * FROM USERINFO WHERE USERNAME='");
query.append(username);
query.append("' AND PASSWORD='");
query.append(password);
query.append("'");
//执行查询
stmt=conn.createStatement();
rs=stmt.executeQuery(query.toString());
if(rs.next())
{
//获取用户管理权限和ID
adminClass=rs.getString("ADMIN_CLASS");
userID=rs.getString("ID");
//存储用户ID和密码的cookie
Cookie userIDCookie=new Cookie("alumniID",userID);
Cookie userPasswordCookie=new Cookie("alumniPassword",password);
//存储登陆界面的cookie
Cookie skinCookie=new Cookie("alumniSkin",skin);
//设定cookie存放时间
userIDCookie.setMaxAge(Integer.parseInt(cookieSetting));
userIDCookie.setPath("/");
userPasswordCookie.setMaxAge(Integer.parseInt(cookieSetting));
userPasswordCookie.setPath("/");
skinCookie.setMaxAge(Integer.parseInt(cookieSetting));
skinCookie.setPath("/");
//将cookie添加到客户端
response.addCookie(userIDCookie);
response.addCookie(userPasswordCookie);
response.addCookie(skinCookie);
//总登陆次数+1,经验值+1
String updateString="UPDATE USERINFO SET TOTAL_LOGIN=TOTAL_LOGIN+1 WHERE USERNAME='"+username+"'";
stmt.executeUpdate(updateString);
String updateExp="UPDATE USERINFO SET EXP=EXP+1 WHERE USERNAME='"+username+"'";
stmt.executeUpdate(updateExp);
//关闭数据库
if(dbConn!=null)
{
dbConn.close();
}
//添加全局属性,存放在线用户名单
list=(Hashtable)application.getAttribute("onlineList");
if(list==null)
{
list=new Hashtable();
application.setAttribute("onlineList",list);
}
Enumeration enList=list.elements();
//增加一个标签,表示该用户是否已经登陆过了
Boolean hasLogin=null;
//生成SESSION监听器
SessionListener listener=new SessionListener(application);
//如果该用户已经登陆过了,就把以前的SESSION 删除,添加一个新的SESSION绑定
while(enList.hasMoreElements())
{
HttpSession hs=(HttpSession)enList.nextElement();
String un=(String)hs.getAttribute("username");
if(un.equals(username))
{
hs.invalidate();
break;
}
}
//重新生成SESSION并登陆,存储用户基本信息在SESSION中
session=request.getSession(true);
session.setAttribute("hasLogin",new Boolean(true));
session.setAttribute("username",username);
session.setAttribute("userID",userID);
session.setAttribute("adminClass",adminClass);
session.setAttribute("listener",listener);
//转到首页
response.sendRedirect("/index.jsp");
}
else
{
//用户名或密码错误,转到错误页面
//关闭数据库
if(dbConn!=null)
{
dbConn.close();
}
response.sendRedirect("/error.jsp?code=UsernameOrPasswordErrorException");
}
}
catch(SQLException sqle)
{
//数据库错误
if(dbConn!=null)
{
dbConn.close();
}
//out.print(sqle.toString());
response.sendRedirect("/alumni/error.jsp?code=SQLException");
}
catch(ClassNotFoundException cnfe)
{
//关闭数据库
if(dbConn!=null)
{
dbConn.close();
}
response.sendRedirect("/error.jsp?code=ClassNotFoundException");
}
catch(Exception ex)
{
//关闭数据库
if(dbConn!=null)
{
dbConn.close();
}
response.sendRedirect("/error.jsp?code=UnknownException");
}
}
//格式化字符串为GB2312
private String formatString(String input) throws UnsupportedEncodingException
{
if(input==null)
{
return "";
}
else
{
return new String(input.getBytes("ISO-8859-1"),"GB2312");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -