JSP登录案例之session应用


简介:

创建login.jsp提交用户名和密码,创建ASerlet进行用户名和密码的校验,创建source1.jsp、source2.jsp作为访问界面,流程如下;

AServlet:

package demoServlet;
import java.io.IOException;
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;
@WebServlet("/AServlet")
public class AServlet extends HttpServlet {
    @Override
    public void init() throws ServletException {
        System.out.println("出生啦!!");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        // 获取用户名和密码
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        // 获取session
        HttpSession session = req.getSession();
        // 校验用户名和密码
        if("cdml".equals(username)) {    // 判断用户名
            if("qwe".equals(password)) {    // 判断密码
                // 用户名和密码都正确,设置用户名和密码
                session.setAttribute("username", username);
                session.setAttribute("password", password);
                // 设置Cookie
                Cookie cookie = new Cookie("username", username);
                cookie.setMaxAge(60*60*24);    // cookie有效时间为一天
                resp.addCookie(cookie);    // 添加cookie
                
                // 重定向
                resp.sendRedirect("/day0421_session/jsp/source1.jsp");
            }else {
                // 设置错误密码
                req.setAttribute("password", password);
                // 转发
                req.getRequestDispatcher("/jsp/login.jsp").forward(req, resp);
            }
        }else {
            // 设置错误用户名
            req.setAttribute("username", username);
            // 转发
            req.getRequestDispatcher("/jsp/login.jsp").forward(req, resp);
        }
    }
}

login.jsp:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录title>
head>
<body>
    <div align="center">
        <%
        /*
            读取名为username的cookie
        */
        Cookie[] cookies = request.getCookies();
        String uname = "";
        if (cookies != null) {
            for (Cookie c : cookies) {
                if ("username".equals(c.getName())) {
                    uname = c.getValue();
                    out.print("

您上次登录的账号是:" + c.getValue() + "


"); break; } } } %> <form action="/day0421_session/AServlet" method="post"> 用户名: <input type="text" name="username" value=<%=uname %>><br /> 密码 : <input type="text" name="password"><br /> <input type="submit" value="提交"> form> <font color="red"><b> <% Object username = request.getAttribute("username"); Object password = request.getAttribute("password"); String nousername = (String) request.getAttribute("nousername"); if (username != null) { out.print("
用户名:
" + username.toString() + " 错误!!
请重试!!!
"); } else if (password != null) { out.print("
密码:
" + password.toString() + " 错误!!
请重试!!!
"); } if (nousername != null) { // 不为空则跨过了登录界面 if ("ture".equals(nousername)) { // 跨过了登录界面 out.print("请先登录!"); } } %> b>font> div> body> html>

source1.jsp:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>页面一title>
head>
<body>
    <div align="center">
        <h1>成功登录h1>
        <%
        Object username = session.getAttribute("username");
        if (username != null) {    // 用户名不为空
            out.print("欢迎您!用户:" + username + ", 早上好!");
        }else{    // 用户名为空
            request.setAttribute("nousername", "ture");    // 设置越界信息
            request.getRequestDispatcher("/jsp/login.jsp").forward(request, response);    // 转发,不是重定向是因为越界信息设置在request上的,所以需要转发将request传递过去
        }
        %>
    <br/>    <a href=""><b>GO TO the source2b>a>
    div>
body>
html>

source2.jsp:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>source2title>
head>
<body>
    <div align="center">
        <h1>成功登录h1>
        <%
        Object username = session.getAttribute("username");
        if (username != null) {    // 用户名不为空
            out.print("欢迎您!用户:" + username + ", 早上好!这里是source2!");
        }else{    // 用户名为空
            request.setAttribute("nousername", "ture");    // 设置越界信息
            request.getRequestDispatcher("/jsp/login.jsp").forward(request, response);    // 转发,不是重定向是因为越界信息设置在request上的,所以需要转发将request传递过去
        }
        %>
    div>
body>
html>

输入预定的账号密码:cdml、qwe

点击提交:

 也可以转到source2.jsp页面,提示:source2.jsp页面使用的EL表达式,需要导入指定的包