学习笔记Day4

这篇博客是跟day3一起写的,哎还是那个感叹,我不喜欢过年,去他妈的!!!!
还有一个东西,这次将HTTP请求头的含义粘贴复制过来了,这个东西绝对是个好东西,跟大家分享一下,哈哈哈!!!!!

HTTP请求头和响应头含义
1)请求(客户端->服务端[request])
GET(请求的方式) /books/java.html(请求的目标资源) HTTP/1.1(请求采用的协议和版本号)
Accept: /(客户端能接收的资源类型)
Accept-Language: en-us(客户端接收的语言类型)
Connection: Keep-Alive(维护客户端和服务端的连接关系)
Host: localhost:8080(连接的目标主机和端口号)
Referer: http://localhost/links.asp(从来于哪里)
User-Agent: Mozilla/4.0(客户端版本号的名字)
Accept-Encoding: gzip, deflate(客户端能接收的压缩数据的类型)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(缓存时间)
Cookie(客户端暂存服务端的信息)
Date: Tue, 11 Jul 2000 18:23:51 GMT(客户端请求服务端的时间)
2)响应(服务端->客户端[response])
HTTP/1.1(响应采用的协议和版本号) 200(状态码) OK(描述信息)
302(客户端请求服务端,但服务端没有对应的资源,服务端要客户端再次请求找其它的服务端,即客户端二次请求,重定向)
307(客户端请求服务端,但服务端没有对应的资源,服务端自行再次请求找其它的服务端,即客户端一次请求,转发)
304(客户端请求服务端,此时客户端缓存中有,无需再从服务端下载新的内容,服务端叫客户端自行找缓存,优化)
500(客户端请求的资源,服务端存在,但在执行时出错)
Location: http://www.baidu.com(服务端需要客户端访问的页面路径)
Server:apache tomcat(服务端的Web服务端名)
Content-Encoding: gzip(服务端能够发送压缩编码类型)
Content-Length: 80(服务端发送的压缩数据的长度)
Content-Language: zh-cn(服务端发送的语言类型)
Content-Type: text/html; charset=GB2312(服务端发送的类型及采用的编码方式)
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服务端对该资源最后修改的时间)
Refresh: 1;url=http://www.it315.org(服务端要求客户端1秒钟后,刷新,然后访问指定的页面路径)
Content-Disposition: attachment; filename=aaa.zip(服务端要求客户端以下载文件的方式打开该文件)
Transfer-Encoding: chunked(分块传递数据到客户端)
Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务端发送到客户端的暂存数据)
Expires: -1//3种(服务端禁止客户端缓存页面数据)
Cache-Control: no-cache(服务端禁止客户端缓存页面数据)
Pragma: no-cache(服务端禁止客户端缓存页面数据)
Connection: close(1.0)/(1.1)Keep-Alive(维护客户端和服务端的连接关系)
Date: Tue, 11 Jul 2000 18:23:51 GMT(服务端响应客户端的时间)

request取得请求头{
1.request.getHeader(String):String
2.request.getHeaderNames():Enumeration 取出所有的请求头名字
3.request.getHeaders(String):Enumeration 取出所有请求头名字对应的值
}
获取请求的参数{
1)request.getParameter(String)
request.getParameterValues(String):String[] 注:一般要求返回的值是一个数组的时候用的方法是待
2)BeanUtils框架能够自动将String参数设置JavaBean对象中
无需理会参数的类型,个数,但是参数名一定要和javaBean中的字段一致
String->8种基本类型自动转换,非8种基本类型需要自己添加转换器
String或String[]类型的参数自动感知转换
}
request应用{
1)防盗链(就是判断一下现在的访问来自于哪里获取请求头的referer)
2)搜集表单数据
3)中文乱码的问题
1.POST方式下乱码产生的原因:浏览器发送的编码方式与Request对象的编码方式不一致(解决方案request.setCharacterEncoding(“UTF-8”);)
这个方法是对请求体的乱码进行操作,其他地方的乱码不能够用此方法
2.GET乱码产生原因:中文(UTF—8)->转换成%AB%CD ->ISO8859-1(Tomcat默认返回的response等对象的编码) -> ???(乱码)
解决过程 解码过程:???->ISO8859-1 ->%AB%CD->UTF-8 注:但是我现在的容器没有乱码的问题 这个东西值得商榷??
}
java代码完成转发307{
转发是服务器内部完成的事
this.getServletContext().getRequestDispatcher(“转发到的servlet”).forward(request,response);
如果原访问是post 转发后还是post
如果原访问时get 转发后还是get
request也可以完成转发request.getRequestDispatcher(“/WEB-INF/fail.html”).forward(request, response);
上一个servlet转发到下一个servlet时他们的request
}
java代码完成重定向302{
重定向是需要服务端和客户端联动 相当与再一次访问
response.sendRedirect(“/Test8/s7”);
如果原访问时post 重定向后是get
如果原访问时get 重定向后还是get
}
错误代码405:表示没有找到相应的方法 eg:你get方法访问相对应的servlet没有对应的doGet()方法
请求的组成{
请求行:决定post/get方法
请求头:带着一些请求参数 get方法常用以及相关的头信息
请求体:带着请求信息post方法常用
}
WebRoot是一个共有目录外部可以直接访问
WEB-INF目录是一个私有目录外界无法直接访问,将一些需要保护的页面放在其中
MVC框架{
在servlet/JavaBean模型中 V(视图)由前台html/jsp页面组成;M(模型)由JavaBean充当
C(控制器)由servlet从当

后台的数据验证由javabean充当

}
forward()方法{
forward()之前的输出,如果是输出到缓冲区,再转发到其他servlet,那么原缓冲区的数据忽略不计
forward()方法之前的输出,如果真正输出到浏览器,再转发到其他的servlet中,则不能够转发
forward()方法之前的输出,如果是对响应头的设置,会保留到转发的其他的servlet中
}
PrintWrite.flush()表示将数据强制输出到浏览器上
重定向/转发区别{
转发只相当于当前web应用,而不能转发到其他的web应用
重定向可以在当前web应用之外的web应用之间重定向
转发时,浏览器地址栏地址不变,重定向时地址栏地址改变
转发时服务端内部行为,浏览器不参与 重定向时浏览器和服务端的共同行为
转发时两个servlet的request相同 重定向时的request不同
request二义性 请求对象 和域对象 ServletContext也是与对象
}
request.getRequestDispatcher(“common/foot.html”).include(request, response);将前面的foot.html拼接到一个页面

会话(Cookie/Session){
用户输入URL地址,有效访问某个网站,在该网站上的一系列有效操作,随后关闭浏览器的整个过程,叫一次回话
会话主要是解决服务端如何保存每个客户端对应的私有信息
主要有两种技术(Cookie/Session)
}
Cookie{
Cookie在服务端产生 然后保存在response对象中,发送客户端客户端再保存在某个文件夹下
在创建cookie时应该设置保存时间
Cookie的更新就是再一次向浏览器设置相同名字的cookie
}

最后还是来一句,新年快乐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值