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. iOS使用webView 加载网页,在模拟器中没有问题,而真机却白屏了。App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist f

    还在info.plist中配置.除了配置允许上网的配置之外,还有另一项.

  2. SMTP协议--在cmd下利用bat命令行发送邮件

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议 选择‘开始’-‘运行’,输入cmd,进入命令提示符窗口. Windows7默认没有开始Telnet服务,请在运 ...

  3. 剑指Offer 二叉树中和为某一值的路径(dfs)

    题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.     思路: 递归,然后深搜,因为题目定义的, ...

  4. 如何安装PANABIT?

    PANABIT可以帮你轻松的封杀360WIFI.二级路由和移动设备,还可以让员工在上班期间禁止浏览与工作无关的网站,禁止看视频,禁止聊QQ,禁止网购......总之一切你能想到的,它都能帮你实现. P ...

  5. Codeforces 519 E. A and B and Lecture Rooms

    Description 询问一个树上与两点距离相等的点的个数. Sol 倍增求LCA. 一棵树上距离两点相等,要么就只有两点的中点,要么就是与中点相连的所有点. 有些结论很容易证明,如果距离是偶数,那 ...

  6. CCF第四题无向图打印路径

    #include<iostream> #include<vector> #include<algorithm> #include<stack> #def ...

  7. C# 基于json通讯中的中文的处理

    如果通讯中产生了\\u4e00-\\u9fa5范围的中文的unicode代码,而不是\u4e00-\u9fa5范围的,那么c#的处理就比较麻烦了. 破解方法: 机制 它会把\\u4e00拆成部分来识别 ...

  8. 22行Python代码实现 单词纠错

    http://norvig.com/spell-correct.html 基本原理就是概率统计,亮点是Python的各种特性作者用得出神入化,尤其是获取与word相距编辑距离为2的所有单词,先找出与w ...

  9. Qt不同类之间信号槽连接

    1.类必须继承QObject. #ifndef TESTA_H #define TESTA_H #include <QObject> class TestA : public QObjec ...

  10. selenium使用actions.moveToElement处理菜单

    //should set firefox path //FirefoxBinary binary=new FirefoxBinary(new File("C:\\Program Files ...