package chapter03.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
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;
import chapter03.model.User;
/**
* 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 {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost
(HttpServletRequest request, HttpServletResponse response
) throws ServletException,
IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=GBK");
String action
= request.
getParameter("action");
if ("login".equals(action)){
login(request, response);
}
else if ("check".equals(action)){
check(request, response);
}
else if ("logout".equals(action)){
logout(request, response);
}
else{
unlogin(request, response);
}
}
private void login
(HttpServletRequest request, HttpServletResponse response
) throws ServletException,
IOException {
String loginUrl
= "/login.html";
String fileUrl
= "/login?action=check";
HttpSession session = request.getSession();
String userName
= request.
getParameter("user_name");
String password
= request.
getParameter("login_password");
// 验证用户ID和密码是否合法,略...
ServletContext context = getServletContext();
if (userName == null || userName.equals("")) {
RequestDispatcher dispatcher =
context.getRequestDispatcher(loginUrl);
response.setContentType("text/html;charset=GBK");
dispatcher.forward(request, response);
return;
}
// 登录成功,设置session中的属性
else{
User user = new User();
user.setUserName(userName);
session.setAttribute("User", user);
RequestDispatcher dispatcher = context.getRequestDispatcher(fileUrl);
dispatcher.forward(request, response);
}
}
private void check
(HttpServletRequest request, HttpServletResponse response
) throws ServletException,
IOException {
HttpSession session = request.getSession();
User user = (User)session.getAttribute("User");
if (user == null) { // 若未登陆,则先跳转到登录页面
response.setContentType("text/html;charset=GBK");
response.setHeader("Refresh", "3; URL=login.html");
out.println("<FONT color='red'>请先登录!</FONT><BR>");
out.println("<FONT color='blue'>3秒后跳转到登录页面...</FONT>");
out.close();
return;
}
else if(user.getUserName().equals("sss"))
{
String loginURL
= "login?action=login";
String logoutURL
= "login?action=logout";
response.setContentType("text/html;charset=GBK");
out.println("<HTML><HEAD><TITLE>MailServlet:check</TITLE></HEAD>");
out.println("<body>");
out.println("当前用户为:" + user.getUserName());
out.println("<p><p>");
out.println("你的邮箱中有100封邮件");
out.println("<p><p>");
out.println("<a href='" + loginURL + "'>登陆</a>");
out.println("<a href='" + logoutURL + "'>注销</a>");
out.println("</body></html>");
out.close();
}
else
{
String loginURL
= "login?action=login";
response.setContentType("text/html;charset=GBK");
out.println("<HTML><HEAD><TITLE>MailServlet:check</TITLE></HEAD>");
out.println("<body>");
out.println(user.getUserName() + "您好!");
out.println("<p><p>");
out.println("<FONT color='red'>您无权访问邮件系统。</FONT>");
out.println("<p><p>");
out.println("请重新<a href='" + loginURL + "'>登陆</a>邮件系统!!");
out.println("</body></html>");
out.close();
}
}
private void logout
(HttpServletRequest request, HttpServletResponse response
) throws ServletException,
IOException {
HttpSession session = request.getSession();
User user = (User)session.getAttribute("User");
String name
= user.
getUserName();
session.invalidate();
String loginURL
= "login?action=login";
out.println("<HTML><HEAD><TITLE>MailServlet:logout</TITLE></HEAD>");
out.println("<body>");
out.println(name + ",再见!");
out.println("<p><p>");
out.println("<a href='" + loginURL + "'>重新登录邮件系统</a>");
out.println("</body></html>");
out.close();
}
private void unlogin
(HttpServletRequest request,HttpServletResponse response
) throws ServletException,
IOException {
String loginURL
= "login?action=login";
response.setContentType("text/html;charset=GBK");
out.println("<HTML><HEAD><TITLE>MailServlet:unlogout</TITLE></HEAD>");
out.println("<body>");
out.println("您好!");
out.println("<p><p>");
out.println("请您先<a href='" + loginURL + "'>登陆</a>邮件系统!");
out.println("</body></html>");
out.close();
}
}