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 }

 

posted @ 2017-06-23 00:49  代码改变心态  阅读(3475)  评论(0编辑  收藏  举报