ServletDemo1.java
1 package ztq.servlet.study; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.Cookie; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpServletResponse; 11 12 public class ServletDemo1 extends HttpServlet { 13 public void doGet(HttpServletRequest request, HttpServletResponse response) 14 throws ServletException, IOException { 15 //設置服務器端以UTF-8編碼進行輸出 16 response.setCharacterEncoding("UTF-8"); 17 //設置瀏覽器以UTF-8編碼進行接收,解決中文亂碼問題 18 response.setContentType("text/html;charset = UTF-8"); 19 PrintWriter out = response.getWriter(); 20 21 //獲取cookie 22 String username = ""; 23 String check = ""; 24 Cookie[] cookies = request.getCookies(); 25 for(int i = 0; cookies != null && i < cookies.length; i++){ 26 Cookie c = cookies[i]; 27 if("username".equals(c.getName())){ 28 username = c.getValue(); 29 check = "checked = 'checked'"; 30 break; 31 } 32 } 33 34 //登錄頁面 35 out.write("<form action = '" + request.getContextPath() + "/servlet/ServletDemo2' method = 'post'>"); 36 out.write("用戶名:<input type = 'text' name = 'username' value = '" + username + "'><br />"); 37 out.write("密碼:<input type = 'password' name = 'password' value = ''><br />"); 38 out.write("記住用戶名:<input type = 'checkbox' name = 'remember'" + check + "'><br />"); 39 out.write("<input type = 'submit' name = 'submit' value = '登錄'><br />"); 40 } 41 public void doPost(HttpServletRequest request, HttpServletResponse response) 42 throws ServletException, IOException { 43 doGet(request, response); 44 } 45 }
ServletDemo2.java
package ztq.servlet.study; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletDemo2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String remember = request.getParameter("remember"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset = UTF-8"); PrintWriter out = response.getWriter(); //創建一個新的Cookie Cookie cookie = new Cookie("username", username); cookie.setPath(request.getContextPath()); if(remember != null){ //如果選擇了記住用戶名,則設置Cookie的有效期為一個不為0的整數 cookie.setMaxAge(Integer.MAX_VALUE); }else{ //否則則把有效期設置為0,即命令瀏覽器刪除該cookie cookie.setMaxAge(0); } //將cookie對象添加到response對象中,這樣服務器在輸出response對象中的內容時就會把cookie也輸出到客戶端服務器 response.addCookie(cookie); out.write("登錄成功!"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
結果:
輸入用戶名和密碼,選擇記住用戶名,然后點擊登錄。
頁面顯示登錄成功!
重新打開瀏覽器,再次訪問登錄界面,會顯示如圖。