A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

黄志彬
Session是域对象
        Session执行原理基于Cookie,服务器为每一个session开辟一块新的空间
        request.getSession()使用request中的session id去找到这个用户对应的session,session数据保存在服务器
创建和销毁
        *服务器第一次调用getSession创建,
        * 三种情况能销毁session,
                1.session  过期,默认过期时间为30分钟
                2.非正常关闭浏览器(如拔掉电源),如果正常关闭session序列化到硬盘
                3.手动调用session.invalidate();
        作用范围:一次会话

JSP底层就是一行一行的打印
        JSP有三个指令 page指令,include指令,taglib指令
        指令语法  <%@ 指令名称 属性名称="属性值" 属性名称="属性值".....%>
       

        JSP的四个域范围
                *pageScope:        当前页面中有效        pageContext       
                *RequestScope:        一次请求范围        request
                *SessionScope:        一次会话范围        session
                *Application:        应用范围        application
        从小范围先查找pageContext--->request--->session--->application
       
设置全局错误的提示页面web.xml中
        例:
        <error-page>
                  <error-code>404</error-code>
                  <location>/error.jsp</location>
        </error-page>

***JSP的内置对象(面试题)
在JSP中可以直接使用的对象
有9大内置对象                真实对象                常用方法
        *request                HttpServletRequest        getparamter();        setAtttibute()
        *response                HttpServletResponse        setHeader();        getWriter(); getOutputStream();
        *session                HttpSession                setAtttibute()        getAtttibute()
        *application                ServletContext                setAtttibute()        getAtttibute()
        *page                        Object                        toString();        wait();
        *pageContext                PageContext                setAtttibute()        getAtttibute()
        *out                        JspWriter                write();        print();
        *exception                Throwable                getMessage()        getCause()
回复 使用道具 举报

今天主要学习了session,关于Session的一些常识总结一下
1.Session机制
除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。

2 .关于Session
Session是另一种记录客户状态的机制,不同的是 Cookie保存在客户端浏览器中,而Session保存在服务器上 。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的"通行证"来确定客户身份的话,那么Session机制就是通过检查服务器上的"客户明细表"来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

3  Session的生命周期

Session保存在服务器端。为了获得更高的存取速度,服务器一般把Session放在内存里 。每个用户都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。因此,Session里的信息应该尽量精简。
Session在用户第一次访问服务器的时候自动创建 。需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、 IMAGE等静态资源并不会创建Session。如果尚未生成Session,也可以使用request.getSession(true)强制生成 Session。
Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session 。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session"活跃(active)"了一次。

4  Session的有效期

由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间 。如果超过了超时时间没访问过服务器,Session就自动失效了。
之前想手动设置Session的寿命。通过网上查询得知使用maxInactiveInterval属性,可以通过对应的getMaxInactiveInterval()获取,通过setMaxInactiveInterval(long interval)修改。
Session的超时时间也可以在web.xml中修改。另外,通过调用Session的invalidate()方法可以使Session失效。


二,JSP:
JSP在web工程发布后会被转换为Servlet,所以在jsp里面是一种java代码。它是一种服务器语言。可以方便获取服务器上的数据。关于jsp以后一直会用,掌握以下知识点:
1.JSP的定义
【JSP的脚本】
<%!   %>:翻译成Servlet中的成员内容. 定义变量,方法,类. -- 不建议.
<%    %>:翻译成Servlet中service方法内部的内容. 定义类,变量
<%=   %>:翻译成Servlet中service方法中out.print();相当于输出一个值
2.JSP的指令:
1)掌握page指令,<%@ page %> -- 设置JSP的语言
* contentType        :设置浏览器打开这个JSP的时候采用的默认的字符集的编码.
* pageEncoding        :设置文件保存到本地硬盘,以及生成Servlet后,Servlet保存到硬盘上的编码.
* import                :在JSP中引入类对象.但是import可以出现多次.
<%@page import="java.util.ArrayList"%>:引入一个页面的方法
3.设置一个错误页面
  * 设置全局的错误友好页面:
        * 在web.xml中设置:
  <error-page>
          <error-code>404</error-code>
          <location>/404.jsp</location>
  </error-page>
  <error-page>
          <error-code>500</error-code>
          <location>/500.jsp</location>
  </error-page>
4.包含其他页面:
JSP中的include指令:指示JSP包含其他的页面.
<%@ include file="logo.jsp" %>
<%@ include file="menu.jsp" %>
<h1>BODY部分</h1>
<%@ include file="footer.jsp" %>
5.9个内置对象:
request,reponse,session,application,page,pageContext,cofig,out等

pageContext内置对象                :
* 获得其他的8个内置对象        :编写通用性代码或者框架的时候.
* 向JSP的四个域中存取对象

【JSP的动作标签】
<jsp:forward />                        :用于页面的转发.
* <jsp:forward page="/demo1-jsp/demo3-object/demo3.jsp"></jsp:forward>
<jsp:include />                        :用于页面的包含.(动态包含)
*****静态包含和动态包含的区别?(<%@ include%>和<jsp:include>)
<jsp:param />                        :用于带有路径的标签下,传递参数.

<jsp:useBean />                        :用于在JSP中使用JavaBean.
<jsp:setProperty />                :用于在JSP中向JavaBean设置属性的.
<jsp:getProperty />                :用于在JSP中获得JavaBean的属性.
回复 使用道具 举报
吴俊斌Session底层用了Cookie,它的原理是在服务器开辟一片空间.这片空间是有锁的
,然后通过Cookie将钥匙传给游览器.
Session的作用访问:一次会话,默认游览器关闭钥匙就消失.但是这是Session
并没有消失,通常半个小时才会消失,它在第一次调用getSession的时候,销毁在
1.session过期. 默认过期时间为30分钟.
2.非正常关闭服务器.如果正常关闭session序列化到硬盘.
3.手动调用session.invalidate();
jsp其实就是网页和java相结合,在html中可以写java代码.使用方式也挺简单的
<% 这是在Servlet方法中 %>
<%= 这是直接在html里输入 不加分号%>
<%! 这是在成员 %>
jsp的九大对象
JSP九大内置对象(在Jsp中不用new就可以直接使用的对象)
1`request 2`response 3`session 4`application 5`page 6`pageContext(重要)
7`config 8`out 9`exception


苏海斌
Session就是将数据保存到服务器端的会话技术,基于Cookie回写SessionID的;
Session存取数据的方法:setAttribute(String name,Object value);和getAttribute(String name);
同时,session也是域对象,在服务器第一次调用getSession()时创建session;
而session被销毁有三种情况:
1.session过期时,session的默认过期时间为30分钟,
2.在非正常关闭服务器的时候,如果是正常关闭的话,session会序列化到硬盘,
3.手动调用session.invalidate()的时候;
session的作用范围:多次请求(一次会话)

JSP:
JSP是Java服务器端的页面
使用:JSP=HTML+Java代码+JSP自身的东西
执行JSP的过程:JSP翻译成Servlet,编译该Servlet类,生成class文件,得到执行

JSP的脚本:
<%!     %>翻译成Servlet中的成员内容,定义变量,方法,类.存在线程不安全,所以不建议
<%      %>翻译成Servlet中service方法内部的内容,定义类,变量
<%=     %>翻译成Servlet中service方法中的out.print();

JSP有三个指令:page指令,include指令和taglib指令
page指令有很多,重点掌握
contentType:设置浏览器打开这个JSP时采用的默认的字符集的编码
pageEncoding:设置文件保存到本地硬盘,以及生成Servlet后,Servlet保存到硬盘上的编码
import:在JSP中引入类对象,但import可以出现多次
include指令是指示JSP包含其他的页面
taglib指令指示JSP引入标签库,标签库还没学,暂时知道就好

内置对象是指在JSP中可以直接使用的对象,一共有9个!!!
1.request                HttpServletRequest                getParameter(),setAttribute(String name,Object value);
2.response        HttpServletResponse                setHeader(String name,String value);getOutputStream();getWriter();
3.session                HttpSession                        setAttribute();getAttribute();
4.application        ServletContext                        setAttribute();getAttribute();
5.page                Object                                toString();wait();
6.pageContext        PageContext                        setAttribute();getAttribute();
7.config                ServletConfig                        getServletName();getServletContext();
8.out                JspWriter                        write(),print();
9.exception        Throwable                        getMessage(),getCause();                 
设置isErrorPage="true"


重点!!!
JSP的四个域范围:
PageScope                :当前页面中有效.        pageContext                PageContext
RequestScope                :一次请求范围.                request                        HttpServletRequest
SessionScope                :一次会话范围.                session                        HttpSession
ApplicationScope        :应用范围                application                ServletContext
回复 使用道具 举报
林恒山
Session的作用范围:一次会话
创建:服务器第一次调用getSession()创建Session
销毁:三种情况销毁Session:
1.session过期. 默认过期时间为30分钟.
2.非正常关闭服务器.如果正常关闭session序列化到硬盘.
3.手动调用session.invalidate();

Session是一个域对象.存取数据和移除数据跟其他域对象调用的方法一样.但是Session数据是存在服务器端的.

JSP脚本:
<%! %> servlet实现类的成员部分,可以定义变量/方法/类
<%  %> service()内部的内容,可以定义变量/类
<%= %> service()内部的out.print().

JSP内置对象:就是在jsp内可以直接使用的对象
request                         HttpServletRequest        getParameter(),setAttribute(String name,Object value);
response                HttpServletResponse        setHeader(String name,String value);getOutputStream();getWriter();
session                        HttpSession                setAttribute();getAttribute();
application                ServletContext                setAttribute();getAttribute();
page                        Object                        toString();wait();
pageContext                PageContext                setAttribute();getAttribute();
config                        ServletConfig                getServletName();getServletContext();
out                        JspWriter                 write(),print();
exception                Throwable                getMessage(),getCause(); 设置isErrorPage=”true”

JSP的四个域范围:
PageScope                :当前页面中有效.                pageContext                PageContext
RequestScope                :一次请求范围.                request                        HttpServletRequest
SessionScope                :一次会话范围.                session                        HttpSession
ApplicationScope        :应用范围                application                ServletContext
回复 使用道具 举报
Do1 中级黑马 2018-6-8 09:03:27
45#
本帖最后由 Do1 于 2021-6-21 08:16 编辑


session是通过附在cookie请求头上和响应头上的一组通过加密后获得的id,用来实现个性化服务,客户端第一次传过来的时候并没有session,只有在客户端访问Servlet的时候服务器内存中才会开启session,之后的每一次请求都视为session活跃了一次

session案例
1.判断登录    JSP+session判断语句
2.session名称遍历获取
Enumeration<String> sessions= request.getSession().getAttributeNames();
                String kk="";
                while(s.hasMoreElements()) {
                        kk+=s.nextElement();
                }
Enumeration是一种古老的迭代器,主要用在Servlet,其它地方被iterator迭代器替代

session比其它域对象灵活的地方在于它可以存Object类型

JSP主要的标签是<% %>和<%= %> 百分号后加等号它等价于<% out.print()%>
JSP中特殊的地方在于if语句

<%if(boolean flag){%>
           <%内容%>
<%}else{%>
<%内容%>
<%}%>
回复 使用道具 举报
常小天
session是一种将数据保存在服务器端的会话技术。其原理是在一次会话中,服务器在它自己的硬盘上为本次会话开辟一块区域来存储用户的一些操作信息,并为这块区域配置一个sessionID,以cookie的方式响应给浏览器端,浏览器再次发送请求时会在cookie中携带sessionID,服务器接收请求后通过sessionID找到硬盘中对应的那块空间,继续在这块空间中存取数据。Session的生命周期与其作用范围并不一致。Session是在会话中第一次调用getsession方法时创建,本次会话中后续的调用getsession方法都是获得这个session而不重新创建session。Session的销毁有三种情况。一是默认在30分钟没有被使用时销毁;二是当手动调用session.invalidate()方法销毁;三是服务器异常关闭时销毁(服务器正常关闭时会序列化到硬盘,在此开启时再反序列化)。Session从创建到销毁的过程是它的生命周期,但session基于cookie的工作原理,使得它的作用范围仅限在一次会话中,因为一次会话关闭后cookie默认就被销毁了,尽管session可能还存在,但因为浏览器已经丢失了sessionID,所以无法再次访问之前的session空间。我们借助request中的getsession方法来创建或获取session。
Jsp即java服务器端的页面。Jsp中嵌入java代码的方式昨天已经学习过,今天新学习的有jsp中的注释、jsp中的指令、jsp中的内置对象和jsp中的动作标签。Jsp的三种注释方式为:
HTML的注释:<!-- 注释 -->
Java代码的注释:// 单行注释;/*多行注释*/; /** 文档注释 */
JSP的注释:<%-- JSP的注释 --%>
需要注意的一点是HTML的注释不能注释java代码。
Jsp的指令有<%@ page %>;<%@ include file="  " %>;<%@ taglib uri="标签的URI的路径" prefix="标签的别名" %>。
Jsp的9大内置对象:request、response、session、application、page、pageContext、config、out、exception。
Jsp的动作标签:<jsp:forward />:用于页面的转发、<jsp:include />        :用于页面的包含.(动态包含)、<jsp:param />:用于带有路径的标签下,传递参数、<jsp:useBean />:用于在JSP中使用JavaBean、<jsp:setProperty />        :用于在JSP中向JavaBean设置属性的、<jsp:getProperty />:用于在JSP中获得JavaBean的属性。
回复 使用道具 举报
叶凌青
今天学习了Session
Session是将数据保存到服务器端.利用Cookie回写一个session的ID.
Session的执行原理:基于Cookie的.
Session作为域对象的方法:
request.getSession();
session的生命周期
创建:服务器端第一次调用getSession()创建session.
销毁:三种情况销毁session:
     1.session过期. 默认过期时间为30分钟.
     2.非正常关闭服务器.如果正常关闭session序列化到硬盘.
     3.手动调用session.invalidate();
session作用范围:
作用范围:多次请求.(一次会话)
回复 使用道具 举报

2018/6/6 林瑋

昨天了解了一下session,今天就开始学习session及jsp;

session是一个基于cookie的一个域对象,它用来储存数据的域都是在服务器中的,而cooki储存数据的域是在客户端中,每次创建session对象都会有一个"钥匙"随着产生,我们如果想要获取里面的数据就可以通过set-cookie把session的钥匙响应到浏览器中,从而获得里面的数据.有人说为什么不把数据存入cookie里呢?其实存入cookie也不是不可以,只不过cookie有大小限制,而session没有,所以如果数据量比较多的话最好用session.虽然说session是基于cookie的,session确实是一个独立的存在.对于session与cookie的关系如果还不理解的话,还有一个图解,或者自己闲时也可以画一下,这样对以后的应用很有帮助.
接下来就是jsp了,jsp呢之前是有了解很多的,它的全面叫Java Server Pages,为什么会弄这么一个东西呢?因为一开始SUN公司一直推出的是Servlet,后来发现Servlet在动态页面上有很大的缺陷,已经没有办法与ASP,PHP来竞争了,后来才推出了JSP的,为什么要推出JSP呢?重点来了,首先JSP可以兼容html代码和java代码还有jsp自身,这就大大提高了页面数据的代入,其次就是提高了页面的灵活输出.那jsp的代码书写格式又是怎么样的呢?它呢是指令开头,html代码与HTML原文件一样,最后就是java代码的代入了,也是最重要的之前了解也有讲过,今天就在讲一遍,java代码是通过三个标签来代入的,<%   %>,<%=  %>和<% !  %>,其作用我就不多说了,相信我是能记住的.jsp还有三个指令:page指令,include指令和taglib指令,比较重要的就是page指令了.还有九大内置对象:request,response,session,application,page,pageContext,config,out还有exception,常见的就是request,response,session,和page还有pageContext.动作标签有六个:<jsp:forward />,<jsp:include />,<jsp:param />,<jsp:useBean />        ,<jsp:setProperty />        ,<jsp:getProperty />        .动作标签主要在于简化代码,有句话怎么说的一切从简,代码也是这个道理.都说servlet有域对象,我们jsp也有,而且有三个和servlet里的一样,它们分别是:PageScope=pageContext,RequestScope=request,SessionScope=session,ApplicationScope里application.它们之间的范围大小是这么一个等级: pageContext<request<session<application;
好了这就是今天所学的内容了...(之前因为因为种种原因才这么久没发,可把我憋得不轻,今天发出去了也是终于松了一口气.也挺对不起老师们,虽然的这是为我们自己写的,但是老师们都这么努力,一直以来对我们的总结都是认真对待的!这样子有点让你们煞费苦心了,谢谢超哥,辉哥及各位老师!)
回复 使用道具 举报
123
您需要登录后才可以回帖 登录 | 加入黑马