文档章节

session

芥末小弟
 芥末小弟
发布于 2017/03/01 09:54
字数 679
阅读 0
收藏 0

session
    就是cookie技术不能满足所有需求.cookie 不够安全.记录的信息过于简单.
    于是我们需要学习session技术.
    session技术是在服务器端保存信息的技术.
    session技术 可以理解为 在服务器端开辟了一个空间给你装用户的信息.
    1.什么时候创建这个空间呢? ==>当浏览器 第一次访问我们的项目时.会给这个浏览器开辟一个空间(MAP).并把这个空间对应的ID 发送给浏览器.
    2.之后浏览器每次访问都带着这个ID ==> 服务器就可以根据浏览器带过来的ID查找到对应session域.
    3.session什么时候销毁呢? ==>  默认30 分钟后销毁 ,依据如下配置.
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    细节:因为使用cookie记录了session的ID,而记录seesionID的Cookie有效时间是浏览器打开时,浏览器一旦关闭cookie丢失,sessionID丢失,服务器中的session就永远获得不到了.
session操作
Seesion的例子
    1.购物车
    2.验证码

image

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
<script>
    function fun1(obj) {
        obj.src="<%=path %>/DServlet?random=" + new Date();
    }
</script>
</head>

<body>
    <div style="color:red">
        <%
            String error = (String) request.getAttribute("error");
            if (error != null) {
                out.println(error);
            }
        %>

    </div>
    <form action="<%=path%>/CServlet" method="post">
        用户名:<input type="text" name="userName" /><br /> 密码:<input
            type="password" name="pwd" /><br /> 验证码:<input type="text"
            name="code"><img src="<%=path %>/DServlet"
            onclick="fun1(this);" /><br /> <input type="submit" value="提交">

    </form>
</body>
</html>
package cn.jiemoxiaodi.session;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CServlet extends HttpServlet {

    /**
     * The doGet method of the servlet. <br>
     * 
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String code = (String) request.getParameter("code");
        String sessionCode = (String) request.getSession().getAttribute("code");
        if(code!=null&&code.equalsIgnoreCase(sessionCode)){
            response.sendRedirect(request.getContextPath()+"/index.jsp");
        }else{
            request.setAttribute("error", "对不起,您输入的恶有错误");
            request.getRequestDispatcher("/index.jsp").forward(request, response);
        }
    }
    
    
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req,resp);
    }

}
package cn.jiemoxiaodi.session;

import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.dsna.util.images.ValidateCode;

public class DServlet extends HttpServlet {

    /**
     * The doGet method of the servlet. <br>
     * 
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        ValidateCode vacode = new ValidateCode(122, 33, 2, 1);

        response.setContentType("imge/jpeg");
        String code = vacode.getCode();
        request.getSession().setAttribute("code", code);
        OutputStream os = response.getOutputStream();
        
        vacode.write(os);

    }

}

© 著作权归作者所有

共有 人打赏支持
芥末小弟
粉丝 0
博文 202
码字总数 120715
作品 0
昌平

暂无文章

kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
39分钟前
2
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
2
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
14
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0
Redis性能问题排查解决手册

一、性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 nfo命令输出的数据可...

IT--小哥
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部