本帖最后由 小石姐姐 于 2018-2-8 16:10 编辑
知识点总结
增强类的三种方式
一种方式:继承的方式.
二种方式:装饰者模式方式.
三种方式:动态代理的方式.
【HTTP的协议的概述】
协议:
什么是协议:规定双方需要遵守的规则.
HTTP协议:
什么是HTTP协议:用来规定浏览器与服务器之前需要遵守的规则.
HTTP协议的作用:规范浏览器和服务器之间的数据传递.
HTTP协议的特点:
基于请求和响应的模型.
必须先有请求后有响应.
请求和响应必须成对出现.
默认的端口号是80.
HTTP协议的版本:
1.0 :每次响应后即刻关闭了连接.
1.1 :现在使用.不是每次响应后挂断,等待长时间以后没有请求会挂断.
【HTTP协议的详解】
请求部分
请求行
提交方式:
提交方式有很多,常用的GET和POST:
GET和POST的区别:
GET的提交的参数会显示到地址栏上,而POST不显示.
GET往往是有大小限制的,而POST没有大小的限制.
GET没有请求体,而POST有请求体.
提交路径:
协议版本:
请求头
都是键值对的形式显示的.一般一个key对应一个value,也有个别的是一个key对应多个value.
User-Agent :代表浏览器的类型. 解决浏览器版本不一致问题
文件下载:下载中文文件:IE使用URLEncodor进行编码,而Firefox使用Base64编码.
Referer :代表的是网页的来源. --- 防盗链.
If-Modified-Since :通常与响应中的头Last-Modified一起使用查找本地缓存.
请求体
就是POST提交方式的提交的参数.
响应部分
响应行:
协议版本
状态码 :
200 :成功
302 :重定向
304 :查找本地缓存
404 :资源找不到
500 :服务器内部错误
状态码描述
响应头:键值对,一般一个key对应一个value,也有一个key对应多个value.
Last-Modified :与请求中的If-Modified-Since一起使用查找本地缓存.
Content-Dispostion :专门用来下载用的,让浏览器以下载的方式打开文件
Location :重定向的跳转的路径.
Refresh :定时刷新/定时跳转.
响应体:显示浏览器的页面的内容.
1.浏览器端如果想直接访问Servlet的话
路径的编写:使用: /工程名/servlet的虚拟路径
2.浏览器如果想要直接访问.html.jsp或者其他静态资源
路径的编写:使用: /工程名/资源所在的路径
3.servlet A想要跳转其他servlet B
1.重定向
路径的编写:使用: /工程名/B对应的虚拟路径
2.请求转发
路径的编写:使用: /B对应的虚拟路径
4.servlet A想要跳转到 .html或者.jsp
1.重定向
路径的编写:使用: /工程名/.jsp或者.html所在的子路径
2.请求转发
路径的编写:使用: /.jsp或者.html所在的子路径
5.servlet想要读取项目下文件
1.需要用ServletContext的对象来读取
1.ServletContext.getResouceAsStream("资源路径(不用再加工程名)")
2.ServletContext.getRealPath("资源路径(不用再加工程名)")
浏览器向服务器携带中文?
get方式
get的参数都藏在请求行中,请求行中编码是固定ISO8859-1
解决方案: 通过String的构造方式来解决 例如: 文件名是filename---> new String(filename.getByte("ISO8859-1"),"UTF-8");
post方式
post的方式参数藏在请求体中,将请求体中的编码改成UTF-8就行了
request.setCharacherEnconding("UTF-8");
服务器向浏览器输出中文的时候乱码解决???
设置响应头
响应头的编码是固定的ISO-8859-1,所有我们需要给浏览器能看懂的东西
if(header.contains("Firefox")){
filename = base64EncodeFileName(filename);
}else{
filename = URLEncoder.encode(filename, "UTF-8");
}
public static String base64EncodeFileName(String fileName) {
BASE64Encoder base64Encoder = new BASE64Encoder();
try {
return "=?UTF-8?B?"
+ new String(base64Encoder.encode(fileName
.getBytes("UTF-8"))) + "?=";
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
设置响应体
getOutputStream
getWriter
setContextType("text/html;charset=UTF-8")---> setHeader("Context-Type","text/html;charset=UTF-8 ") setCharaterEnconding("UTF-8");
HTTP协议的详解
请求部分
请求行
提交方式:
提交方式有很多,常用的GET和POST:
GET和POST的区别:
GET的提交的参数会显示到地址栏上,而POST不显示.
GET往往是有大小限制的,而POST没有大小的限制.
GET没有请求体,而POST有请求体.
提交路径:
协议版本:
请求头
都是键值对的形式显示的.一般一个key对应一个value,也有个别的是一个key对应多个value.
User-Agent :代表浏览器的类型. --- 文件下载:下载中文文件:IE使用URLEncodor进行编码,而Firefox使用Base64编码.
Referer :代表的是网页的来源. --- 防盗链.
If-Modified-Since :通常与响应中的头Last-Modified一起使用查找本地缓存.
请求体
就是POST提交方式的提交的参数.
响应部分
响应行:
协议版本
状态码
200 :成功(200以内都是成功)
260 : 部分成功
302 :重定向
response.sendRedirect(需要跳转到的页面)
304 :查找本地缓存
404 :资源不存在
500 :服务器内部错误
状态码描述
响应头:键值对,一般一个key对应一个value,也有一个key对应多个value.
Last-Modified :与请求中的If-Modified-Since一起使用查找本地缓存.
Content-Dispostion :文件下载的时候使用的一个头信息.
Location :重定向的跳转的路径.
Refresh :定时刷新/定时跳转.
格式: Refresh:等待的秒数;url=需要跳转的页面
响应体:显示浏览器的页面的内容.
Servlet
什么是Servlet:
就是一个运行在WEB服务器上的小的Java程序,用来接收和响应从客户端发送过来的请求,通常使用HTTP协议.
Servlet就是SUN公司提供的一个动态网页开发技术.
Servlet的作用:
用来处理从客户端浏览器发送的请求,并且可以对请求作出响应
使用Servlet:
编写一个类实现Servlet接口.
将编写的这个类配置到服务器中.
使用ServletRequest接收参数
常用方法:
String getParameter(String name); ---用于接收一个名称对应一个值的数据.
String[] getParameterValues(String name)---用于接收一个名称对应多个值的数据.
Map getParameterMap(); ---用于接收表单中的所有的数据,Map的key是表单提交的参数名称,Map的val
|
|