• Session案例_登录注销


    index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head>
      <body>
          <h1>我的网站</h1><hr>
          <%
              //获取session中的登录状态
            String user = (String)session.getAttribute("user");//这里的 user是session的标记
           %>
           <%
               if(user == null || "".equals(user)){//用户没有登录
                   %>
                       欢迎光临!游客!
                       <a href="${pageContext.request.contextPath }/loginout/login.jsp">登录</a>
                       <a href="#">注册</a>
                   <%
               }else{//用户登录过
                   %>
                       欢迎回来!<%=user %>!
                       <a href="${pageContext.request.contextPath }/servlet/LogoutServlet">注销</a>
                   <%
               }
            %>
      </body>
    </html>

    login.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head>
      <body>
          <h1>我的网站-登录</h1><hr>
          <form action="${pageContext.request.contextPath }/servlet/LoginServlet" method="POST">
              用户名:<input type="text" name="username"/>
              密码:<input type="password" name="password"/>
              <input type="submit" value="登录"/>
          </form>
      </body>
    </html>

    LoginServlet.java

     1 package com.itheima.session.loginout;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.ServletException;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 public class LoginServlet extends HttpServlet {
    11 
    12     public void doGet(HttpServletRequest request, HttpServletResponse response)
    13             throws ServletException, IOException {
    14         request.setCharacterEncoding("utf-8");//对于17,18行起作用!!!
    15         response.setContentType("text/html;charset=utf-8");//对27行起作用!!!
    16         //1.获取用户名密码
    17         String username = request.getParameter("username");
    18         String password = request.getParameter("password");
    19         //2.查询数据库检查用户名密码
    20         if(UserDao.valiNamePsw(username, password)){
    21             //3.如果正确登录后重定向到主页
    22             request.getSession().setAttribute("user", username);//设置session标记user
    23             response.sendRedirect(request.getContextPath()+"/loginout/index.jsp");
    24             return;
    25         }else{
    26             //4.如果错误提示
    27             response.getWriter().write("用户名密码不正确!");
    28         }
    29     }
    30 
    31     public void doPost(HttpServletRequest request, HttpServletResponse response)
    32             throws ServletException, IOException {
    33         doGet(request, response);
    34     }
    35 
    36 }

    UserDao.java

     1 package com.itheima.session.loginout;
     2 
     3 import java.util.HashMap;
     4 import java.util.Map;
     5 
     6 public class UserDao {
     7     private UserDao() {//工具类的构造方法私有化
     8     }
     9     private static Map <String,String>map = new HashMap<String, String>();//因为验证的信息是用户名、密码,可以用key、value
    的形式,想到用map语法
    10 static{//类加载,静态代码块执行 11 map.put("张三丰", "111"); 12 map.put("张翠山", "999"); 13 map.put("张无忌", "888"); 14 map.put("赵敏", "777"); 15 } 16 public static boolean valiNamePsw(String username,String password){ 17 return map.containsKey(username) && map.get(username).equals(password); 18 } 19 }

    LogoutServlet.java

     1 package com.itheima.session.loginout;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.ServletException;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 public class LogoutServlet extends HttpServlet {
    11 
    12     public void doGet(HttpServletRequest request, HttpServletResponse response)
    13             throws ServletException, IOException {
    14         //1.杀死session
    15         //request.getSession()底层的实现,如果发现没有session立即创建
    16         if(request.getSession(false)!=null //如果没有对应的session,返回null,不会创建session
    17                 && request.getSession().getAttribute("user")!=null){
    18     //  request.getSession(false)!=null && request.getSession().getAttribute("user")!=null  表示有sesson,并且有登录标记
    19             request.getSession().invalidate();
    20         }
    21         //2.重定向到主页
    22         response.sendRedirect(request.getContextPath()+"/loginout/index.jsp");
    23     }
    24 
    25     public void doPost(HttpServletRequest request, HttpServletResponse response)
    26             throws ServletException, IOException {
    27         doGet(request, response);
    28     }
    29 
    30 }
    纸上学来终觉浅,觉知此事需躬行
  • 相关阅读:
    解题报告 校门外的树
    解题报告 最长上升子序列
    解题报告 poj 2528 (罕见的浮水法解这个题的。。。。。。)
    解题报告 整数划分
    悲剧的程序员
    解题报告 sgu 102
    NOI 2007 社交网络
    解题报告 poj 1087
    知识点梳理 离散化
    解题报告 noi 2002 robot
  • 原文地址:https://www.cnblogs.com/dreamHighMjc/p/7067965.html
Copyright © 2020-2023  润新知