⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loginservlet.java

📁 jsp+javabean写的论坛
💻 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 + -