servlet学习:HTTP协议简介,开始编写Servlet

本文介绍了HTTP协议,包括GET和POST两种请求方式及其区别,以及请求头中的关键字段。接着详细阐述了Servlet的生命周期,包括init、destroy和服务方法。还展示了如何编写一个简单的Servlet程序,并解释了Servlet在web.xml中的配置。最后讨论了Servlet的访问优先级规则。
摘要由CSDN通过智能技术生成

目录

HTTP协议

一个完整http请求应该包含四个部分:

请求行:GET /java.html HTTP/1.1

请求头

Servlet

servlet的生命周期

 

编写一个简单的servlet程序

优先级


HTTP协议

超文本传输协议,是TCP/IP协议的应用层协议,是作为客户端和服务器之间交互而制定的统一的信息格式。

一个完整http请求应该包含四个部分:

  1. 请求行【描述客户端的请求方式请求的资源名称,以及使用的HTTP协议版本号
  2. 多个消息头【描述客户端请求哪台主机,以及客户端的一些环境信息等】
  3. 一个空行
  4. 数据(POST有,GET没有)

请求行:GET /java.html HTTP/1.1

常用的有:POST,GET

GET方式:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。

POST方式:可以在请求的实体内容中向服务器发送数据,传送的数据量无限制。

请求头

  • Accept: text/html,image/* 【浏览器告诉服务器,它支持的数据类型】
  • Accept-Charset: ISO-8859-1 【浏览器告诉服务器,它支持哪种字符集
  • Accept-Encoding: gzip,compress 【浏览器告诉服务器,它支持的压缩格式
  • Accept-Language: en-us,zh-cn 【浏览器告诉服务器,它的语言环境】
  • Host: www.it315.org:80【浏览器告诉服务器,它的想访问哪台主机】
  • If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT【浏览器告诉服务器,缓存数据的时间】
  • Referer: http://www.it315.org/index.jsp【浏览器告诉服务器,客户机是从那个页面来的---反盗链
  • 8.User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)【浏览器告诉服务器,浏览器的内核是什么】
  • Cookie【浏览器告诉服务器,带来的Cookie是什么
  • Connection: close/Keep-Alive 【浏览器告诉服务器,请求完后是断开链接还是保持链接】
  • Date: Tue, 11 Jul 2000 18:23:51 GMT【浏览器告诉服务器,请求的时间】

Servlet

继承Httpservlet接口

重写的方法init【初始化】,destroy【销毁:在服务器关闭时执行】,service【服务:处理请求的方法】

service方法:可以处理get/post的请求,优先使用service方法回应请求。

doGet方法:处理get的请求,与service同在时,service生效。

doPost方法:处理post的请求,与service同在时,service生效。

注意:如果在覆写的service方法中调用父类的service方法(super.service(arg0,arg1)),

则service方法处理之后,会再次根据请求的类型调用doGet或doPost。

servlet的生命周期:

1.从第一次调用到服务器关闭

<load-on-startup>

2.如果servlet在web.xml中配置

<load-on-startup>1</load-on-startup>

生命周期为从服务器启动就会运行,直到服务器关闭。数字为服务器启动时加载的顺序。

编写一个简单的servlet程序

编写一个简单的显示hello World的servlet

public class MyServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("Hello World!");
    }
}

必须要在web.xml中配置servlet,才可以运行,配置文件如下:

<!--配置servlet-->
    <!--配置servlet的类路径 -->
    <servlet>
        <servlet-name>my</servlet-name>
    <!--servlet的路径一定要对-->
        <servlet-class>com.servlet.MyServlet</servlet-class>
    </servlet>
<!--配置访问方式-->
    <servlet-mapping>
    <!--要与servlet-name保持一至-->
        <servlet-name>my</servlet-name>
        <url-pattern>/my</url-pattern>
    </servlet-mapping>

<!--http://localhost:8080/my和http://localhost:8080/my2都可以访问-->
    <servlet-mapping>
        <servlet-name>my</servlet-name>
        <url-pattern>/my2</url-pattern>
    </servlet-mapping>

<!--还可以通过通配符-->
    <servlet-mapping>
        <servlet-name>my</servlet-name>
        <!--/*匹配所有-->
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>my</servlet-name>
        <!--*.扩展名,如*.jsp:匹配所有扩展名为jsp的-->
        <url-pattern>*.jsp</url-pattern>
    </servlet-mapping>

在网页中输入对应的路径就可以了,如我的:http://localhost:8080/my,效果如下:

优先级

访问http://localhost:8080/my,如果没有my对应的servlet,会访问配置了/*的servlet,有则访问my

*.扩展名同理。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值