zoukankan      html  css  js  c++  java
  • 1.Servlet介绍 和 HTTP协议简述

    PS:以下仅为个人学习笔记

    1. Servlet是什么?

    sun公司制订的一种用来扩展web服务器功能的组件规范。
    (1)扩展web服务器功能
        注:
            早期的web服务器只能处理静态资源的请求,即需要事先将
            html文件准备好,并存放到web服务器上面。不能够处理
            动态资源的请求(需要计算,动态生成html)。
            早期使用CGI(Common Gateway Interface)应用程序来扩展。
            CGI程序使用perl,c/c++等语言来编写,编写繁琐,不方便
            移值,性能也不是很好,现在用得很少了。
            浏览器将请求发送给web server,如果是动态资源的请求,
            web server会将请求转交给servlet容器来处理,由容器来
            处理网络相关的问题,由servlet处理业务逻辑。
    (2)组件规范 
        1)什么是组件?
        符合规范,实现部分功能,并且需要部署到相应的容器里面才能
        运行的软件模块。
        servlet就是一个组件,需要部署到servlet容器里面才能运行。
        2)什么是容器?
        符合规范,提供组件运行环境的程序。
        servlet容器为servlet提供运行环境。

    2.如何写一个Servlet?

    step1. 写一个java类,实现Servlet接口或者继承
            HttpServlet抽象类。
            注:建议继承HttpServlet抽象类。
    step2.编译。
    step3.打包。
            创建一个具有如下结构的文件夹:
                appname  (应用名)
                    WEB-INF
                        classes   (.class文件) 
                        lib      (可选  .jar文件)
                        web.xml   (部署描述文件)  
    step4.部署。
            将step3创建的文件夹拷贝到容器里面。
            注:
                可以使用jar命令将step3创建的文件夹压缩成
                ".war"结尾的文件,然后再拷贝。
    step5.启动容器,访问Servlet
            http://ip:port/appname/servlet-pattern
    
            注: servlet-pattern在web.xml当中定义。

    3.Servlet是如何运行的?

    比如,在浏览器地址栏输入 http://ip:port/servlet-day01/hello
    step1.浏览器依据ip,port建立连接(即与web服务器之间建立网络连接)。
    step2.浏览器需要将相关数据打包(即按照http协议要求,制作一个
        请求数据包,包含了一些数据,比如请求资源路径),并且将请求
        数据包发送出去。
    step3.web服务器会将请求数据包中数据解析出来,并且将这些数据添加
        到request对象,同时,还会创建一个response对象。
    step4.web服务器创建Servlet对象,然后调用该对象的service方法
        (会将request和response作为参数)。
        注:
            在service方法里面,通过使用request获得请求相关的数据,
            比如请求参数值,然后将处理结果写到response。
    step5.web服务器将response中的数据取出来,制作响应数据包,然后
        发送给浏览器。
    step6. 浏览器解析响应数据包,然后展现。


     

    4. 常见的错误

    (1)500

    注:500是状态码,表示系统错误。
    1)产生的原因:
    a.web.xml文件配置错误。
        比如将类名写错。
    b.源代码写错。
        比如,没有继承HttpServlet。

    (2)404

    注:404是状态码,表示依据请求路径找不到对应的资源。
    1)产生的原因
    a.没有部署应用
    b.访问地址写错

    (3)405

    注:405是状态码,表示找不到处理方法。
    1)产生的原因
    a.service方法签名错误(方法名,参数类型,异常类型,返回类型写错)   

    5. http协议 (简述)

    (1)什么是http协议?

    是一种网络应用层协议,规定了浏览器与web服务器之间如何
    通信以及数据包的结构。
    1)如何通信?
        step1. 先建立连接。
        step2. 发送请求数据包。
        step3. 发送响应数据包。
        step4. 关闭连接。
        即 一次请求,一次连接。


    2) 优点
        web服务器可以利用有限的连接为尽可能多的客户请求服务。
    
    

    (2)两种数据包的结构

    1)请求数据包
        a.请求行  (请求类型 请求资源路径 协议和版本)
        b.若干消息头
            注:消息头是一些键值对(键和值之间使用": "分隔),
            浏览器和服务器之间可以利用消息头传递一些特殊的信息。
            比如,浏览器可以发送"user-agent"告诉服务器,浏览器
            的类型和版本。
        c.实体内容
            如果请求类型是get,实体内容为空。
    2)响应数据包
        a.状态行 (协议和版本 状态码 状态描述)
            注:状态码是一个三位数字,表示服务器处理请求的状态。
        b.消息头
            服务器同样也可以将一些消息头发送给浏览器。比如
            可以通过设置content-type消息头,告诉浏览器,服务器
            返回的数据类型。
        c.实体内容
            程序处理的结果。浏览器会解析实体内容中的数据,然后
            展现。 

    (3)两种请求类型

    1)get请求
    a.哪一些情况下,浏览器会发送get请求?
        a1.直接输入某个地址
        a2.点击链接
        a3.表单默认提交方式
    b.特点
        b1.会将请求参数放到请求行里面,只能提交少量的数据。
            注:因为请求行大约只能存放2k左右的数据。
        b2.会将请求参数显示在浏览器地址栏,不安全。
            注:比如有些网络设备(路由器)会记录这些地址。

    6. Servlet输出中文,应该如何处理?

    (1)为什么会乱码?

    out在输出时,默认使用iso-8859-1来编码。

    (2)如何解决?

    response.setContentType("text/html;charset=utf-8");
    这行代码的作用:
        作用1.返回content-type消息头,告诉
            浏览器,服务器返回的数据类型。
        作用2:另外,out在输出时,会使用指定的
            字符集来编码。
    
    练习:
        计算一个人的bmi指数。
        算法:
            bmi指数 = 体重(公斤) / 身高(米)  /身高(米)
        如果
            bmi指数 < 19  过轻。
            bmi指数 > 25  过重。
            其它,正常。
    
        http://ip:port/servlet-day01-lab/bmi?height=1.8&weight=90
        返回 
            你的bmi指数是 24,正常。     
     









  • 相关阅读:
    1046 Shortest Distance (20 分)(模拟)
    1004. Counting Leaves (30)PAT甲级真题(bfs,dfs,树的遍历,层序遍历)
    1041 Be Unique (20 分)(hash散列)
    1036 Boys vs Girls (25 分)(查找元素)
    1035 Password (20 分)(字符串处理)
    1044 Shopping in Mars (25 分)(二分查找)
    onenote使用小Tip总结^_^(不断更新中...)
    1048 Find Coins (25 分)(hash)
    三个故事
    领导者的举止
  • 原文地址:https://www.cnblogs.com/dpl9963/p/7890126.html
Copyright © 2011-2022 走看看