JavaWeb学习之什么是Servlet、如何使用servlet、为什么这样使用、servlet的虚拟路径(2)

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、只有*.才表示通配符
时间: 2024-10-25 07:16:23

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

javaweb学习之Servlet开发(二)

javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. 例如: 1 <servlet> 2 <servlet-name>ServletConfigDemo1</servlet-name> 3 <servlet-class>gacl.servlet

JavaWeb学习笔记之Servlet(一)

1. 引子: 当我们开始进入JavaWeb开发的学习时,我们就必须要和Servlet和HTTP这两个词进行打交道了,尤其是Servlet.即使到了后面使用JSP (我们知道JSP其本身就是一个Servlet)来进行开发我们的应用. 下图就是 Servlet API中相应的UML图,在学习JavaWeb 开发时,我们最好对下面的各个Servlet中的方法做一定的了解及其相应的图中的关系,尤其是HttpServletRequest和HttpServletResponse 中的方法. 2. 部署服务器

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

转载:http://www.cnblogs.com/xdp-gacl/p/3763559.html 只为成功找方法,不为失败找借口! javaweb学习总结(六)——Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. 例如: 1 <servlet> 2 <servlet-name>ServletC

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

[声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 联系方式:[email protected] 一.http协议回顾: 在上一篇文章中:JavaWeb学习之Servlet(一)----MyEclipse及Tomcat的配置,我们通过在浏览器输入url,就能看到在MyEclipse中编写的Servlet资源,效果如下: 上图中,整个过程是这样的:浏览器中输入url后,会通过hosts文件/dns服务

JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet

JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet 一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet-name>ActionServlet</servlet-name> 3 <servlet-class>me.gacl.web.controller.ActionServlet</s

JavaWeb学习篇之----Servlet过滤器Filter和监听器

JavaWeb学习篇之----Servlet过滤器Filter和监听器 首先来看一下Servlet的过滤器内容: 一.Servlet过滤器的概念: *************************************************************************************** Servlet过滤器是在Java Servlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改. Servlet过滤器本身并不产生请求和响应对象,

JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用(转)

JavaWeb学习之Servlet(四)----ServletConfig获取配置信息.ServletContext的应用 [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140877.html [正文] 一.ServletConfig:代表当前Servlet在web.xml中的配置信息(用的不多) String getServletName()  -- 获取当前Servlet在web.xml中配置的名字 String

javaweb学习总结(五) - - Servlet开发(二)

一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. 例如: <servlet> <servlet-name>ServletDemo2</servlet-name> <servlet-class>com.tanlei.cn.ServletDemo2</servlet-class> <

JavaWeb学习——了解Servlet

JavaWeb学习——了解Servlet 摘要:本文主要学习了什么是Servlet,以及如何使用Servlet进行开发. 基础知识 背景 随着互联网技术的发展,基于HTTP和HTML的web应用急速增长.早期的web应用主要用于浏览新闻等静态页面,用户通过HTTP协议请求服务器上的静态页面,服务器上的web服务器软件接收到请求后,读取URI标示的资源,再加上消息报头发送给客户端浏览器,浏览器负责解析HTML,将结果呈现出来. 然而随着时间发展,用户已经不满足于仅浏览静态页面.用户需要一些交互操作

JavaWeb学习总结(二) —— Servlet

一.Servlet概述 1. 什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: 接收请求数据: 处理请求: 完成响应. 例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口. 2. 实现Servlet的方式 实现Ser