本文共 5193 字,大约阅读时间需要 17 分钟。
目录
1. http:超文本传输协议,是无状态协议,对于事务处理没有记忆能力。也就是说,当客户端一次http请求完成后,客户端再发送一次http请求,http并不知道当前客户端是一个“老用户”。使用cookie来解决无状态问题。
2. 常见的http方法有
GET:通过URL传参给服务器
POST:用于传输信息给服务器
PUT:传输文件,保存到对应URI位置
DELETE:删除文件,删除对应URI位置的文件
HEAD:获得报头首部,一般用于验证URI是否有效
OPTIONS:查询相应URI支持的http方法
当然也不是绝对的,比如可以使用POST新增数据,PUT修改数据,GET获取数据,DELETE删除数据
3. 一次完整的http流程(7个步骤)
1) 建立TCP连接
2) web浏览器向web服务器发送请求行
一旦建立了TCP连接,web浏览器就会向web服务器发送请求命令
如:GET/sample/hello.jsp
3) web浏览器发送请求头
浏览器发送其请求命令后,还要以头信息的形式向web服务器发送一些别的信息,之后浏览器发送一空白行来通知服务器,它已经结束了该头信息的发送。
4) web服务器应答
应答的第一部分是协议的版本号和应答状态码
5) web服务器发送应答头
正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据。
web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息发送到此结束。
6) web服务器向浏览器发送数据
接着,它就以Cotent-Type应答头信息所描述的格式发送用户所请求的实际数据。
7) web服务器关闭TCP连接
4. URI和URL
URI:统一资源标识符,用来唯一的标识一个资源
URL:统一资源定位符,是一种具体的URI。即URL可以用来标识一个资源,而且还指明如何定位这个资源
5. 常见的http相应状态码
200:请求被正常处理
400:请求报文语法有错,服务器无法识别
404:服务器无法找到对应资源
500:服务器内部错误
301:永久重定向
302:临时重定向
1XX系列:代表请求已被接受,需要继续处理;
2XX系列:代表请求已成功被服务器接收、理解并接受;
3XX系列:用来重定向;
4XX系列:表示请求错误;
5XX系列:代表服务器在处理请求过程中有错误或者异常发生。
| GET | POST |
请求参数的位置上 | 请求参数放在URL地址后面,以?的形式进行拼接 | 请求参数放在http请求包中 |
数据携带上 | 在URL地址后附带的参数是有限的,其数据容量通常不能超过1k | 在请求的实体内容中向服务器发送数据,传输的数据量无限制 |
用途上 | 一般用来获取数据 | 一般用来提交数据 |
传输的数据类型 | 只能传输字符串类型 | 可以传输各种类型的数据,包括对象 |
速度 | GET方式比POST方式快 |
|
| 重定向:redirect | 请求转发:forward |
用法不同 | Response.sendRedirect(“地址”) | Request.getRequestDispatcher(“地址”).forward(request,respose); |
发送位置不同 | 发生在浏览器 | 发生在服务器,转发对浏览器透明,浏览器不知道转发的动作 |
地址栏 | 变化 | 不变 |
速度 | 慢 | 快 |
跳转的时间不同 | 整个页面执行完之后才执行跳转 | 执行跳转语句时就会立即跳转 |
是否是同一个请求 | 否,request域对象无效 | 是 |
能够去往的URL的范围不一样 | 是服务器跳转,可以去往任何资源 | 必须在同一台服务器下完成 |
传输的数据类型不同 | 只能传递字符串 | 可以传输各种类型的数据,包括对象 |
| Cookie | Session |
从存储方式上 | 只能存储字符串,如果要存储非ASCII字符串还要对其编码 | 可以存储任何类型的数据,可以把session看作是一个容器 |
从隐私安全上 | cookie存储在浏览器中,对客户端是可见的。信息容易泄露出去,如果使用cookie,最好将其加密 | session存储在服务器上,对客户端是透明的。不存在敏感信息泄露问题 |
从有效期上比较 | 保存在硬盘中,只要设置maxAge属性为比较大的正整数,即使关闭浏览器,cookie仍然存在 | 保存在服务器,设置maxInactiveInterval属性值来确定session的有效期。并且session依赖名为JSESSIONID的cookie,该cookie默认的maxAge属性为-1,如果关闭浏览器,session失效 |
从对服务器的负担比较 | 不占用服务器资源。 像baidu,Sina这样大型的网站,一般使用cookie进行会话跟踪 | 每个用户都会产生一个session,当很多用户并发访问时,会消耗大量内存 |
从浏览器的支持上比较 | 如果浏览器禁用了cookie,那么cookie就是无用的了 | 如果浏览器禁用了cookie,session可以通过URL地址重写来进行会跟踪 |
从跨域名上比较 | 可以设置domin属性来实现跨域名,Servlet中通过setDomain()设置 | 只在当前域名内有效 |
大小限制 | Cookie最多有50个,一个Cookie 4kb |
|
1. jsp:全称为java server pages,是一种动态网页开发技术。
它使用JSP标签在HTML网页中插入Java代码,标签通常以<%开始%>结束;
Jsp本质上是一个servlet,jsp编译时,会首先编译成servlet文件,然后编译成class文件。
包含9大内置对象,4大域对象
内置对象:request,response,session,application,page,pageContext,config,exception,out
作用域:request,session,application,pageContext
2. Servlet:是一个web容器,是一种独立于平台和协议的服务端的java技术,可以动态生成web页面
Servelt生命周期
1)加载servlet
当tomcat第一次访问servlet的时候,tomcat会负责创建servlet实例
2)初始化
当servlet被实例化后,tomcat会调用init()方法初始化这个对象,只会初始化一次
3)处理服务
当浏览器访问servlet的时候,调用service()方法处理请求
4)销毁
释放servlet所占的资源,销毁方式有:手动销毁和关闭服务器销毁
3. 区别
JSP是servlet技术的扩展,本质上就是servlet的简易方式
最大的不同点在于:
Servlet的应用逻辑在java文件中,并且完全从表示层中的HTML里分离出来;
JSP可以是java和html组合成一个扩展名为.jsp的文件
JSP侧重于视图,servlet主要用于控制逻辑
jsp有9大内置对象和4大域对象
1. 4大域对象
request,作用于同一个请求之内
session,作用于一个会话的生命周期内
application,作用于整个应用,为所有会话所共享
pageContext,作用于当前页面
作用范围从大到小依次为:application>session>request>pageContext
2. 9大内置对象
request,对应servlet中HttpServletRequest
response,对应servelt中HtppServletResponse
session,对应servelt中HttpSession
application,对应servlet中ServletContext
config,对应servlet中ServletConfig
注:这5个对象和servlet的API是一样的
page,代表当前JSP页面,相当于普通java类的this
pageContext,代表JSP页面编译后的内容,封装了对其他8大内置对象的引用,可通过它获取其他8大内置对象
exception,是java.lang.Exception类的对象,封装了JSP页面抛出的异常信息
out,用于向浏览器输出数据,out对象的类型是JspWriter(可理解为是带缓存的PrintWriter)
1. 过滤器(filter)
过滤器是一个驻留在服务器端的web组件,它可以截取客户端和服务器之间请求与响应信息,并对这些信息进行过滤。
常见的过滤器用途主要包括:对用户请求进行统一认证,对用户的请求进行记录和审核,对响应内容进行压缩以减少传输量等
2. 监听器(listener)
监听器就是application、session、request三个对象的创建、销毁或者往其中添加修改属性时自动执行代码的功能组件。
常见的有:
监听对象创建于销毁,有:
ServletContextListener,HttpSessionListener,ServletRequestListener
监听对象属性添加删除和替换,有:
ServletContextAttributeListener;
HttpSessionAttributeListener;
ServletRequestAttributeListener
常见的监听器用途主要包括:网站在线人数技术以及监听用户的行为(管理员踢人)
3. 区别
过滤器依赖底层web容器
监听器不依赖容器
Ajax,是异步javascript和xml,是一种创建交互式应用的网页开发技术,实现客户端与浏览器,可以在不必刷新整个浏览器的情况下,与服务器进行异步通讯的技术。
Ajax的底层原理是基于XMLHttpRequest对象
Ajax实现流程:
1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象
2.创建一个新的http请求,并指定该http请求的方法、url及验证信息
3.设置回调函数
4.发送请求
5.使用异步调用返回的数据
6.将数据渲染到页面上,使用javasrcipt和dom实现局部刷新
XMLHttpRequest对象详解
属性
1. onreadystatechange:请求状态改变事件触发器(readyState变化时会调用此方法),一般用于指定回调函数。
2. readyState:请求状态readyState一改变,回调函数被调用
5个状态:0,1,2,3,4
0:未初始化
1:open方法成功调用以后
2:服务器已经成功应答客户端的请求
3:交互中。http头信息已经接收,响应数据尚未接收
4:完成,数据接收完成
3. responseText:服务器返回的文本内容
4. responseXML:服务器返回的兼容DOM的XML内容
5. status:服务器返回的状态码
6. statusText:服务器返回状态码的文本信息
方法(常用)
1. open(),创建http请求
2. setRequestHeader(),设置消息头
3. send(),发送请求给服务器,传递数据
案例
@RequestMapping("/ajax.action")public void ajax(String username,HttpServletResponse response) throws IOException { System.out.println("AjaxTest.ajax()"); PrintWriter writer = response.getWriter(); writer.write("success");}
get/post/put/delete/head/options
200:一切正常
301:永久重定向
302:临时重定向
403:表示资源不可用。服务器理解客户的请求,但拒绝处理它,通常由于服务器上文件或目录的权限设置导致的WEB访问错误。
404:找不到资源
500:服务器内部错误
503:HTTP状态码,是服务器出错的一种返回状态
转载地址:http://xsqen.baihongyu.com/