初涉Servlet&HTTP

Servlet&HTTP

之前看了一些Servlet的视频,但总感觉云里雾里不踏实,索性买本书看看,《Head First Servlet&JSP》,看漫画一样的了解一下吧。以下是对第一章的小总结。

什么是HTTP协议

HTTP是TCP/IP的上层协议。TCP负责确保从一个网络节点向另一个网络节点发送的文件能作为一个完整的文件到达目的地,尽管在传送过程中这个文件可能会分解为小块传输。IP是一个底层协议,负责把数据块(数据包)沿路移动/路由到目的地。HTTP则是 另一个网络协议,有一些web特定的特性,不过它要依赖于TCP/IP从一处向另一处完整的传送请求和响应。HTTP会话的结构是一个简单地请求/响应序列:浏览器发出请求,服务器做出响应。

请求流的关键要素

1.HTTP方法(要完成的动作)。
2.要访问的页面(URL)。
3.表单参数(如方法参数)。

响应流的关键要素

1.状态码(表明请求是否成功)。
2.内容类型(,也就是响应首部中的Content-Type,它的值称为MIME类型,包括文本、图片、HTML等)。
3.内容(具体的HTML、图片等,HTTP会在这些内容前面增加首部信息(状态码和内容类型就属于HTTP响应首部),HTML浏览器使用首部信息来帮助处理HTML页面)。

HTTP请求消息数据格式
请求消息数据格式
 1.请求行
    请求方式/请求URL  请求协议/版本
    GET/login.html HTTP/1.1

    请求方式:
        http常用的两种请求方式:
            GET:
                1.请求参数在请求行中,在URL后。
                2.请求的URL长度有限制
                3.不太安全
            POST:
                1.请求参数在请求体中
                2.请求的URL长度没有限制
                3.相对安全

2.请求头(也叫请求首部):客户端浏览器告诉服务器的一些信息
    请求头名称:请求头值
        常见的请求头:
            1.User-Agent:浏览器告诉服务器,我访问你使用的浏览器信息
                可以在服务器端获取该头的信息,解决浏览器的兼容性问题
            2.Referer:
                告诉服务器,我(当前请求)从哪里来
                    作用:
                        1.防盗链
                        2.统计工作
3.请求空行
    空行,用于分割POST请求的请求头和请求体
4.请求体
    封装POST请求消息的请求参数
    GET没有请求体
HTTP响应消息数据格式

响应消息:服务器端发送给客户端的消息
数据格式

1.响应行

组成:协议/版本 响应状态码 状态码描述

2.响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态

1.状态码都是三位数字
2.分类:

 (1).1xx:服务器接收客户端消息但没有接收完成,等待一段时间后,发送1xx(一百多)的状态码
 (2).2xx:成功。代表:200
 (3).3xx:重定向。代表:302(重定向),304(访问缓存)
 (4).4xx:客户端错误。代表:
          404:请求路径没有对应的资源
          405:请求方式没有对应的doxxx方法(doPost()或doGet())
 (5).5xx:服务器端错误:代表500:服务器内部出现异常
3.响应头(也叫响应首部)
1.格式:
   头名称:值
2.常见的响应头:
    1.Content-Type:服务器告诉客户端本次相应的数据格式以及编码格式。如:Content-Type:text/htmlhtml;charset=UTF-8
    2.Content-disposition:服务器端告诉客户端以什么格式打开响应体数据
       值:
           in-line:默认值,在当前页面内打开
           attachment;filename=xxx:以附件的形式打开响应体,文件下载

    3.响应空行
    4.响应体(传输的数据)
GET 和POST

GET是一个简单地请求,POST可以发送用户数据

GET的主要任务就是从服务器拿些东西回来(当然GET也可以发送一点数据),POST在请求某个东西的同时可以向服务器发送表单数据。

注意:

1.GET中的总字符数是有限的(取决于服务器)。比如,如果用户在搜索框里键入了很长一段文字,GET方法可能无法正常工作。
2.用GET发送的数据会追加到URL后面,在浏览器地址栏中显示出来。

GET请求中的参数必须放在请求行上,追加到URL后面,以?和URL分隔,各参数之间用&分隔。
POST请求发回给服务器的数据成为“消息体”或“负载”,这个消息体可以非常大,参数放在消息体(负载)中。

端口

TCP端口只是一个数字而已。
端口是一个十六位数(2的16次方),标识服务器硬件上一个特定的软件程序

可以把端口看作是唯一的标识符。端口标识与服务器硬件上运行的一个特定软件的逻辑连接,也就是相当于这个软件的“IP地址”。所以,端口并不表示一个可以插入物理设备的位置。另外,服务器上有65536个端口(0~65535)

注意,从0到1023的TCP端口已经保留,由一些众所周知的服务使用,所以自己定制的服务器程序不要使用这些端口。

为什么要用Servlet

之前的动态网页是由html标记和大量的业务处理逻辑组成的,很明显这样不合理,为了解决这个问题,便有了CGI(公共网关接口)和Servlet,现在的web服务器有两件事不做:一个是动态内容,一个是在服务器上保存数据,它只擅长提供静态页面,业务处理逻辑服务器不做。

Servlet入门

以下是看视频时的笔记
Servlet :server applet
概念:运行在服务器端的小程序
1.创建JavaEE项目
2.定义一个类,实现servelet接口
3.实现接口中的抽象方法
4.配置servelet:
在web.xml中配置:

    <servlet>
        <servlet-name>demo1</servlet-name>
        <servlet-class>cn.shangxiaoying.web.servelet.serveletDemo1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo1</servlet-name>
        <url-pattern>/demo1</url-pattern>
    </servlet-mapping>
执行原理:
    1.当服务器接收到客户端浏览器的请求后,会解析请求URL路径,获取访问的servelet的资源路径
    2.查找web.xml文件,是否有对应的<url-pattern>标签体内容。
    3.如果有,则再找到对应的<servelet-class>全类名。
    4.Tomcat会将字节码文件加载进内存,并且创建其对象。
    5.调用其方法
servelet的生命周期:
1.被创建:执行init方法,只执行一次
  默认情况下,第一次被访问时,servelet被创建
  可以配置servelet的创建时机。
    在<servelet>标签下配置
      (1).第一次被访问时创建
         <load-on-startup>的值为负数,如:<load-on-startup>-5</load-on-startup>(默认值为-1)
      (2).在服务器启动时创建
         <load-on-startup>的值为0或正整数
        servelet的init方法,只执行一次,说明一个servelet在内存中只存在一个对象,servelet是单例多线程的
        多个用户同时访问时,可能存在线程安全问题。
        解决:尽量不要在servelet中定义成员变量。即使定义了成员变量,也不要修改值
    2.提供服务:执行service方法,执行多次
        每次访问servelet时,service方法都会被调用一次
    3.被销毁:执行destroy方法,只执行一次(在服务器正常关闭时调用)
        destroy方法在servelet被销毁之前执行,一般用于释放资源
servel3.0:
好处:
    支持注解配置,可以不需要web.xml。
步骤:
    1.创建JavaEE项目,选择servelet版本为3.0以上,可以不创建web.xml
    2.定义一个类,实现servelet接口
    3.复写方法
    4.在类上使用注解,进行配置
        @WebServlet(urlPatterns = "资源路径")
        @WebServlet("资源路径") 
Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值