Servlet相关

1、什么是Servlet?

* 服务器端Java程序,servlet需要交给服务器来运行。

* 与javax.servlet.Servlet接口有关的java程序

2、如何使用servlet?

* 创建web项目

* 创建一个类,并实现Servlet接口

* 交给服务器运行 /WEB-INF/web.xml

<!-- 注册servlet

<servlet>标签:进行servlet注册

<servlet-class>标签:确定servlet类所在位置

* 内容:需要注册的servlet类的完整路径名

<servlet-name>标签:为servlet起一个别名,提供给其他程序使用

* 内容:自定义

* 要求,必须唯一

-->

<servlet>

<servlet-name>HelloWorld</servlet-name>

<servlet-class>cn.itcast.HelloWorld</servlet-class>

</servlet>

<!-- 

servlet的映射

<servlet-mapping>标签:映射已有的servlet

<servlet-name>标签:确定使用的已有的servlet的名称

* 内容:来自之前配置的<servlet><servlet-name>的内容

<url-pattern>标签:确定浏览器访问的路径

* 内容:自定义

* 要求 : 必须“/”开头,名称唯一

-->

<servlet-mapping>

<servlet-name>HelloWorld</servlet-name>

<url-pattern>/hello</url-pattern>

</servlet-mapping>

3、为什么这样使用?

*  javax.servlet.Servlet的生命周期:

* init(ServletConfig)

* servlet的初始化方法,执行次数:1次

* javax.servlet.ServletConfig对当前servlet的配置信息的描述

* getServletName():返回当前servlet的名称:<servlet><servlet-name>配置

* getInitParameter("paramName"):返回指定初始化参数名称的值

* <servlet>

<servlet-name>helloWorld222</servlet-name>

<servlet-class>cn.itcast.HelloWorld2</servlet-class>

<!-- 配置初始化参数列表 -->

<init-param>

<!-- 初始化参数的名称 -->

<param-name>gf</param-name>

<!-- 初始化参数的值 -->

<param-value>凤姐</param-value>

</init-param>

</servlet>

* getInitParameterNames():返回当前servlet的所有的初始化参数的名称

* 返回值:java.util.Enumeration  --> hasMoreElements(),nextElement()

* getServletContext():ServletConfig保存了当前web项目的 ServletContext的引用[暂记]

* service(ServletRequest,ServletResponse)【**】

* 当前servlet请求与响应时调用的方法

* ServletRequest:存放所有用户的请求信息

* ServletResponse:存放服务器响应给用户的所有的信息

* 总结

* request

* 接口:javax.servlet.ServletRequest

* 实现类:org.apache.catalina.connector.RequestFacade

* 关系:

* public class RequestFacade implements HttpServletRequest {

* public interface HttpServletRequest extends ServletRequest {

* 总结: RequestFacade --> HttpServletRequest  --> ServletRequest

* 结果:javax.servlet.http.HttpServletRequest request = (HttpServletRequest) req;

* response

* 接口:javax.servlet.ServletResponse

* 实现类:org.apache.catalina.connector.ResponseFacade

* 关系:

* public class ResponseFacade implements HttpServletResponse {

* public interface HttpServletResponse extends ServletResponse {

* 总结: ResponseFacade --> HttpServletResponse  --> ServletResponse

* 结果:javax.servlet.http.HttpServletResponse response = (HttpServletResponse) resp;

* destroy()

* 当前servlet的销毁方法,回收资源

* javax.servlet.GenericServlet类【看】  this,super

* 通用servlet实现类,与协议无关

* 此类是抽象类,具有抽象方法service(ServletRequest,ServletResponse)

* public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;

* 此类实现Servlet接口,此类也实现了ServletConfig接口

* public abstract class GenericServlet implements Servlet, ServletConfig

* 此类缓存了init方法的实际参数的值。(ServletConfig的实例对象给缓存了)

* public void init(ServletConfig config) throws ServletException {

this.config = config;

this.init();

 }

* 此类中在一个没有参数init方法,所有的servlet初始化工作,建议覆盖此方法。

* 否则,覆盖带有参数的init方法,需要在方法的第一行添加super.init(config);

* public void init(ServletConfig config) throws ServletException {

super.init(config); //此行代码必须存在

//之后是自己的内容

}

* javax.servlet.http.HttpServlet类

* 此类是抽象类,但是不存在抽象方法。

* 抽象类的原因,需要子类进行HttpServlet类方法的覆盖

* 没有抽象方法的原因:当子类覆盖父类的相应的方式时,没有强制要求

* 此类是与协议(http)有关的servlet的实现类

* request = (HttpServletRequest) req;

              response = (HttpServletResponse) res;

* request.getMethod()方法,返回当前servlet的请求方法,方便与处理不同的请求

* 总结:【**】

* 创建一个类,继承HttpServlet类

* 根据需求,覆盖doPost和doGet方法

* 需要再web.xml中进行配置

* 测试

* 注意:

* 如果需要初始化工作:覆盖init()方法

* 如果初始化工作需要耗费大量时间,需要设置servlet的在服务器启动时进行初始化工作。

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

* 配置当前servlet在服务器启动时加载顺序,取值:0-6 ,值越小,优先加载

4、servlet的虚拟路径
1、只能使用 / 或 * 开头
2、/ 和 *. 不能同时存在
3、/ 或 /* 表示任意
4、只有*.才表示通配符

Servlet是Java Web应用程序中的一种Java类,用于处理Web请求和响应。Servlet可以接收HTTP请求并生成HTTP响应。Servlet通常用于构建动态Web应用程序,如Web表单处理、用户身份验证、网站搜索等。 以下是一些Servlet相关理论: 1. Servlet生命周期:Servlet的生命周期包括初始化、服务和销毁三个阶段。当Servlet容器第一次加载Servlet时,它会调用init()方法对Servlet进行初始化。当Servlet容器接收到一个请求时,它会调用service()方法来处理请求。当Servlet容器关闭时,它会调用destroy()方法来销毁Servlet。 2. Servlet API:Servlet API是一组Java类和接口,它定义了Servlet容器和Servlet之间的通信规范。Servlet API包括HttpServletRequest、HttpServletResponse、ServletContext等类和接口。 3. Servlet容器:Servlet容器是Web服务器或应用服务器中的一个组件,它负责管理Servlet的生命周期并提供Servlet运行环境。常见的Servlet容器包括Tomcat、Jetty、WebLogic等。 4. Servlet配置:Servlet可以在web.xml文件中配置。web.xml文件是一个XML文档,它包含Servlet和其他Web应用程序组件的配置信息。 5. Servlet过滤器:Servlet过滤器是一种能够拦截和处理请求的Java类。Servlet过滤器可以用于身份验证、日志记录、压缩、加密等任务。 6. Servlet会话管理:Servlet可以使用会话来跟踪用户在Web应用程序中的状态。会话是一种将数据存储在服务器端的机制,它可以用于跨页面传递数据、用户身份验证等任务。 以上是一些Servlet相关理论。理解这些概念可以帮助开发人员更好地理解和使用Servlet技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值