web

来源:互联网 发布:过山车大亨 mac 编辑:程序博客网 时间:2024/06/09 15:02

 一、HTTP

超文本传输协议(HyperText Transfer Protocol),web浏览器和web服务器之间的数据交换。

1、HTTP请求协议包括:请求行、请求头,请求体

  • 请求行:包括请求方式、资源路径、协议/版本(协议规定7种请求方式,常用GET和POST)

GET:将请求参数追加到URL后面,数据大小有限制大约1024,没有请求体。

POST:请求参数显示在请求体,数据大小没有显示

  • 请求头:
  • 请求体:用户提交的参数,键值对,用&连接

2、HTTP响应协议:响应行、响应头、响应体

  • 响应行:包括协议/版本、状态码、状态码描述
状态码:200请求成功
                302请求重定向
                304请求资源没有改变,访问本地缓存
                404请求资源不存在
                500服务器内部错误
  • 响应头:


  • 响应体:服务器发给浏览器的正文

二、基本概念

1、软件架构:

C/S:Client/Server客户端/服务器
B/S:Browser/Server浏览器/服务器

2、J2EE/JavaEE:

企业级开发Java规范(接口),包括sevlet,jsp,jdbc,xml,jta,javamail

3、URL:

Uniform Resource Locator,统一资源定位符是对互联网上资源位置的一种表示

4、JavaWeb三大组件:

Servlet、Filter、Listener

5、servlet的任务:

1)获取请求数据   

2)处理请求      

3)完成响应

6、serlvet 声明周期:

一个servlet对象从创建到销毁的过程。

              1)创建时间:用户第一次访问serlvet创建serlvet的事例(单例)

              2)销毁时间:项目从服务器中移除,或关闭服务器的时候

7、serlvet被访问的流程:

1)用户第一次访问serlvet的时候,首先服务器会创建一个serlvet实例

2)创建serlvet实例的同时执行init()方法

3)每次请求服务器都会创建一个新的线程访问serlvet中的service方法,在service方法内部根据请求方式的不同doXXX方法

4)当serlvet从服务器中移除,或关闭服务器,serlvet实例就会被销毁,destory方法就会执行

8、文件下载需要在http协议中设置两个响应消息头:

设置接受程序处理数据的方式:Content-Disposition:attachment;filename=

设定实体内容的MIME类型:Content-Type:application/x-msdownload

9、tomcat默认编码集是iso8859-1,所以解决乱码:

Request处理乱码

                Post请求:request.setCharacterEncoding(“utf-8”)
                Get请求:name = new String(name.getBytes(“iso8859-1”),“utf-8”)

Response处理乱码:

                Response.setContentType(“”text/html;charset=utf-8”)      

10、请求转发与重定向:

请求转发:当web资源收到客户端的请求后,服务器去通知另一个资源去处理请求(带有请求参数)

               ServletRequest.getRequestDisapatcher(Stringpath).forward/include        

重定向:重新定向到新的地址

               ServletResponse.sendRedirect()

11、Cookie分类:

会话级别的Cookie:默认的,关闭了浏览器那就销毁

持久级别的Cookie:需要设置有效时长,浏览器关闭也不会销毁

                setMaxAge(int i),设置时长

                setPath(String uri),设置Cookie有效路径

12、Cookie  和Session:

  • Cookie:
客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。

1)服务器和客户端之间传递和存储数据,由服务器端写的;由客户端保存的。
2)cookie并不是javaEE独有的,而是由HTTP协议指定的,只要遵循HTTP协议,都可以用cookie技术
3)Cookie的value是有长度限制的,4KB。
4)一个浏览器接收的cookie也是有上限。300个
5)一个网站存储的cookie也是有上限的。30个
6)cookie不支持直接存中文。

  • Session:
是服务端的解决方案,它是通过服务器来保持状态的,记录客户端状态。Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。

1)Session在用户第一次访问服务器的时候自动创建。需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session。Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。

2)Session中可以禁止Cookie,可以使用URL重写的方法获取Session的id。

  • 区别:

1)Session服务端的会话技术(把会话数据保存在服务端),是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;

2)Cookie客户端的会话技术(把会话数据保存在客户端),是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式

3)Session 依赖于 Cookie,Cookie相对于Session不安全

4)Cookie存储数据是字符串,过多,浏览器不支持

5)Session 存储数据值是 Object 类型,过多,服务器压力大

13、servlet三大作用域:

1)ServletContext针对一个WEB应用。一个WEB应用只有一个ServletContext对象,使用该对象保存的数据在整个WEB应用中都有效

                  创建:服务器开启时

                  销毁:服务器关闭时或项目移除时

2)HttpSession针对一次会话,使用该对象保存数据,一次会话(多次请求)内数据都有效

                  创建:服务器第一次调用getSession()的时候

                  销毁:非正常关闭服务器(正常关闭,Session被序列化)

                              Session过期了,默认时间是30分钟

                              手动调用Session的invalidate的方法

3)HttpServletRequest针对一次请求。使用该对象保存数据,一次请求(一个页面,如果是请求转发,多个页面)内数据有效

                  创建:客户端向服务器发送一次请求

                  销毁:服务器为这次请求做出响应之后,销毁request

4)三个作用域对象操作的api相同

                  存放数据:setAttribute(name, value)

                  获取数据:getAttribute(name)

                  删除数据:removeAttribute(name)

14、JSP:

Java Server Pages,是建立在servlet规范上的动态网页开发技术。当客户端发出请求访问jsp文件时,jsp容器会将jsp文件转换成一个java文件,在编译成class文件,这个class文件就是servlet。

15、JSP内置对象:(JSP2.0规范中提供了9个隐式内置对象)

此外,JSP还提供了一个特殊的隐藏域对象:param,任何get请求内的key-value值都可以通过param.value获得

16、缓存实现原理: (HTTP 协议如何实现缓存? 怎么判断服务器端的资源是否发生改变了?)

1)浏览器第一次访问服务器,服务器发送响应数据,同时还要携带一个响应头Last-Modified------------ 保存了资源文件的最后修改时间

2)浏览器获取数据、显示数据,底层还要将数据进行缓存,并且保存last-Modified对应的值

3)浏览器第二次访问服务器,携带者B中保存的最后修改时间If-modified-since 到服务器

4)服务器取出If-modified-since 对应的时间值,和文件的最后修改时间比较;如果值一样,返回304,浏览器直接取本地缓存,如果不一样,直接响应资源

17、ServletContext:

每个“Web 应用程序”都有一个上下文对象(往上可以和服务器交互,往下可以管理当前项目中的资源,因此就称之为上下文对象)---- ServletContext,可以被不同的Servlet共享,这个对象是程序已启动就内置好的,我们不能自己创建,this.getServletContext()

18、邮件协议:

1)SMTP协议:发邮件协议

                             SImple Mail Transfer Protocol(简单邮件传输协议),定义了邮件客户端软件与SMTP服务器之间及两台SMTP服务器间的通讯规则

2)POP3协议:收邮件协议

                             Post Office Protocol(邮件协议),定义了邮件客户端软件与POP3服务器的通讯规则












原创粉丝点击