美文网首页
Http协议&Servlet

Http协议&Servlet

作者: hgzzz | 来源:发表于2019-04-21 20:46 被阅读0次

Http协议

  1. 超文本传输协议(HTTP,HyperText Transfer Protocol),HTTP是一个客户端和服务器端请求和应答的标准(TCP)。
  2. 版本 1.0 => 请求数据,服务器返回后, 将会断开连接;1.1 => 请求数据,服务器返回后, 连接还会保持着。 除非服务器 | 客户端 关掉。 有一定的时间限制,如果都空着这个连接,那么后面会自己断掉。
  3. Http请求:包括 请求行 、 请求头 、请求体
  • 请求行:包括请求方式,请求地址,协议版本
    POST /examples/servlets/servlet/RequestParamExample HTTP/1.1
  • 请求头
Accept: 客户端向服务器端表示,我能支持什么类型的数据。 
Referer : 真正请求的地址路径,全路径
Accept-Language: 支持语言格式
User-Agent: 用户代理 向服务器表明,当前来访的客户端信息。 
Content-Type: 提交的数据类型。经过urlencoding编码的form表单的数据
Accept-Encoding: gzip, deflate : 压缩算法 。 
Host : 主机地址
Content-Length: 数据长度
Connection : Keep-Alive 保持连接
Cache-Control : 对缓存的操作
  • 请求体:浏览器发送给服务器的数据
  1. Http响应: 响应行 、 响应头 、响应体
  • 响应行:协议版本,状态码 ,对应状态码的消息
    HTTP/1.1 200 OK
  • 响应头
Server:  服务器是哪一种类型。  Tomcat
Content-Type : 服务器返回给客户端你的内容类型
Content-Length : 返回的数据长度
Date : 通讯的日期,响应的时间  
  • 响应体:服务器返回客户端请求的数据
  1. GET 请求和 POST 请求
  • GET:数据拼接在地址栏中,数据的长度有限(2k-8K),安全性低
  • POST:以流的方式写数据,数据在请求体中。有一个Content-Length的请求头表明数据的长度。数据长度更长,安全性更高
  • 使用:一般单纯从服务端获取数据或者携带普通数据使用GET,需要携带敏感数据或者文件使用POST

Servlet

  1. Web资源
  • 静态资源:html 、 js、 css
  • 动态资源:servlet/jsp
  1. servlet
  • servlet是什么:其实就是一个java程序,运行在我们的web服务器上,用于接收和响应客户端的http请求。 更多的是配合动态资源来做。 当然静态资源也需要使用到servlet,只不过是Tomcat里面已经定义好了一个 DefaultServlet。
  1. servlet的使用
  • 导包
  • 编写一个类实现Sevrlet接口
public class HelloServlet implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println(1);
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

  • 或者继承HttpServlet
public class Servlet2 extends HttpServlet {
    /**
     * get 请求执行这里
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
        System.out.println("doGet");
    }

    /**
     * post 请求执行这里
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
        System.out.println("doPost");
    }
}
  • 配置Servlet,在WEB-INF/web.xml写入
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!-- 向tomcat报告, 我这个应用里面有这个servlet, 名字叫做HelloServlet , 具体的路径是com.servlet.HelloServlet -->
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.servlet.HelloServlet</servlet-class>
    </servlet>

    <!-- 注册servlet的映射。  servletName : 找到上面注册的具体servlet,  url-pattern: 在地址栏上的path 一定要以/打头 -->
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/a</url-pattern>
    </servlet-mapping>
</web-app>
  1. Servlet 的生命周期:从创建到销毁的一段时间
  • init方法 在创建该servlet的实例时,就执行该方法。一个servlet只会初始化一次, init方法只会执行一次,默认情况下是 : 初次访问该servlet,才会创建实例。
  • service方法:只要客户端来了一个请求,那么就执行这个方法了。该方法可以被执行很多次。 一次请求,对应一次service方法的调用
  • destroy方法:servlet销毁的时候,就会执行该方法
  • 注意:doGet 和 doPost不算生命周期方法,所谓的生命周期方法是指,从对象的创建到销毁一定会执行的方法, 但是这两个方法,不一定会执行。
  1. 让Servlet创建实例的时机提前
  • 默认情况下,只有在初次访问servlet的时候,才会执行init方法。 有的时候,我们可能需要在这个方法里面执行一些初始化工作,甚至是做一些比较耗时的逻辑。
  • 那么这个时候,初次访问,可能会在init方法中逗留太久的时间。 那么有没有方法可以让这个初始化的时机提前一点。
  • 在配置的时候, 使用load-on-startup元素来指定, 给定的数字越小,启动的时机就越早。 一般不写负数, 从2开始即可。
<servlet>
      <servlet-name>HelloServlet</servlet-name>
      <servlet-class>com.servlet.HelloServlet04</servlet-class>
      <load-on-startup>2</load-on-startup>
</servlet>
  1. ServletConfig对象
  • Servlet的配置,通过这个对象,可以获取servlet在配置的时候一些信息
    //1. 得到servlet配置对象 专门用于在配置servlet的信息
    ServletConfig config = getServletConfig();
    
    //获取到的是配置servlet里面servlet-name 的文本内容
    String servletName = config.getServletName();
    System.out.println("servletName="+servletName);
    //2、。 可以获取具体的某一个参数。 
    String address = config.getInitParameter("address");
    System.out.println("address="+address);
    //3.获取所有的参数名称
    Enumeration<String> names = config.getInitParameterNames();
    //遍历取出所有的参数名称
    while (names.hasMoreElements()) {
        String key = (String) names.nextElement();
        String value = config.getInitParameter(key);
        System.out.println("key==="+key + "   value="+value);
        
    }

相关文章

  • Java 后台基础学习大纲

    一、Servlet 熟悉 HTTP 协议,HTTPS 协议 熟悉 Servlet 规范,HttpServlet 如...

  • 14.Servlet&HTTP&Request

    主要内容: Servlet HTTP协议 Request Servlet: HTTP: Request: ​2. ...

  • Http协议&Servlet

    Http协议&Servlet Http协议 什么是协议 双方在交互、通讯的时候, 遵守的一种规范、规则。 http...

  • Http协议&Servlet

    Http协议 超文本传输协议(HTTP,HyperText Transfer Protocol),HTTP是一个客...

  • Servlet和Http请求

    内容 Servlet HTTP协议 Request Servlet 概念 步骤 执行原理 生命周期 Servlet...

  • Http&Servlet

    Http协议&Servlet Http协议 什么是协议 双方在交互、通讯的时候, 遵守的一种规范、规则。 http...

  • Servlet的使用

    Servlet简介 Servlet运行在服务器端。Servlet并不限制所使用的协议,但使用最多的协议是HTTP协...

  • HTTP协议与servlet

    今天学习了Http协议的详情以及MyEclipse的简单优化使用,还有Servlet,搭建tomcat等知识。 H...

  • 深入拆解Tomcat&Jetty(二)

    HTTP协议必知必会 Tomcat和Jetty本身就是一个HTTP服务器+Servlet容器,所以了解HTTP协议...

  • servlet

    一、http 什么是http协议? Requrst 和response Get和post区别 二、Servlet ...

网友评论

      本文标题:Http协议&Servlet

      本文链接:https://www.haomeiwen.com/subject/mkmrgqtx.html