您的位置:首页 > 理论基础 > 计算机网络

Java学习笔记——Http&Servlet

2016-10-08 14:44 260 查看
一、HTTP协议
     1、HTTP协议的概述
          Hpyte Text Transfer Protocol:超文本传输协议。所有的WWW网址都必须遵循此协议
          HTTP必须遵循一个请求/响应模式
               请求与响应成对出现
               必须先有请求,再有响应
          HTTP的默认端口号为80
     2、HTTP的请求
          (1)请求方式:GET、post。。。
          (2)请求行:请求方式 请求的文件路径 协议版本
          (3)请求头:Referer : 网站的来源。--防盗链
                              User-Agent:获取浏览器的信息(文件下载时,不同浏览器的编码不同)
                              If-Modified-Since:和响应头中的Last-Modified共同使用,查找本地缓存。
          (4)请求体:post请求中提交的参数
          (4)GET与post的区别
               GET请求有文件大小的限制。会将请求信息展现在地址栏,不安全。没有请求体
               post请求没有文件大小的限制。不会将请求信息展现在地址栏,安全。有请求体
     3、HTTP的响应
          (1)响应行:协议版本  状态码 状态描述
               状态码:200响应成功
                              302重定向
                              304查找本地缓存
                              404本地文件找不到(网址输入错误)
                              500服务器内部错误
          (2)响应头:Last-Modified:最后修改文件的事件
                              Refresh:定时刷新
                              Location:重定向(跳转网页)
                              Content-Disposition:文件下载时的信息
          (3)响应体:页面的显示内容(页面代码)
二、Servlet
     1、Servlet概述
          Servlet是运行在服务器端的一段JAVA程序,用于接收客户端发送的请求并作出响应
     2、Servlet的创建
          (1)实现Servlet接口,实现方法
          (2)继承HttpServlet与GenericServlet重写方法
          (3)在web.xml中配置Servlet
 
   3、Servlet的生命周期:
          在客户端第一次访问servlet时,服务器会创建servlet对象,并执行init方法进行初始化。客户端发送一次请求时,服务器会创建一个新的线程来执行servlet,这时service方法会被执行。当服务器关闭或者是该项目从服务器中移除时,servlet就会被销毁,destroy方法会被执行。
     4、servlet的其他配置
          (1)服务器启动时加载
               <load-on-start>1-10</load-on-startup>
                    数字越大,优先级越低,默认的servlet为1
          (2)url-pattern
               完全路径匹配:以/开头:/aaa
               目录匹配:以/开头,以*结尾:/*     --*代表所有
               扩展名匹配:不能以/开头  :*.do
               优先级:完全路径匹配>目录匹配>扩展名匹配
          (3)context-param
               全局初始化数据
          (4)init-param
               局部servlet初始化数据,只能定义在<servlet></servlet>标签中
   
 5、开发路径问题:
          (1)相对路径:不是以/开头
          (2)绝对路径:以/开头
               客户端发送的路径--带工程名
               服务器端的路径--不带工程名
               转发、静态动态include
     6、servletConfig
          获得servlet的名称  --getServletName()
          获得初始化参数  --getInitparameter()
          获得所有初始化参数名称   --getInitParamterNames()
 
   7、ServletContext
          ServletContext是一个servlet百晓生。一个WEB项目只有一个ServletContext对象,在服务器启动时服务器就会为项目创建一个ServletContext对象。服务器关闭或者项目从服务器中移除时ServletContext对象会被销毁。如果值被保存在ServletContext中,那么它就有了一个作用的范围,所以我们把这种对象成为“域对象”。

          获得MIME类型  --getMimeType()
          获得全局初始化参数 --getInitparamter()
                                        --getInitparamterNames()
          作为域对象存储数据 --Set/Get/Remove Attribute()
          读取web项目的文件 getResourceAsStream();
     8、Servlet如何实现单例多线程?
          当服务器开启时会创建一个servlet对象,当有请求到达服务器时,服务器不会新建一个servlet,而是通过servlet容器的调度线程detacher thread管理下的线程池中分配一个待执行的线程给请求者。请求结束后,线程被回收到线程池中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息