黑马程序员技术交流社区

标题: 【石家庄校区】WEB第二阶段笔记总结 [打印本页]

作者: 江南旧巷柳絮飞    时间: 2018-2-4 15:55
标题: 【石家庄校区】WEB第二阶段笔记总结
本帖最后由 小石姐姐 于 2018-2-8 15:02 编辑

                     WEB第二阶段笔记总结
ServletContext的功能
功能一:读取全局初始化参数
getInitParameter(String name)
getInitParameterNames()
在web.html中配置
<context-param>
<param-name>username<param-name>
<param-value>root<param-value>
</context-param>
功能二:获取文件的MIME的类型
getMimeType(String file)
功能三:作为域对象存取数据
功能四:读取web项目下的文件

使用类的加载器来读取文件.
文件的下载
使用response对象 代表 的是响应对象,从服务器向浏览器输出内容
设置状态码:setStatus(int src)
响应头:
addDateHeader(String name,long date)
addHeader(String name,String value)
addIntHeader(String name,int value)
针对一个key对应多个value的头信息 add是追加
setDateHeader(String name ,long date)
setHeader(String name ,String value)
setIntHeader(String name,String value)
针对的是一个key对应一个value的头信息 set 是覆盖
响应体:
getOutputStream()字节流向页面输出
getWriter()字符流向页面输出

文件的下载的方式
1、超链接下载:直接将文件的路径写到超链接的href中----前提是文件类型浏览器不支持
2、手动编写代码的方式完成文件的下载
设置两个头和一个流:
Content-Type:文件的MIME的类型
Content-Disposition:已下载的形式打开文件
InputStream :文件的输入流

中文文件的下载

输出响应内容的方法:
向页面响应的方法:
getOutputStream()
getwriter()
使用字节流输出中文时是否乱码
解决:
设置中文转成字节数组取出的时候的编码
设置浏览器默认打开的时候的编码
response.setHeader("Content-Type","text/html;charset=UTF-8")
使用字符流输出中文时是否乱码
一定会乱码。response使用字符流有缓冲区
response的字符流的缓冲区的默认编码是ISO-8859-1编码根本不支持中文
解决:
设置response的字符流的缓冲区的编码
设置浏览器默认打开的时候采用的字符集编码
response.setCharacterEncoding("UTF-8")
request代表用户的请求
常用API:
功能一:
获得请求的方式:
getMethod()
获得请求的路径:
getRequestURI()
getRequestURL()
获得客户相关的信息:
获得IP地址
getRemoteAddress()
获得工程名
getContextPath()
功能二:获得从页面提交的参数
getParameter(String name)
getParameterMap()
getParaterNames()
getParameterValues()
功能三:作为域对象存取数据
getAttribute()
setAttribute()
removeAttribute()
request提交中文乱码的问题
解决:
post的参数在请求体中,直接达到 后台的Servlet数据封装到Servlet中的request中request中也有一个缓冲区
设置request的缓冲区的编码
request.setCharacterEncoding("UTF-8")
get的解决方法:
1、修改tomcat的字符集的编码
2、使用URLEncoder和URLDecoder进行编码和解码的操作
3、使用String的构造方法
String ss=newString(name.getBytes("ISO-8859-1"),"UTF-8")
Request 作为域对象存储数据
作用范围:
就是一次请求的范围,
创建:客户端向服务器发送一次请求以后,就会创建一个对象
销毁:当服务器对这次请求做出响应之后
重定向和转发的区别
1、重定向的地址栏会发生变化,转发的地址栏不变
2、重定向有两次请求两次响应,转发一次请求一次响应
3、重定向路径需要加工程名,转发的路径不需要加工程名
4、重定向可以跳转到任意网站,转发只能在服务器内部转发

cookie
显示上一次访问的时间和显示第几位登陆
会话技术:
用户打开浏览器访问页面,访问网站的多个页面,访问完成后关闭浏览器的过程称为一次会话
常见的会话技术:
将私有的数据需要保存在会话技术中
Cookie:将数据保存到客户端浏览器(存在自己的浏览器中)
Session:将数据保存到服务器端(为每个人开辟了一份空间存贮自己的数据,并有一个钥匙打开自己的空间)
使用会话技术:
向浏览器保存数据:
使用response方法: addCookie()
获取浏览器带来的数据:
使用request方法:getCookies()
创建一个Cookie对象
Cookie(Stringname,String value)
JSP:
Java服务器端的页面
JSP的执行过程:
JSP会被翻译成Servlet,编译成class进行执行
JSP嵌入Java代码:
1、<%! %> :会被翻译成类中的成员部分,定义成员变量,定义成员方法Servlet是单例线程是不安全的,尽量少在类中定义成员变量 写分号
2、<% %>:翻译成类的service方法内部的内容,定义变量,定义类,直接写代码块 写分号
3、<%= %>翻译成service方法内部的out.print()不能写分号
Cookie常用的API
getName()
getValue()
setDomain(String domain)设置cookie的有效域名
setPath(String path)设置cookie的有效路径
setMaxAge(int maxAge)设置cookie的有效时间
Cookie的分类有关
会话级别的cookie:默认的Cookie,关闭浏览器Cookie就会销毁
持久级别的Cookie,可以设置
cookie本身是有大小和个数的限制的
cookie数据保存在客户端,session数据保存在服务器端
session执行原理: 是基于cookie的是一个域对象
session的id是cookie携带的 从服务器回写id到浏览器
延长Cookie的时间,使用不同的浏览器是不同的cookie对象
使用session
request.getSession();没有ID时就会在服务器端开辟一段空间
保证数据的私有化
使用的是nsql radis是其中的一种
session也是一个域对象
session:
创建:服务器端第一次调用getSession()创建session
销毁:三种情况
第一种、session过期,默认值为30min如果想要使其永久有效,可以去conf中的web.xml中的session-timeout的有效时间改为0
第二种、非正常关闭服务器 如果是正常关闭session会序列化到硬盘 如果session存储有对象,这个对象要实现序列化接口
第三种、手动调用。session.invalidate();关闭所有的session,关闭session要使用removeattribute()
作用范围:多次请求(一次会话)

JSP:java serverpages java服务器端的页面(动态的网页开发技术)
jsp=html+java代码+JSP自身的东西
JSP的注释
<!--注释--> java注释 //单行注释/**/多行注释 JSP的注释<%--JSP的注释--%>
JSP注释只能存在于JSP的源代码中,翻译成Servlet后JSP注释就会消失了
html不能注释java代码
JSP的指令
<%@ 指令名称 属性名称="属性值" 属性名="属性值"%>
三个指令:
JSP中有三个指令:page指令, include指令, taglib指令.
  JSP中page指令:<%@ page %> -- 设置JSP的.
*language      :JSP脚本中使用的语言.现在只能写java.
* contentType   :设置浏览器打开这个JSP的时候采用的默认的字符集的编码.
* pageEncoding  :设置文件保存到本地硬盘,以及生成Servlet后,Servlet保存到硬盘上的编码.
*import        :在JSP中引入类对象.但是import可以出现多次.






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