http协议

HTTP请求信息:

请求的组成部分:

1.请求行:由3个标记方法组成,请求方法,请求URLHTTP版本,用空格分隔

2.请求头域:有关键字/值对组成,每行一对,关键字和值用冒号分开。

3.空行:最后一个请求头标之后是一个空行

4.请求数据:使用Post传送数据,最长使用的是Content-TypeContent-length头标

HTTP响应信息:

响应信息的组成部分:

1.状态行:HTTP版本,响应代码和响应描述

2.响应头标:像请求头标一样,他们指出服务器的功能,标识响应数据细节

3.空行:最后一个响应头标之后是一个空行

4.响应数据:HTML文档等

 

 

http是一种协议,那么它是有状态的还是无状态的呢?

 

HTTP无状态:浏览器和服务器之间不需要建立持久的联系,例如:上网看新闻,我打开了一个网页,发送了一次请求,给了我响应,但是并没有记录我看过新闻,这就是无状态

 

HTTP有状态:浏览器和服务器之间建立了持久的联系,也可以是一段时间的联系,例如,我到网上买东西,我把一件东西放到购物车中,记录我放入购物车里的东西,当我下次登录的时候还会看到购物车里的东西。这就是有状态。

 

 

HTTP请求方式:

 

(1)GET:客户程序通过这种请求方式,访问服务器上的一个文档,并由服务器把文档发送给客户程序,存储数据量小,不安全,传输快,地址栏长度有限制,最多2kb,编码格式不支持中文,ISO 8859-1

 

http的get请求方式不支持中文字符,因为其编码格式是ISO 8859-1

http的get请求方式不支持中文字符,因为其编码格式是ISO 8859-1

http的get请求方式不支持中文字符,因为其编码格式是ISO 8859-1

http的get请求方式不支持中文字符,因为其编码格式是ISO 8859-1

 

(1)POST:客户程序通过这种方式向服务器发送大量信息,在HTTP请求中除了包含要访问的文档的URL,还包括大量的请求正文,会包含HTTP表单数据,存储量大,安全,传输慢,地址栏长度在IE中最多为2G,编码格式为对应的网页的编码格式

 

 

(1)HEAD

(2)PUT

(3)DELETE

(4)OPTIONS

(5)TRACE

 

状态码:

1**:信息提示,表示临时的响应

2**:响应成功,表示服务器成功的接收到客户端的请求

3**:重定向

4**:客户端错误,表明客户端可能出现问题

5**:服务器错误,表明服务器由于遇到某种错误而不能响应客户端请求

常见的状态码:

200:响应成功

302:临时重定向

401:未经授权

400:错误的请求,客户发送的HTTP请求不正确

404:文件不存在,在服务器上没有客户要访问的文档(不允许请求的方法)

405:服务器不支持客户的请求

500:服务器内部错误

501:服务器不支持能够满足请求的功能

503:服务器不可用

 

 

URLURI的区别:(绝对路径和相对路径的区别)

 

URL:统一资源定位符(Uniform  Resource Locator,用于完整的描述Inteernet上网页和其他资源的地址的一种标识方法

 

     组成:协议+服务器地址(端口)+具体资源路径,如果端口号是该协议的标准端口号,可以省略端口号

 

例:hhtp://www.soccer.org.8080/laggue/spring200/html

 

URI:统一资源标识符(Uniform  Resource Identifier,相对于URL是指资源相对于当前页面的地址,它包含从当前页面指向目标页面位置的路径

 

3种写法:(1.同一目录下只需要输入连接的文件名

 

         2.上一级目录在目录名和文件名前加“../

 

        (3).下一级目录输入目录名和文件名之间用“/”隔开

 

 

常见的端口号:21ftp   80http    8080:tomcat   mysql:3306  1521:oracle

 

 

环境变量:

 

Path:指定机器中javacjava的路径,到jdkbin路径

 

Classpath:寻找servlet相关所在的路径,到jdklib下的servlet-api.jar

 

Java_home:启动时需要找到jvm,到jdk

 

为了确保tomcat正常启动,必须配置java_home,其他两个可以没有,三个变量都配置的目的:为了正常开发web项目应用程序,并且能够发布访问web应用程序。

 

启动Tomcat: E:\姚璐\Java\apache-tomcat-6.0.36\bin\startup.bat

 

关闭Tomcat: E:\姚璐\Java\apache-tomcat-6.0.36\bin\shutdown.bat

 

 

 

Servlet的作用:

 

读取客户发送的所有数据,,查询HTTP请求中包含的任何其他请求信息,处理数据并生成结果,设置合适的HTTP响应参数,将响应信息回送给客户端

 

 

Javax.servlet包:

 

接口:ServletConfig    ServeltContext     RequestDispatcher  Servlet   ServletRequest   ServletResponse   

 

类:GenericServlet

 

Javax.servlet.http包:

 

类:HttpServlet   继承GenericServlet

 

接口:HttpServletRequest  继承ServletRequest

 

      HttpServletResponse  继承ServletResponse

 

 

Servlet常用武器:

 

(1).请求对象:ServletRequestHttpServletRequest,获取来自客户端的请求信息

 

(2).响应对象:ServletResponseHttpServletResponse,生成响应结果

 

(3).Servlet配置对象ServletConfig,当容器初始化一个Servlet对象时会向servlet提供一个ServletConfig对象,通过该对象获取初始化参数信息以及ServletContext对象

 

(4).Servlet上下文对象,ServletContext,访问容器当前web应用提供的各种资源

 

 

Servlet运行在Servlet容器中,其生命周期由容器(如:Tomcat)来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init( )service( )destroy( )等方法来完成。

 

init(ServletConfig config):初始化Servlet对象,容器在创建好Servlet对象后就调用

 

serviceServletRequest req,ServletResponse res):响应客户请求,当容器接收到客户端要求访问特定的Servlet对象时就会调用

 

destroy():释放Servlet对象占用的资源,当servlet对象结束生命周期时,容器就会调用(服务器重启或者web项目重新加载时调用)

 

getServletConfig():返回ServletConfig对象,,在该对象中包含了servlet初始化信息

 

 

 

通过下图进一步理解Servlet的生命周期:

 

 

 

当客户端一个请求到来时,tomcat首先根据请求的URL得到相应的servlet,然后调用该servlet的service()方法,并根据是get还是post请求调用doget和dopost方法,这两个方法的输出作为响应内容发送给客户端。当我们要关闭tomcat时,tomcat在退出前,还要负责释放servlet所释放的资源。

 

Servlet中实现输出html页面

 

需要通过参数response来作出响应,可以通过HttpServletResponse中的方法来实现

PrintWriter  getWriter( )   返回PrintWriter对象  PrintWriter可以向客户端输出字符。

通常我们习惯给这个类型的对象起名叫做out

Servlet中代码实现

PrintWriter out=response.getWriter();

 

解决乱码问题

设置提交信息的字符编码,通过HttpServletRequest中的方法来实现: 

,参数为”utf-8”时,设置提交字符编码为支持中文。

例:request.setCharacterEncoding("utf-8");

设置响应信息的字符编码,HttpServletResponse中的方法来实现:

例:response.setContentType("text/html; charset=UTF-8");

response.setCharacterEncoding("utf-8");

 

请求转发

HttpServletRequest中具有方法getRequestDispatcher,这个方法是ServletRequest中的方法,方法的返回值是RequestDispatcher类型的对象。

public  RequestDispatcher  getRequestDispatcher (java.lang.String path)

Servlet中,利用RequestDispatcher对象,可以将请求转发给另外一个ServletJSP页面,甚至是HTML页面,来处理对请求的响应。

RequestDispatcher对象具有的public void forward(ServletRequest request, ServletResponse response) 这个方法能够实现将请求转发给另外的页面。

request.getRequestDispatcher("success.html").forward(request, response);

 

HttpServletRequest对象的生命周期:从一个请求开始,到这个请求处理结束。而且只要刷新页面,request也将失效。

请求转发的特点:

请求转发后,不会产生新的请求,会继续沿用原来的请求

    请求转发后,地址栏显示的是原页面的URL

请求转发时用到的接口RequestDispatcher,在这个接口中定义了两个方法:

1)forward(ServletRequest request,ServletResponse response)

必须在响应提交给用户之前调用。

2)include(ServletRequest request,ServletResponse response)

3)区别:include()将请求转发给其他的Servlet,被调用的Servlet对该请求做出的响应将并入原先的响应对象中,原先的Servlet还可以继续输出响应信息。

forward():将请求转发给其他的Servlet,将由被调用的Servlet负责对请求做出响应,而原先Servlet的执行则终止。

 

重定向

 

重定向就是指将用户的请求重定向给另外一个Servlet或页面,然后由它们进行处理并产生对请求的响应。

 

HttpServletResponse 类的public void  sendRedirect(java.lang.String location)  能够实现重定向的页面跳转。但是与请求转发的原理不一样。

 

Response.sendRedirect(“success”);                 

 

重定向的特点:

 

重定向后,会产生一个新的请求

 

重定向后,地址栏显示的是目标页面的URL

 

2种跳转完成同样的功能,但是区别非常大:

在地址栏中,用重定向跳转后地址栏会显示目标页面。请求转发地址栏显示源页面

区别在于请求的次数:请求转发 请求没变;重定向  会产生新的请求

request.getRequestDispatch(“T2.jsp”).forward(request,response);相当于将本次的请求和响应转发给你

请求转发不能跳转到其他项目中,只能在本项目内跳转,重定向可以跳转到其他项目中

 

 

HTTP协议是无状态的协议,发送的请求不记录用户的状态,不记录用户的信息。就相当于它被访问了2次,不知道是哪两人访问的,或者是一个人访问两次。

正是因为HTTP协议的这一特点,用户的活动发生在多个请求和响应之中,作为web服务器,必须能够采用一种机制来唯一地标识一个用户,同时记录该用户的状态。比如说我们平时上的qq.可以设置登录状态,记住密码,之后我们在一段时间内就可以不用输入密码直接输入,那么Http协议是无状态的,我们怎么可以让他记住我们的状态呢,就是通过会话跟踪技术

什么是会话:

就像我和一个人之间的对话

会话跟踪技术有哪几种?

Cookie    Session    隐藏表单域(hidden) URL重写

 

posted @ 2016-10-18 14:41  跨境电商杂货铺  阅读(269)  评论(0编辑  收藏  举报