利用Servlet處理注冊登錄請求
程序結構

<%@page import="com.Gary.model.User"%> <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <% Object o = session.getAttribute("user"); if(o!=null){ User user = (User)o; out.println("當前登錄用戶:"+user.getUsername()+"<br/>"); } %> <% Object o2 = application.getAttribute("userNumber"); if(o2!=null){ out.println("當前登錄用戶"+o2+"個<br/>"); } %> <a href="login.jsp">登錄</a> <a href="register.jsp">注冊</a> </body> </html>

<%@page import="com.Gary.model.User"%> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <% Object o = session.getAttribute("user"); if(o!=null){ User user = (User)o; out.println("當前登錄用戶:"+user.getUsername()+"<br/>"); } %> <% Object msg = request.getAttribute("message"); if(msg!=null) out.println(msg); %> 登錄<hr> <form action="login_do" method="post"> 用戶名:<input type="text" name="username" /><br/> 密碼:<input type="password" name="password" /><br/> <input type="submit" value="登錄" /> </form> </body> </html>

<%@ page import="com.Gary.model.User" %> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <% //通過session的getAttribute進行訪問 User user = (User)session.getAttribute("user"); %> 用戶名:<%=user.getUsername()%><br/> 年齡:<%=user.getAge()%><br/> 性別:<%=user.getSex()%><br/> </body> </html>

<%@page import="com.Gary.model.User"%> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <% Object o = session.getAttribute("user"); if(o!=null){ User user = (User)o; out.println("當前登錄用戶:"+user.getUsername()+"<br/>"); } %> <% Object msg = request.getAttribute("message"); if(msg!=null) out.println(msg); %> <form action="register_do" method="post"> 用戶名:<input type="text" name="username" /><br/> 密碼:<input type="password" name="password" /><br/> 年齡:<input type="text" name="age" /><br/> 性別: 男<input type="radio" name="sex" value="男" />女<input type="radio" name="sex" value="女" /><br/> <input type="submit" value="注冊" /> </form> </body> </html>

package com.Gary.model; public class User { private String username; private String password; private int age; private String sex; public User(String username, String password, int age, String sex) { super(); this.username = username; this.password = password; this.age = age; this.sex = sex; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }

package com.Gary.servlet; import java.io.IOException; 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 com.Gary.model.User; import com.Gary.util.DBUtil; @WebServlet("/login_do") public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); User user = DBUtil.verifyAccount(username,password); if(user==null){ // out.println("登錄失敗,用戶名或密碼錯誤"); request.setAttribute("message","登錄失敗,用戶名或密碼錯誤"); request.getRequestDispatcher("login.jsp").forward(request,response); }else{ // out.println("登錄成功"); int number = 0; //獲取到application對象 ServletContext application = this.getServletContext(); //第一次登錄用戶時if不瞞住,number=0 if(application.getAttribute("userNumber")!=null){ number = (Integer)application.getAttribute("userNumber"); } //登錄過一個用戶后在原基礎number上進行++ number++; application.setAttribute("userNumber",number); //通過seesion的setAttribute傳遞數據 request.getSession().setAttribute("user", user); //登錄請求的轉發,將數據傳遞給personCenter.jsp頁面 request.getRequestDispatcher("personCenter.jsp").forward(request,response); } } }

package com.Gary.servlet; import java.io.IOException; 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 com.Gary.util.DBUtil; @WebServlet("/register_do") public class RegisterServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); int age = Integer.parseInt(request.getParameter("age")); String sex = request.getParameter("sex"); boolean isSuccess = DBUtil.addUser(username,password,age,sex); //使用請求轉發 if(isSuccess){ request.setAttribute("message", "注冊成功,請登錄"); //通過getRequestDispatcher傳遞路徑將請求轉發給login.jsp request.getRequestDispatcher("login.jsp").forward(request,response); }else{ request.setAttribute("message", "注冊失敗,用戶名重復"); //通過getRequestDispatcher傳遞路徑將請求轉發給login.jsp request.getRequestDispatcher("register.jsp").forward(request,response); } } }

package com.Gary.util; import java.util.HashMap; import java.util.Map; import com.Gary.model.User; public class DBUtil { private static Map<String ,User>db = new HashMap<String,User>(); public static boolean addUser(String username,String password,int age,String sex) { //TODO if(db.containsKey(username)) { return false; }else { User user=new User(username,password,age,sex); db.put(username, user); return true; } } //賬號校驗 public static User verifyAccount(String username,String password) { if(db.containsKey(username)) { User user = db.get(username); if(user.getPassword().equals(password)) { return user; }else { return null; } } return null; } }
通過RegisterServlet.java和LoginServlet.java來處理注冊登錄請求
用戶注冊
通過戶數據模型驅動User,java和DBUtild.java中對數據進行本地處理
register.jsp發送請求表單信息到register_do(RegisterServlet.java路徑:@WebServlet("/register_do"))
登錄同理注冊
<form action="register_do" method="post"> 用戶名:<input type="text" name="username" /><br/> 密碼:<input type="password" name="password" /><br/> 年齡:<input type="text" name="age" /><br/> 性別: 男<input type="radio" name="sex" value="男" />女<input type="radio" name="sex" value="女" /><br/> <input type="submit" value="注冊" /> </form>
RegisterServlet.java通過doPost()方法處理注冊信息
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); int age = Integer.parseInt(request.getParameter("age")); String sex = request.getParameter("sex"); boolean isSuccess = DBUtil.addUser(username,password,age,sex); //使用請求轉發 if(isSuccess){ request.setAttribute("message", "注冊成功,請登錄"); //通過getRequestDispatcher傳遞路徑將請求轉發給login.jsp request.getRequestDispatcher("login.jsp").forward(request,response); }else{ request.setAttribute("message", "注冊失敗,用戶名重復"); //通過getRequestDispatcher傳遞路徑將請求轉發給login.jsp request.getRequestDispatcher("register.jsp").forward(request,response); } }