黑马程序员技术交流社区

标题: [石家庄校区]web阶段学习笔记 [打印本页]

作者: 韶华白首zy    时间: 2018-5-21 15:02
标题: [石家庄校区]web阶段学习笔记
HTTP
A概述
      用来规定浏览器与服务器之间需要遵守的规则
B作用,特点
      规范浏览器与服务器之间的数据传递.是基于请求与相应的模型.必须先有请求后又相应.请求和相应必须成对出现
C结构
      
请求
a提交方式:(1)get:提交的参数会显示在地址栏上,而且有大小的限制
(2)post:提交的参数不会显示在地址栏中,而且没有大小的限制
b提交路径
c协议版本
都是兼职对的形式显示的,一般一个key对应一个value,也可能对应多个
(1)User-Agent:代表浏览器类型,不同的浏览器使用不同的编码
(2)Referer:代表网页的来源,就是防盗链
(3)If-Modified-Since:查找本地缓存
就是post提交方式的提交参数
响应
A协议的版本
B状态码
  200:成功
  302:重新定向
  304:查找本地资源
  404:资源不存在,或地址错误
  500:服务器内部错误,其实就是代码书写错误
都是键值对,一般一个key对应一个value,也可以对应多个
(1)Last-Modifide:查找本地缓存
(2)Content-Dispostio:文件下载使用的一个头信息
(3)Location:重新定向跳转的路径
(4)Refrech:定时刷新/定时跳转
显示浏览器页面的内容
Servlet
A:概述
     就是一个运行在web服务器上的Java小程序,用来接受和响应从客户端发过来的请求,通常使用http协议,就是由san公司开发的一个动态网页开发技术
B:作用
     用来处理从客户端浏览器发送的请求,并且可以对请求作出响应
C格式
      编写一个类实现servlet接口
     将编写的这个类配置到服务器中
D:servlet的生命周期*****(面试)
      用户第一次访问servlet的时候,服务器会创建一个servlet的实例,那么servletinit方法就会执行,热河一次服务器请求,都会创建一个新的线程访问servlet中的service方法,service方法=内部根据请求方式的不同调用doxxx方法,servlet在服务器中移除掉或者关闭服务器,servlet的实例就会销毁,那么destroy方法就会执行,整个生命周期中有且只有找一个servlet
E:servlet的相关配置
在服务器启动时,就会创建servlet,当第一个请求发出时会进行初始化,这个过程会消耗很多资源,导致等待.为了提升客户的体验,一般会把初始化的过程提前到服务器启动时就初始化.web.xml中的<servlet>标签中使用<load-on-startup>2</load-on-statup>,在标签中间传入整数,整数的数值越小优先级越高,但是最高为2,因为1已经被占用,用来显示404,500等错误信息.
F:servlet的常用方法:
SerletRequest
:客户端发送过来的请求,想要获得 请求的数 据,都从此处获得
ServletResponse
:服务器返回的数据,想要获得返回的数据内容都要从此获得
获得客户端传来的内容
设置响应头,使用http协议中的refresh头信息,用来完成定时页面的跳转
String  getParameter(String name)
用于接受一个一个名称对应的一个值得数据
Void  addDateHeader(String name , long date)
针对一个key对应多个value的响应头
String[]  getParameterValues
用于接收一个名称对应多个值的数据,例如复选框
setHeader(String name,String value)
设置响应头
Map    getParemeterMap
用于接收表单中的所有数据,mapkey是表单提交的参数名称,mapvalue就是提交的参数的值
setDateHeader(String name , long date)
String getMethod()
获得请求方式
setInHeader(String name , int value)
String getRequestURI()
获得请求路径,项目内路径
Void setStatus(int status)
响应行设置状态码
StringBuffer  getRequestURL()
获得请求路径,全路径
Void addDateHeader(String name ,long date)
响应头针对一个key对应多个value的头信息,追加内容
String getRemoteAddr()
获得客户机相关信息,ip地址
void addHeader(String name,String value)
String getContextPath()
获得工程名
Void addIntHeader(String name,int value)
Void  getAttribute(String name)
作为域对象存取数据,作用范围就是一次请求的范围,客户端向服务器发送了一次请求后服务器就会创建request对象.当服务器对这次请求作出响应后,就会销毁
Void setDateHeader(tring name , long date)
针对一个key对应一个value的头信息,会发生数据的覆盖
Void setAttribute(String name,Object o)
Void setHeader(String name , String value)
设置头文件
Object  removeAttribute(String name)
Void setIntHeader(String name,int value)
response.setCharacterEncoding(“UTF-8””);
设置response的缓冲区编码
response.setContentType("text/html;charset=UTF-8");
相当于上面两句
ServletOutputStream  etOutputStream()
响应体使用字节流,用于文件的下载
PrintWriter  getWriter()
使用字符流,用于向页面输出内容
文件下载的方式
(1)超链接下载,直接将文件路径写到超链接href.前提是文件类型浏览器不支持,如果支持就会直接打开要下载的文件
(2)手动编写代码完成文件下载
设置两个头和一个流
Content-Type          :文件的mime类型
Content-Disposition:    以下载的形式打开文件,即使文件可以再网页直接打开
InputStream:          文件的输入流
G:数据与数据库的链接方法
servlet
service
dao
用于接收来自客户端的请求数据,并且把数据传到service进行处理.在数据处理完成后,把结果传递给客户端
(1)接收表单传来的参数
(2)将传来的参数封装到实体对象中
(3)调用业务层处理数据
(4)根据处理结果显示信息
   
将来自servlet传过来的数据进行处理,完成业务逻辑,并且把数据传递给数据库dao
对传进来的数据进行增删改查的操作,只是操作数据库
G:sevlet的登录案例:
(1)页面提交参数:<form>标签中将数据提交到servlet
(2)servlet或得请求参数:request.getParmeter();
(3)将得到的数据封装到一个对象中
(4)调用业务层对数据进行处理
(5)业务层将数据传递给dao,与数据库的数据进行比对,再将比对结果传回.
(6)根据传回的数据结果做出响应
域对象:存储的数据有一定范围的成为域对象
ServletContext
被多个用户共享,在服务器启动的时候就会被创建.每个web项目都会创建一个ServletContext对象,在服务器关闭的时候销毁.作为域对象存的数据有一定的范围
(1)用来获取全局初始化参数
(2)用来获得文件的mime的类型
(3)作为域对象存取数据
(4)在有servlet环境下this.getServletContext获得该对象
Request
(1)创建:从客户端向服务器发送请求,就会创建一个request对象
(2)销毁:服务器为这次请求做出响应之后,服务器就会销毁request对象
(3)作用范围:一次请求
Void  setAttribute(String name , Object object)
用来存数据
获得客户机的信息
getRemoteAddr()
Getmethod()
GetRequestURI()
getRequestURL()
Object  getAttribute(String name)
用来向ServletContext中获得数据
获得请求参数
getParameter()
getParameterValue()
getparameterMap()
Void  removeAttribute(String name)
servletContxt中移除数据
作为域对象的三个方法
getAttribute()
setAttribute()
removeAttributr()
只要是域对象都会有这三个方法
InputStream  getResourceAsStream(String path)
根据提供路径读取web文件返回一个文件的输入流(就是读取文件的内容)
String  getRealPath(String path)
返回一个路径的绝对路径(带磁盘的路径)
String  getInitParameter(String name)
读取全局初始化参数
Enumeration   getInitParmeterNames()
读取全局初始化参数(返回的数据类型为枚举)
String getMimeType(String file)
获得文件的mime类型
H:接收参数的乱码处理
       Post提交方式的处理:
              设置request的缓冲区编码:request.setCharacterEncoding(“UTF-8”);
         Get提交方式的处理:
              (1)修改服务器提交的编码
              (2)采用URLEncoder URLDecoder类对中文进行编码和解码.
              (3)* 使用String类的构造方法:
                    username = new String(username.getBytes("ISO-8859-1"),"UTF-8");
                            System.out.println(username);
I:转发和重定向
    重定向:response.sendRedirect(String path); -- 完成重定向
    转发:request.getRequestDispatcher(String path).forward(request,response);
重定向和转发的区别:
     (1)转发的地址栏不变,重定向的地址栏发生变化
     (2)转发是一次请求一次响应,重定向是两次请求两次响应
     (3)request域对象存的数值在转发中是有效的,在重定向无效
     (4)转发的路径不需要加工程名.重定向的路径需要加工程名
                     Cookie
A:会化技术:
      用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后,将浏览器关闭的的过程称为是一次会话
B:常见的会话技术
      Cookie:将数据保存到客户端浏览器
      Session:将数据保存到服务器端
C:会话技术的使用:
      将私有的数据,购物的信息数据保存到会话技术中
(1)向浏览器保存数据
   HttpServletResponse有一个方法
     Void addCookies();
(2)获得浏览器带过来的Cookies
        HttpServletRequest有一个方法
          Cookie[]getCookies();
(3)创建一个Cookie对象
      Cookie(String name,String value);
D:常用API:
Getname();
Getvalue();
setDomain(String domain); -- 设置Cookie的有效域名.
setPath(String path); -- 设置Cookie的有效路径.
    setMaxAge(int maxAge); -- 设置Cookie的有效时间.
JSP
A:概述:
就是java代码+HTML的元素+jsp自己的一些东西.就是动态网页开发技术
B:执行过程:
Jsp会被翻译成Servlet,编译成class进行执行的
C:注释:
一个原则,什么样的代码种类,用什么样的注释,快捷键ctrl+shift+/,会根据代码种类自动生成不同的注释格式
D:指令
   (1)page:<%@  %>是用来设置jsp
   (2)include:指示jsp包含其他页面.使用相对路径
   (3)taglib:指示jsp引入标签库
E:内置对象(就是可以在jsp中直接使用的对象)
   
对象名
对象的真实类型
方法
request
HttpServletRequest
response
HttpServletResponse
session
HttpSession
application
ServletContext
page
Object
pageContext(域对象只在jap中存在)
PageContext
config
ServletConfig
out
JspWriter
exception
Throwable
Session
A:概述
Cookie本身有大小和个数的限制,session没有限制,cookie保存在客户端,session保存在服务器端.
B:执行原理:
是基于cookie
C:获得session:
request.getSession();
D:是域对象
创建:服务器端第一次调用getSession(),就会创建
销毁:三种情况
    (1)过期,默认时间为30分钟
    (2)非正常关闭服务器,如果正常关闭,会序列化到硬盘
    (3)手动调用session.invalidate();
作用范围:多次请求(一次对话)
EL表达式
A:作用:
     简化jsp的代码,减少<%%>
B:语法
      ${el的表达式}
C:功能
      获取数据
      执行运算
      操作web开发常用的对象
      调用Java中的方法
JSTL
A:作用:
EL结合替换页面中的<%%>
B:JSTL的标签库组成
     core(核心标签),fmt(国际化标签),xml(XML标签),sql(SQL标签),fn(JSTL提供EL函数库)
C:JSTL的使用
     (1)引入JSTL相关的jar
     (2)在页面中引入标签库<%@ taglib uri=”” prefix=””%>






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2