cookie:记住用户登录时的用户名

cookie:记住用户登录时的用户名
      -------------------------------------------------------------------------------------
      public class User {
              private String username;
              private String password;             
              public User(){}            
              public User(String username, String password) {
                      super();
                      this.username = username;
                      this.password = password;
              }             
              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 class UserDB {
              private static List<User> users = new ArrayList<User>();              
              static{
                      users.add(new User("gfy", "123"));
                      users.add(new User("yr","123"));
                      users.add(new User("jxp","123"));
              }             
              public static User findUser(String username, String password){
                      User user = null;
                      for(User u : users){
                              if(username.equals(u.getUsername()) && password.equals(u.getPassword())){
                                user = u;
                                break;
                              }
                      }
                      return user;
              }
        }
      -------------------------------------------------------------------------------------
      // 读取记住的用户名并提供登录界面
      public class LoginUIServlet extends HttpServlet {
              public void doGet(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
                // 读取记住的用户名
                String username = "";
                String checked = "";


                Cookie cs[] = request.getCookies();
                for (int i = 0; cs != null && i < cs.length; i++) {
                        Cookie c = cs[i];
                        if ("userInfo".equals(c.getName())) {
                                String value = c.getValue(); // 用户名
                                username = value;
                                checked = "checked='checked'";
                                break;
                        }
                }


                response.setCharacterEncoding("UTF-8");
                response.setContentType("text/html;chatset=UTF-8");
                PrintWriter out = response.getWriter();


                // 提供登录界面
                out.write("<form action='/day07/servlet/LoginServlet' method='post'>");
                out.write("用户名:<input type='text' name='username' value='" + username + "'/><br/><br/>");
                out.write("密码:    <input type='password' name='password' value='' /><br/><br/>");
                out.write("<input type='checkbox' name='remember' " + checked + "/>记住用户名<br/><br/>");
                out.write("<input type='submit' value='登录' />");
                out.write("</form>");
              }


              public void doPost(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
                          doGet(request, response);
              }
      }
      -------------------------------------------------------------------------------------
      // 完成登录  并 根据是否需要记住用户名来写cookie
      public class LoginServlet extends HttpServlet {
              public void doGet(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
                      response.setCharacterEncoding("UTF-8");
                      response.setContentType("text/html;charset=UTF-8");
                      PrintWriter out = response.getWriter();
                      
                      // 获取提交过来的表单的值
                      String username = request.getParameter("username");
                      String password = request.getParameter("password");
                      String remember = request.getParameter("remember");
                      
                      // 验证用户名和密码   
                      User user = UserDB.findUser(username, password);
                      if(user == null){
                              out.write("对不起,您访问的用户名或密码错误");
                              return;
                      }
                      
                      // 处理cookie   如: UserInfo = gfy 参数: cookie名称   ,cookie值:表单提交的用户名名称
                      Cookie c = new Cookie("userInfo", username);
                      c.setPath(request.getContextPath());
                      if(remember == null){
                              // 如果未选中记住用户名,删除cookie
                              c.setMaxAge(0);
                      }else{
                              // 记住cookie
                              c.setMaxAge(Integer.MAX_VALUE);
                      }
                      response.addCookie(c);
                      out.print("恭喜,登录成功");
              }


              public void doPost(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
                          doGet(request, response);
              }
      }
      -------------------------------------------------------------------------------------
      
      
      
      
      
      
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值