ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JSP之session案例

2022-04-21 17:33:47  阅读:139  来源: 互联网

标签:username 用户名 req 案例 session JSP import jsp password


简介:

创建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("<h1>您上次登录的账号是:" + c.getValue() + "</h1><br/>");
                    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("<br/>用户名:" + username.toString() + " 错误!!<br/>请重试!!!");
 } else if (password != null) {
     out.print("<br/>密码:" + password.toString() + " 错误!!<br/>请重试!!!");
 }
 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="<c:url value='/jsp/source2.jsp'/>"><b>GO TO the source2</b></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>source2</title>
</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表达式,需要导入指定的包

 

标签:username,用户名,req,案例,session,JSP,import,jsp,password
来源: https://www.cnblogs.com/0099-ymsml/p/16175101.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有