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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

day16-cookie


###【会话技术】

​     什么是会话   :用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话.

* 常见的会话技术:
  * Cookie    :将数据保存到客户端浏览器.
  * Session   :将数据保存到服务器端.
* 为什么使用会话技术?
  *  私有的数据,购物信息数据保存在会话技术中.
* 使用会话技术:

### 【Cookie技术的使用】

* 向浏览器保存数据:
* HttpServletResponse有一个方法:
  * void addCookie(Cookie cookie);
* 获得浏览器带过来的Cookie:
* HttpServletRequest有一个方法:
  * Cookie[] getCookies();
* 创建一个Cookie对象:
  * Cookie(String name,String value);

###【JSP的简单概述】

* 什么是JSP   :
  * JavaServer Pages(Java服务器端页面).JSP = Java代码 + HTML的元素 + JSP内置东西
  * SUN公司为什么推出JSP动态网页开发技术:
  * SUN公司推出的Servlet技术进行动态网页开发.发现Servlet自身有不足没有办法与ASP,PHP技术竞争.想在动态网页中输出表单.在Servlet中获得PrintWriter out =response.getWriter();
  * out.println(“<form action=’’ method=’’>”);
  * out.println(“</form>”);
  * SUN又推出了动态的网页开发技术就是JSP.
* JSP的执行过程:
  * JSP会被翻译成Servlet,编译成class进行执行的.
* JSP的嵌入Java代码:JSP的脚本元素
  * <%!    %>      :翻译成类中的成员部分. 定义变量,定义方法,定义类.Servlet是线程不安全的,尽量少在类中定义成员属性!!\
  * <%    %>      :翻译成类的service方法内部的内容. 定义变量,定义类,直接写代码块.
  * <%=    %>    :翻译成service方法内部的out.print();

### Cookie的常用API:

* Cookie的常用的API getName();
  * getValue();
  * setDomain(String domain); -- 设置Cookie的有效域名. //  [www.baidu.com](http://www.baidu.com) music.baidu.com
  * setPath(String path); -- 设置Cookie的有效路径.
  * setMaxAge(int maxAge); -- 设置Cookie的有效时间.
* Cookie的分类有关
  * 会话级别的Cookie:默认的Cookie.关闭浏览器Cookie就会销毁.
  * 持久级别的Cookie:可以设置Cookie的有效时间.那么关闭浏览器Cookie还会存在. 手动销毁持久性Cookie. setMaxAge(0)---前提是有效路径必须一致.

### 【Session的概述】

​        Cookie本身是有大小和个数的限制.Session没有限制.Cookie的数据保存在客户端,Session数据保存在服务器端.

* Session的执行原理:基于Cookie的.
* 使用Session:
  *  获得Session:
  * request.getSession();

### Session是域对象:

​    session何时创建和销毁?作用范围:

* 创建:服务器端第一次调用getSession()创建session.
  * 销毁:三种情况销毁session:
    * 1.session过期. 默认过期时间为30分钟.
    * 2.非正常关闭服务器.如果正常关闭session序列化到硬盘.
    * 3.手动调用session.invalidate();
  * 作用范围:多次请求.(一次会话)

day18-EL&JSTL与MVC初识


### 【JSP的脚本】

​    <%    %>     :翻译成Servlet中service方法内部的内容. 定义类,变量

​    <%=   %>     :翻译成Servlet中service方法中out.print();

## 【JSP的指令】

* 指令的语法:

  ​    <%@ 指令名称属性名称=”属性值” 属性名称=”属性值” ...%>

* JSP中有三个指令:page指令, include指令, taglib指令.

* JSP中page指令:<%@ page %> -- 设置JSP的.

  * language      :JSP脚本中使用的语言.现在只能写java.

  * **contentType   :设置浏览器打开这个JSP的时候采用的默认的字符集的编码.**

  * **pageEncoding  :设置文件保存到本地硬盘,以及生成Servlet后,Servlet保存到硬盘上的编码.**

  * **import         :在JSP中引入类对象.但是import可以出现多次**

     < %@pageimport="java.util.ArrayList"%>

     < %@pageimport="java.util.List"%>

  * extends      :设置JSP翻译成Servlet后继承的类,默认值:org.apache.jasper.runtime.HttpJspBase,这个值要想修改,这个类必须是HttpServlet的子类

  * autoFlush     :设置JSP的缓存自动刷出.true:自动刷出.

  * buffer        :设置JSP的缓冲区的大小,默认8kb.

  *  session       :设置在JSP中是否可以直接使用session对象.默认值是true.

  * isELIgnored   :设置在JSP中是否忽略EL表达式.默认值是false不忽略.

  * errorPage     :设置错误友好页面的提示.

  * isErrorPage   :通过这个设置显示JSP的错误信息.

    * 设置全局的错误友好页面:
    * 在web.xml中设置:

*  JSP中的include指令:指示JSP包含其他的页面.

  * <%@ include file="logo.jsp" %>
  * <%@ include file="menu.jsp" %>
  * < h1>BODY部分</h1>
  * <%@ include file="footer.jsp" %>

* JSP中的taglib指令:指示JSP引入标签库

  * <%@ taglib uri="标签的URI的路径" prefix="标签的别名" %>

### 【JSP的内置对象(*****)】

* JSP的内置对象:在JSP中可以直接使用的对象.

* JSP中有9大内置对象:

  * \* request               HttpServletRequest              getParameter(),setAttribute(Stringname,Object value);

    \* response              HttpServletResponse             setHeader(String name,Stringvalue);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”

* page内置对象             :真实对象是Object,就是JSP翻译成Servlet后的类的引用.

  * 不是out真实对象JspWriter ,response获得Writer是PrintWriter.

* **pageContext内置对象      :**

  * **获得其他的8个内置对象   :编写通用性代码或者框架的时候.**

  * **向JSP的四个域中存取数据 :**

    * JSP的四个域范围:

      ​    ***PageScope              :****当前页面中有效.     pageContext     PageContext**

      ​    ***RequestScope           :****一次请求范围.       request         HttpServletRequest**

      ​    ***SessionScope           :****一次会话范围.       session         HttpSession**

      ​    ***ApplicationScope       :****应用范围                application     ServletContext**

###【JSP的动作标签】列出6个.

* 标签的作用:简化代码.

*  < jsp:forward />         :用于页面的转发.

  *  < jsp:forwardpage="/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的属性.

###EL表达式

* 为什么学习EL:
  * 简化JSP的代码,而且减少<%%>


* 使用EL表达式:
  * 语法:${ EL表达式 }
* EL的功能:
  * 获取数据:(JSP的四个域)
  * 执行运算:
  * 操作WEB开发的常用的对象:
  * 调用Java中方法:--很少用.

### 【EL操作WEB开发的常用对象11个】

​    < h1>EL功能三:操作WEB开发常用的对象</h1>

<!--

​    pageScope,requestScope,sessionScope,applicationScope- 获取JSP中域中的数据

​    param,paramValues  - 接收参数.

​    header,headerValues- 获取请求头信息

​    initParam           - 获取全局初始化参数

​    cookie              -WEB开发中cookie

​    pageContext         - WEB开发中的pageContext.

-->

< h3>接收请求的参数</h3>

<%= request.getParameter("id") %>

<%= request.getParameter("name") %>

<%=Arrays.toString(request.getParameterValues("hobby")) %>

< hr/>

${ param.id }

${ param.name }

${ paramValues.hobby[0] }

${ paramValues.hobby[1] }

< h3>获取请求头</h3>

<%= request.getHeader("User-Agent")%>

< hr/>

${ header["User-Agent"] }

< h3>获取全局初始化参数</h3>

${ initParam.username
< h3>获取Cookie中的值</h3>

${ cookie.history.value }

< h3>获取PageContext中的对象</h3>

IP地址:${pageContext.request.remoteAddr }

工程路径:${pageContext.request.contextPath }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马