java servlet api总结_关于Servlet总结

一,什么是Servlet

主要是要先讲明白Servlet是干嘛的.

Servlet是JavaWeb的 三大组件 之一,它属于动态资源,Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:

- 接收请求数据;

- 处理请求;

- 完成响应;

例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口.

二,实现Servlet的方式

实现Servlet的三种方式:(由我们来写)

- 实现javax.servlet.Servlet接口;

- 继承javax.servlet.GenericServlet类;

- 继承javax.servlet.http.HttpServlet类,会专门对http的请求提供一些支持;

一般情况都是去继承HttpServlet类来完成Servlet(方便),但是学习Servlet的起始阶段,还要从javax.servlet.Servlet接口开始学习.

服务器:相当于10086,Servlet就相当于10086中的话务员就等着人给打电话,服务器就是等着客户端来访问,根据访问的请求,将对应数据传递给客户端.

每个Servlet都是不同的,它们能处理的请求都是不同的.

Tomcat会将不同的请求,发送给对应的Servlet.

网络请求都是异步的.

注: Servlet中的生命周期等回调方法,都是服务器自动调用的.

注: Servlet的对象也是由服务器来创建.(比如Tomcat);

三,如何让浏览器访问Servlet

1,给Servlet指定一个Servlet路径,让Servlet与这个路径绑定在一起.

2,通过浏览器访问Servlet路径

3,需要在web.xml文件中对Servlet进行配置

名字

包名.Servlet类名

名字

/名字.servlet

四,生命周期方法

void init(ServletConfig sc);//第一次被访问时会创建对象,创建对象后马上执行该方法

void service(ServletRequest srq,SerletResponse srp);每次处理请求时都会执行该方法

void destroy();即将销毁之前会执行该方法,一般为服务器被关闭之前会执行.

五,特性

每个Servlet类都是单例模式,但可以存在多个Servlet类.

线程不安全,效率高.

Servlet类由我们来写,对象由服务器创建,并且由服务器调用对应的方法.

六,ServletConfig接口

web.xml中的配置信息,会被加载进内存,在内存中以ServletConfig的实现类对象的形式存在.

所以如果想要获得Servlet的配置信息,可以直接通过ServletConfig的实现类对象来获得.

一个ServletConfig对象,对应一段web.xml中Servlet的配置信息.

方法介绍:

- String getServletName();获取的是中的内容;

- ServletContext getServletContext();获取Servlet上下文对象;

- String getInitParameter(String name);通过名称(key)获取指定初始化参数的值(value),初始化参数在web.xml中配置;

- Enumeration getInitParameterNames();获得所有初始化参数的名称,就是获取所有的key(在web.xml中配置);

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_3_1.xsd"

version="3.1">

Servlet1

MyServlet

k1

v1

k2

v2

Servlet1

/HelloServlet

七,GenericServlet抽象类

该抽象类就是实现类部分Servlet接口的抽象方法,暴露出一个抽象方法Service();

很少会用.

八,HttpServlet

继承javax.servlet.http.HttpServlet类,会专门对http的请求提供一些支持;

能方便的获取请求方式(get或post等);

Fjht9obXIUoQI3IwdCPIqwoqX838

// 使用方式:

// 1,在service生命周期中,将参数中的ServletRequest强转成HttpServletRequest,

// 将ServletResponse强转成HttpServletResponse.

// 2,在service生命周期中,调用非生命周期service方法,将强转后的参数传入

// 3,非生命周期的service方法,会根据传入的参数判断当前的请求方式(get或post)

// 4,如果为get,则会调用doGet方法,如果为post,则会调用doPost方法

// 5,所以我们需要复写doGet或doPost方法来做我们想做的事

// 6,如果不覆盖doGet或doPost方法,访问时会405,服务器默认表示不支持该请求方式.

// 7,doGet和doPost不是抽象方法,有实体,实体就是给客户端返回一个405.

九,关于线程安全

Servlet不是线程安全的,优势是效率高速度快.但是也存在线程安全问题,很可能出现多个线程同时对同一个对象进行读写操作.

注: 不要在Servlet中创建成员变量,创建局部变量即可.

注: 可以创建不存储数据的成员变量,该变量没有涉及到set/get等方法.

注: 可以创建存储数据的成员变量,但是该变量存储的数据必须是只读的.

十,在web.xml中对Servlet配置,使得Servlet在服务器启动时就创建

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_3_1.xsd"

version="3.1">

httpservlet

MyHttpServlet

0

httpservlet

/wudi

十一,关于url-pattern&

标签是标签的子标签,用来定义浏览器访问Servlet时输入的url地址.

标签标签可以有多个,也就是可以输入多种url地址来访问同一个Servlet.

可以使用通配符*表示任意数量的任意字符

httpservlet

/wudi

/heheda

/heheda/*

*.do

/*

/heheda

注: 通配符*只能出现在两端,不能出现在url中间且只能存在一个通配符.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值