文档章节

session

芥末小弟
 芥末小弟
发布于 2017/03/01 09:54
字数 679
阅读 0
收藏 0
点赞 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
昌平

暂无相关文章

解决httpclient超时设置不生效的问题

最近公司有项目需要通过http调用第三方服务,且第三方服务偶有超时,故需要设置一定的超时时间防止不响应的情况出现。 初始设置如下: [java] view plain copy //超时设置 RequestConfig re...

Mr_Tea伯奕 ⋅ 6分钟前 ⋅ 0

过滤器Filter和拦截器HandlerInterceptor

过滤器 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要...

hutaishi ⋅ 10分钟前 ⋅ 0

Redis入门详解(转)

Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis应用场景 Redis总结 Redis简介: Redi...

xiaoyaoyoufang ⋅ 22分钟前 ⋅ 0

说说javascript中的那些专业名词

DOM(Document Object Model) 文档对象模型 BOM(Browser Object Model) 浏览器对象模型 ECMA(European Computer Manufacturer's Association) 欧洲计算机制造商协会 W3C(World Wide Web Conso......

hang1989 ⋅ 42分钟前 ⋅ 0

Bootstrap Wizard 多步表单控件

废话 有一块需求是 有多步表单 点击下一步时触发验证一个范围内的表单,点击上一步或取消,清空表单并返回第一步,点击最后一步提交整个表单的 就找到了这个插件,本来自己写了一个原生的 fo...

无极之岚 ⋅ 58分钟前 ⋅ 0

如何利用Spring Cloud构建起自我修复型分布式系统

利用Netflix所打造的组件及各类大家熟知的工具,我们完全可以顺利应对由微服务以及分布式计算所带来的技术挑战。 在过去一年当中,微服务已经成为软件架构领域一个炙手可热的新名词,而且我们...

harries ⋅ 今天 ⋅ 0

临近实习前的感想

再过两星期就要开始新的一段实习了,想想去年的这个时候也在实习,心中不免思绪万千,也一直想写对2017做个总结,但一直迟迟没有下笔。 2017年的春节,我就开始准备开学后找份实习。那时候就...

无精疯 ⋅ 今天 ⋅ 0

Spring AOP(面向切面编程)

Spring AOP概念: Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能。通常情况下,AOP把项目中需要在多处用到的功能,比如日志、安全和事物等集中到一个类中处理,而...

霍淇滨 ⋅ 今天 ⋅ 0

人工智能、机器学习、数据挖掘以及数据分析有什么联系?

人工智能是目前炙手可热的一个领域,所有的互联网公司以及各路大迦们纷纷表态人工智能将是下一个时代的革命性技术,可与互联网、移动互联网时代的变更相媲美;AlphaGo在围棋领域战胜人类最顶...

董黎明 ⋅ 今天 ⋅ 0

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部