Servlet学习笔记

HTTP协议:
协议的概念:

规定被约束的对象需要遵守的规则!!!


HTTP协议:

HTTP协议:超文本传输协议(HTTP,HyperTextTransfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

 

HTTP协议规定 浏览器(客户端)向服务器发送 何种格式的数据. 服务器 会处理数据. 向浏览器(客户端)作出响应.(向客户端发送何种格式的数据)

 

HTTP协议的特点:

* HTTP协议遵守一个请求响应模型.

    * 请求和响应必须成对出现.

    * 必须先有请求后有响应.

* HTTP协议默认的端口:80


HTTP协议的请求部分

客户端向服务器发送的数据的格式:

GET请求方式的抓包:

GET /WEB09/demo1/subSucc.html?username=aaa&password=123HTTP/1.1

Accept: text/html, application/xhtml+xml, */*

X-HttpWatch-RID: 63397-10023

Referer:http://localhost:8080/WEB09/demo1/demo1.html

Accept-Language: zh-Hans-CN,zh-Hans;q=0.5

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64;Trident/7.0; rv:11.0) like Gecko

Accept-Encoding: gzip, deflate

Host: localhost:8080

Connection: Keep-Alive

 

POST方式的抓包:

POST /WEB09/demo1/subSucc.html HTTP/1.1

Accept: text/html, application/xhtml+xml, */*

X-HttpWatch-RID: 63397-10049

Referer: http://localhost:8080/WEB09/demo1/demo1.html

Accept-Language: zh-Hans-CN,zh-Hans;q=0.5

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64;Trident/7.0; rv:11.0) like Gecko

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

Host: localhost:8080

Content-Length: 25

Connection: Keep-Alive

Cache-Control: no-cache

 

username=aaa&password=123

 

【请求行】

请求方式 请求路径协议版本

* 请求方式:请求方式有很多种 常用的是GET和POST.

* GET和POST区别?

     * GET:请求参数会显示到地址栏.GET方式有大小的限制.GET方式没有请求体

     * POST:请求参数不会显示到地址栏.在请求体中.POST没有大小限制.POST方式有请求体.

* 只有表单设置为method=”post”才是post请求.其他的都是get请求

【请求头】

* 请求头通常都是key:value的键值对的形式.一般情况下一个key对应一个value但也有一个key对应多个value的情况.

* Referer:网站的来源.防盗链.

* User-Agent:获得客户端浏览器的信息.(文件下载:IE:URL编码 火狐Base64)

* If-Modified-Since :和响应中一个头一起使用 完成本地缓存的查找.

【请求体】

POST方式 提交的请求参数


HTTP协议的响应部分

服务器向客户端发送的数据的格式:

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Accept-Ranges: bytes

ETag: W/"147-1455670867735"

Last-Modified: Wed, 17 Feb 2016 01:01:07 GMT

Content-Type: text/html

Content-Length: 147

Date: Wed, 17 Feb 2016 01:17:06 GMT

 

【响应行】

协议版本 状态码状态码描述

200:响应成功

302:重定向

304:查找本地缓存

404:浏览资源不存在.

500:服务器内部错误.


【响应头】

一个key对应一个value,也有一个key对应多个value的头.

Last-Modified   :最后的修改文件的事件.与If-Modified-Since一起使用.

Refresh         :定时刷新.

Location        :重定向的路径.

Content-Disposition:文件下载的时候使用的头信息.

禁用浏览器缓存:

Pragma

Expires 

Cache-Control


【响应体】

页面要显示的内容.


【Servlet的概述】

 什么是Servlet:

是运行在服务器端的一小的Java程序,接收和响应从客户端发送请求.

Servlet的作用:

处理客户端的请求,并且对请求作出响应.

使用Servlet:

Servlet的入门:

* 编写一个类实现Servlet接口.

public class ServletDemo1 implements Servlet{

    @Override

    publicvoid service(ServletRequest request, ServletResponse response) throwsServletException, IOException {

        // System.out.println("");

        response.getWriter().println("HelloServlet...");

    }

...

}

 

* 配置Servlet到WEB服务器.

  <!-- 配置Servlet -->

 <servlet>

    <!-- Servlet的名称 -->

    <servlet-name>aaa</servlet-name>

    <!-- Servlet的类的全路径 -->

    <servlet-class>com.itheima.servlet.demo1.ServletDemo1</servlet-class>

 </servlet>

  <!-- 配置Servlet的映射 -->

 <servlet-mapping>

    <!--Servlet的名称 -->

    <servlet-name>aaa</servlet-name>

    <!-- Servlet的访问路径 -->

    <url-pattern>/servletDemo1</url-pattern>

 </servlet-mapping>


Servlet的生命周期

生命周期:

指的是一个对象从创建到销毁的过程.

Servlet的生命周期,Servlet对象从创建到销毁的过程.

 

客户端第一次访问该Servlet的时候才会创建一个Servlet的对象,那么Servlet中的init方法就会执行.任何一次从客户端发送的请求,那么服务器创建一个新的线程执行Servletservice方法为这次请求服务.

service方法的内部根据请求的方式的不同调用不同doXXX的方法.Servlet从服务器中移除或者关闭服务器的时候Servlet对象就会被销毁.destroy的方法就会执行.


Servlet的接口的实现:

Servlet         接口

    |

GenericServlet  通用的Servlet

    |

HttpServlet     HttpServlet


 配置Servlet的启动时加载:

在web.xml中<servlet>标签中配置

<load-on-startup>2</load-on-startup>

 
配置url-pattern

【完全路径匹配】

* 以/开头 如:/aaa /aaa/bbb

【目录匹配】

* 以/开头 以*结尾 如:/* /aaa/*/aaa/bbb/*

【扩展名匹配】

* 不能以/开始的 需要以*开始  如:*.jsp  *.do *.action

 

完全路径匹配 > 目录匹配 > 扩展名匹配

 

有如下的一些映射关系:

    Servlet1 映射到 /abc/*

    Servlet2 映射到 /*

    Servlet3 映射到 /abc

    Servlet4 映射到 *.do

问题:

当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应

    Servlet引擎将调用Servlet1

当请求URL为“/abc”时,“/*”和“/abc”都匹配,哪个servlet响应

    Servlet引擎将调用Servlet3

当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应

    Servlet引擎将调用Servlet1

当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应

    Servlet引擎将调用Servlet2.

当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应

    Servlet引擎将调用Servlet2

 

WEB开发中的路径的问题:

相对路径:不是以 / 开始的路径.

* localhost:8080/WEB09/servletDemo5

* localhost:8080/WEB09/demo2/demo1.html

 

绝对路径:

通常都是以  / 开始的路径.


【ServletContext】

ServletContext  :Servlet中全部的内容ServletContext都了解.一个WEB应用只有一个ServletContext对象.服务器启动的时候,服务器为每个WEB工程创建一个属于自己项目的ServletContext对象.服务器关闭的时候或者项目从服务器中移除ServletContext才会被销毁.如果将值保存在ServletContext中.值就有一个作用的范围.所以这个对象称为”域对象”.

* 保存全局性信息和数据:

    * 网站的访问次数:

    * 聊天室:

* 在Servlet中获得ServletContext:

    * ServletContextgetServletContext();

 

* 操作这个对象的方法:

    * voidsetAttribute(String name,Object value);

    * ObjectgetAttribute(String name);

    * voidremoveAttribute(String name);



ServletConfig:(了解)

这个对象可以获得到Servlet的配置信息:

        String servletName =this.getServletConfig().getServletName();

        System.out.println(servletName);

        // 获得初始化参数:

        String username =this.getServletConfig().getInitParameter("username");

        String password =this.getServletConfig().getInitParameter("password");

        System.out.println(username+"   "+password );

 

        // 获得所有初始化参数的名称

        Enumeration<String> names =this.getServletConfig().getInitParameterNames();

        while(names.hasMoreElements()){

            Stringname = names.nextElement();

            Stringvalue = this.getServletConfig().getInitParameter(name);

            System.out.println(name+"  "+value);

        }


ServletContext:

1.获得文件的MIME的类型.  -- 文件上传和下载.

2.获得全局初始化参数:

3.作为域对象存取数据:

4.读取WEB项目的文件:(***)

使用类加载器获得web项目的文件.




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值