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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

就业班day_15---day_18学习笔记
Respinse 的概述
Response : 代表响应的对象.从服务器向浏览器输出内容.
文件下载的方式
一种:超链接下载.直接将文件的路径写到超链接的href中.---前提:文件类型,浏览器不支持.
二种:手动编写代码的方式完成文件的下载.
设置两个头和一个流:
​    Content-Type                        :文件的MIME的类型.
​    Content-Disposition        :以下载的形式打开文件.
​    InputStream                        :文件的输入流.
response输出响应内容的方法:
向页面响应的方法:
getOutputStream();
getWriter();
这两个方法是互斥的.
​    做出响应的时候只能使用其中的一种流响应.
输出中文乱码的处理:
​    字节流:
​        设置浏览器默认打开的编码:
​        rsposne.setHeader("Content-Type",text/html;charset=UTF-8);
​        设置中文字节取出的时候编码.
​        中文.getBytes("UTF-8");
​    字符流:
​       设置浏览器打开的时候的编码     resposne.setHeader("Content-Type",text/html;charset=UTF-8");
​       设置response的缓冲区的编码        response.setCharacterEncoding("UTF-8");
​       简化的写法          response.setContentType("text/html;charset=UTF-8");
POST的解决方案:
  • POST的参数在请求体中,直接到达后台的Servlet.数据封装到Servlet中的request中.request也有一个缓冲区.request的缓冲区也是ISO-8859-1编码.

  • 设置request的缓冲区的编码:

​                  request.setCharacterEncoding(“UTF-8”);  --- 一定要在接收参数之前设置编码就OK.
GET的解决方案:
  • 修改tomcat的字符集的编码.(不推荐)

  • 使用URLEncoder和URLDecoder进行编码和解码的操作.

  • 使用String的构造方法:
    String(byte [] bytes, String charsetName)
    ​       通常使用指定的charset解码指定的 byte 数组,构造一个新的 String

Request作为域对象存取数据:
使用request对象存取数据:
  • setAttribute(String name,String value);

  • Object getAttribute(String name);

request的作用范围:
  • 作用范围就是一次请求的范围

  • 创建和销毁:

​       创建:客户端向服务器发送了一次请求以后,服务器就会创建一个request的对象.
​       销毁:当服务器对这次请求作出了响应之后.
重定向和转发的区别:(redirect和forward的区别)
  • 重定向的地址栏会发生变化,转发的地址栏不变.

  • 重定向两次请求两次响应,转发一次请求一次响应.

  • 重定向路径需要加工程名,转发的路径不需要加工程名.

  • 重定向可以跳转到任意网站,转发只能在服务器内部进行转发.

Response
  • 通过response设置状态码:setStatus(int status);

  • 通过response设置响应头:setHeader(String name,String value);,setIntHeader(String name,int value),setDateHeader(String name,long date);

  • 通过response设置响应体:getOutputStream(),getWriter();
    Cookie        : 就是将数据保存到客户端浏览器的会话技术.
    浏览器获得Cookie        :request.getCookies();
    浏览器回写Cookie        :response.addCookie(Cookie cookie);

Cookie的相关的API:
  • ​     setPath(String path);                -- /day11   /day11/aaa

  • ​     setMaxAge(int time);                -- 有效时长.

  • ​     setDomain(String domain);

Cookie的分类:
​     会话级别Cookie:会话级别关闭浏览器的时候Cookie就销毁了.默认的
​     持久级别Cookie:设置有效时长的Cookie,关闭浏览器的时候不会销毁的.
Session        : 就是将数据保存到服务器端的会话技术.基于Cookie回写SessionID的.
Session存取数据:
​    setAttribute(String name,Object value);
​    getAttribute(String name);
Session作用域:
​    session的作用范围:一次会话.(多次请求)
​    session生命周期:
​        创建:第一次调用getSession的时候创建session。
​        销毁:
​             非正常关闭服务器.
​             session过期
​             手动调用invalidate方法的时候
Cookie  : 将数据保存到客户端浏览器
Cookie 常用的API:
  • getName();
  • getValue();
  • setDomain(String domain); -- 设置Cookie 的有效域名.  // 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 技术的使用:
  • 向浏览器保存数据:

HttpSercletResponse 有一个方法:
void addCookie(Cookie cookie);
  • 获得浏览器带过来的Cookie:

HttpServletRequest 有一个方法:
Cookie[] getCookies();
  • 创建一个Cookie 对象:

Cookie (String name,String value);
Session的概述
Cookie 本身是有大小和个数的限制.Session 没有限制. Cookie 的数据保存在客户端, Session 数据保存在服务器端.
  • Session 的执行原理:基于Cookie 的.

  • 使用 Session:
    • 获得 Sesssion:
      • request.getSession();



Session是域对象
session何时创建:
服务器端第一次调用getSession() 创建 session.
session何时销毁:
1.session 过期,默认过期时间为30分钟
2.非正常关闭服务器,如果正常关闭session序列化到硬盘.
3.手动调用session,invalidate();
作用范围:
多次请求.(一次会话)
JSP的概述
什么是JSP:
Java Server Pages(Java服务器端的页面)
使用JSP:
JSP = HTML + Java代码 + JSP自身的东西.
执行JSP的过程:
JSP翻译成Servlet,编译这个Servlet的类,生成class文件.得到执行.
JSP的脚本
<%!   %>                :翻译成Servlet中的成员内容. 定义变量,方法,类. -- 不建议.
<%    %>                :翻译成Servlet中service方法内部的内容. 定义类,变量
<%=   %>                :翻译成Servlet中service方法中out.print();
JSP的注释-- 了解
HTML的注释                :<!-- 注释 -->
Java代码的注释        :// 单行注释 /多行注释/ /** 文档注释 */
JSP的注释                :<%-- JSP的注释 --%>
JSP的指令
指令的语法:
<%@ 指令名称 属性名称=”属性值” 属性名称=”属性值” ...%>
JSP中有三个指令:page指令, include指令, taglib指令.
JSP中page指令:<%@ page %> -- 设置JSP的.
  • language                :JSP脚本中使用的语言.现在只能写java.

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

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

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

​        <%@page import="java.util.ArrayList"%>
​        <%@page import="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的错误信息.

Ø 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(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”
    age内置对象        :真实对象是Object,就是JSP翻译成Servlet后的类的引用.
    ut内置对象                :out和response.getWriter是不是同一个对象?区别是什么?
  • 不是out真实对象JspWriter ,response获得Writer是PrintWriter.

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


​    JSP的四个域范围:
​    PageScope                  :当前页面中有效.            pageContext        PageContext
​    RequestScope                  :一次请求范围.            request                HttpServletRequest
​    SessionScope                  :一次会话范围.            session                HttpSession
​    ApplicationScope         :应用范围                    application        ServletContext
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的属性.
. 和 [] 的区别.  
[]用于有下标的数据(数组,list集合) .用于有属性的数据(map,对象)
如果属性名中包含有特殊的字符.必须使用[]
JSTL的概述
JSTL的标签库 : 包含了五类标签:
  • core(核心标签),fmt(国际化标签),xml(XML 标签),sql(SQL 标签),fn(JSTL 提供EL函数库)

使用JSTL:
  • 引入 JSTL 的相关的 jar 包
  • 在页面中引入标签库.<%@ taglib uri="" prefix=""%>

JSTL 的核心标签的用法
  • if
  • forEach

JSTL的提供EL的函数库
​     <h1>JSTL提供的EL的函数库</h1>
​     ${ fn:contains("Hello World","Hello") }
​     ${ fn:length("HelloWorld") }
​     ${ fn:toLowerCase("ABCDE") }
​     <c:forEach var="i" items='${ fn:split("a-b-c-d","-") }'>
​             ${ i }
​     /c:forEach

JSP的概述:
​    JSP:Java Server Pages.
​    JSP的运行原理:翻译成Servlet,编译成Class进行执行.
JSP的脚本元素:
​     <%!   %>
​     <%    %>
​     <%=   %>
JSP的注释:
​    JSP的三个指令:
​           page,include,taglib   <%@ 指令名称 属性=”属性值”%>
   JSP的内置对象:
​          pageContext,request,session,application,page,response,out,config,exception
   JSP的四个作用范围
​           PageScope                                :当前页面
​          RequestScope                        :一次请求范围.
​          SessionScope                        :一次会话
​          ApplicationScope                :整个应用范围.
EL的概述
EL:Expression Language
EL的作用:
​        获取数据${  }
​        执行运算
​        操作web开发中常用的对象${param }
​        调用Java中方法:
JSTL的概述:
​    JSTL:JSP 标准标签库.
​    JSTL标签库:core,fmt,sql,xml,fn
​    JSTL的核心标签库:
​         if,forEach
​    JSTL的函数库:
​        ${fn:}
JSP的设计模式:
  • ​     JSP的模式一:JSP + JavaBean设计模式:

  • ​     JSP的模式二:JSP + Servlet + JavaBean设计模式:MVC设计模式.

​         M:Model
​         V:View
​         C:Controller
​     MVC和EE开发三层结构的关系
​     反射:(*)
​         获得类的字节码对象:Class对象.三种获得的方式.
​             类名.class;
​             类的实例.getClass();
​             Class.forName();
​         获得构造器:Constructor
​         获得属性:Field
​         获得方法:Method
JDBC的事务管理:
​     事务的概念:指的是逻辑上的一组操作,要么一起成功,要么一起失败.
​     事务的特性:
  • ​         原子性:事务的不可分割

  • ​         一致性:事务执行的前后,数据完整性保持一致.

  • ​         隔离性:一个事务的执行不应该受到另一个事务的干扰

  • ​         持久性:事务一旦结束,将会永久修改到数据库.
    如果不考虑隔离性:
         脏读     :一个事务读到另一个未提交的数据.

         不可重复读  :一个事务读到另一个事务已经提交的update的数据,导致多次的查询结果不一致.

         虚读     :一个事务读到另一个事务已经提交的insert的数据,导致多次的查询结果不一致.

​    解决读问题:
​         未提交读:以上情况都能发生.
​         已提交读:解决脏读,但是不可重复读和虚读有可能发生
​         重复读:解决脏读和不可重复读,但是虚读有可能发生.
​         串行化:可以解决以上的所有情况.
​    JDBC进行事务的管理:
​         Connection:
​             setAutoCommit(boolean flag);
​             commit();
​             rollback();

0 个回复

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