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>com.yxl.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>
* 测试:http://localhost:8080/day05/hello 3、为什么这样使用?
* javax.servlet.Servlet的生命周期:
* init(ServletConfig servletConfig)
* servlet的初始化方法,执行次数:1次
* javax.servlet.ServletConfig对当前servlet的配置信息的描述
* servletConfig.getServletName():返回当前servlet的名称:<servlet><servlet-name>配置的内容
* servletConfig.getInitParameter("paramName"):返回指定初始化参数名称的值,读取配置文件web.xml
* <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>
* servletConfig.getInitParameterNames():返回当前servlet的所有的初始化参数的名称
* 返回值:java.util.Enumeration --> hasMoreElements(),nextElement()
*ServletContext servletContext = servletConfig.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的虚拟路径
指的是 <servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
中<url-pattern>的路径 1、只能使用 / 或 * 开头
2、/ 和 *. 不能同时存在
3、/ 或 /* 表示任意
4、只有*.才表示通配符

5、关于缺省Servlet
如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet。
凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求。
在<tomcat的安装目录>\conf\web.xml文件中,注册了一个名称为org.apache.catalina.servlets.DefaultServlet的Servlet,并将这个Servlet设置为了缺省Servlet。
当访问Tomcat服务器中的某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet。

 

JavaWeb学习之什么是Servlet、如何使用servlet、为什么这样使用、servlet的虚拟路径、关于缺省Servlet(2)的更多相关文章

  1. servlet虚拟路径映射

    在web.xml文件中,一个<servlet-mapping>元素用于映射一个Servlet的对外访问路径,该路径也称为虚拟路径.例如<url-pattern>/TestSer ...

  2. Servlet虚拟路径匹配规则

    当 Servlet 容器接收到请求后,容器会将请求的 URL 减去当前应用的上下文路径,使用剩余的字符串作为映射 URL 与 Servelt 虚拟路径进行匹配,匹配成功后将请求交给相应的 Servle ...

  3. JavaWeb学习总结-04 Servlet 学习和使用

    一 Servlet 1 Servlet概念 Servlet时运行在服务器端的Java程序. Servlet的框架核心是 javax.servlet.Servlet 接口. 所有自定义的Servlet都 ...

  4. javaweb学习总结(六)——Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  5. javaweb学习之Servlet开发(二)

    javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个< ...

  6. JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ...

  7. javaweb学习总结(六)——Servlet开发(二)(转)

    转载自 http://www.cnblogs.com/xdp-gacl/p/3763559.html 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文 ...

  8. (转)JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ...

  9. JavaWeb学习 (六)————Servlet(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  10. JavaWeb学习总结(四):Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

随机推荐

  1. 字符串驱动技术—— MethodAddress , MethodName , ObjectInvoke

    首先看一段Delphi帮助中的介绍(After Delphi 6 ): Returns the address of a published method. class function Method ...

  2. 2016年11月3日--Window.document对象

    五.相关元素操作: var a = document.getElementById("id");找到a: var b = a.nextSibling,找a的下一个同辈元素,注意包含 ...

  3. fastx_toolkit去除测序数据中的接头和低质量的reads

    高通量测序数据下机后得到了fastq的raw_data,通常测序公司在将数据返还给客户之前会做"clean"处理,即得到clean_data.然而,这些clean_data是否真的 ...

  4. 【GoLang】golang 中可变参数的 定义、传递 示例

    支持可变长参数列表的函数可以支持任意个传入参数,比如fmt.Println函数就是一个支持可变长参数列表的函数. package main import "fmt" // 这个函数 ...

  5. Expression表达式树

    表达式树表示树状数据结构的代码,树状结构中的每个节点都是一个表达式,例如一个方法调用或类似 x < y 的二元运算 1.利用 Lambda 表达式创建表达式树 Expression<Fun ...

  6. ERROR Cannot determine the location of the VS Common Tools Folder

    参考:ERROR Cannot determine the location of the VS Common Tools Folder   http://blog.csdn.net/m3728975 ...

  7. 流程图制作在云上 https://www.processon.com/

    流程图制作在云上 : https://www.processon.com/

  8. 【leetcode】Longest Valid Parentheses

    Longest Valid Parentheses Given a string containing just the characters '(' and ')', find the length ...

  9. VMware Workstation 下进行 桥连接

    大家都知道进行桥连接的时候,需要我们的宿主机与虚拟机同处于一个网络段, 使得mask与默认网关相同即可进行连接 ; 本地的IP .掩码 . 网关: 虚拟机的Ip 掩码,网关: // 当然这里的DNS ...

  10. 数据结构-链表实现删除全部特定元素x

    链表节点类定义: template <class T> class SingleList; template <class T> class Node { private: T ...