使用session和cookie实现用户登录:一个登录页面,一个servlet,一个登录成功页面

文件目录

 

 

1.登录页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>登录页面</title>
</head>
<body>
    <%
       //读取用户名为uname的cookie值,如果为空,就显示“”,
       //不为空,就显示cookie值
       Cookie[] cookies=request.getCookies();
       //遍历cookie值,获取cookie名为uname的cookie
       String uname="";
       if(cookies != null){
           for(Cookie c:cookies){
               if("uname".equals(c.getName())){
                   uname=c.getValue();
               }
           }
       }
       
    %>

    <%--本页面提供登录表单,还要显示错误信息 --%>
    <%
       String message="";
       String msg=(String)request.getAttribute("msg");
       if(msg != null){
           message=msg;
       }
    %>
    <font color="red" >
       <b>
       <%=message %>
       </b>
    </font>
    
    
    <h1>登录页面</h1>
    <form action="/SessionDemo/LoginServlet" method="post">
        <!-- 把cookie中的值放到文本框中-->
        用户名:<input type="text" name="username" value=<%=uname %>/><br>
        密  码:<input type="password" name="password"/><br>
        <input type="submit" value="登录"/>
    </form>
</body>
</html>

 

2.servlet类

package it.cn.ServletDemo;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        //处理中文乱码的额问题
        request.setCharacterEncoding("utf-8");
         //获取数据
        String name=request.getParameter("username");
        String password=request.getParameter("password");
        
        //效验用户名和密码是否正确
        if(! "itcase".equals(name)) {
            /*
             * 附加项:创建一个cookie,保存用户名
             * 下次访问login时,获取cookie中的值添加到用户名文本框中
             */
            Cookie cookie=new Cookie("uname", name);
            //设置cookie的命长
            cookie.setMaxAge(60*60);
            //保存cookie
            response.addCookie(cookie);
            
            //如果成功,就把数据放到session中,并且重定向到succ1.jsp
            HttpSession session=request.getSession();
            //向session中
            session.setAttribute("name", name);
            response.sendRedirect("/SessionDemo/session2/succ1.jsp");
        }else {//登录失败
            //保存错误信息到request中
            request.setAttribute("msg", "用户名错误!");
            //创建转发器
            RequestDispatcher qr=request.getRequestDispatcher("/session2/login.jsp");
            qr.forward(request, response);
        }
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

 

3.登录成功的页面

<%@ 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>
   <%
      String name=(String)session.getAttribute("name");
      if(name==null){
          //如果没有登录,用户名为空,就返回登录页面
          request.setAttribute("msg", "您还没有登录");
          RequestDispatcher qr=request.getRequestDispatcher("/session2/login.jsp");
            qr.forward(request, response);
      }
   %>
   <p color="blue" align="center">
       欢迎<%=session.getAttribute("name") %>来我校!
   </p>
</body>
</html>

 

posted @ 2019-04-13 20:36  颗就完了  阅读(2997)  评论(0编辑  收藏  举报