天天看点

Javaweb学习笔记-Servlet

一、Servlet简介

      Servlet是一个运行在web容器上的java程序,这个程序是一门用来开发动态web资源的技术,它主要的作用是提供服务器和浏览器之间的交互(请求和相应)处理。

     要开发一个Servlet,需要完成以下2个步骤:

           1、编写一个Java类,实现Servlet接口

           2、把这个类部署到web服务器中

     一般情况下,我们通常也把实现了Servlet接口的类,称之为Servlet。

二、Servlet的运行过程:

     Servlet是由web服务器创建并调用,web服务器收到了客户端的Servlet请求后,会:

            1、检查服务器是否已经装载了并创建了Servlet实例,如果是执行第4步,否则执行第2步;

            2、装载并创建Servlet实例

            3、调用Servlet实例的init方法

            4、创建一个封装了HTTP请求的HttpServletRequest对象和一个代表HTTP响应的HttpServletRersponse对象,然后调用Servlet实例的service方法,并将请求和响应对象作为参数传递

            5、web应用被停止或者服务器被重启,Servlet实例会调用destory方法进行销毁。

三、Servlet时序图

Javaweb学习笔记-Servlet

四、Servlet配置

     创建了Servlet后,必须要在web.xml文件中进行配置

                <!-- Servlet配置 -->

                <servlet>

                        <!-- Servlet名称 -->

                        <servlet-name>HelloServlet</servlet-name>

                        <!-- Servlet类路径,服务器会根据这个路径加载和创建Servlet实例 -->

                        <servlet-class>com.itheima.store.web.servlet.HelloServlet</servlet-class>

                        <!-- Servlet初始化参数,通过ServletConfig对象可以获取,可以有多个 -->

                        <init-param>

                        <!-- 参数名称 -->

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

                        <!-- 参数值 -->

                        <param-value>zhangsan</param-value>

                        </init-param>

                        <!-- 如果有这个配置,说明该Servlet需要在服务器启动的时候加载并初始化 ,置于标签最后-->

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

                </servlet>

                <!-- Servlet映射 -->

                <servlet-mapping>

                        <!-- Servlet名称,用来和Servlet标签中的servlet-name匹配,寻找Servlet类路径 -->

                        <servlet-name>HelloServlet</servlet-name>

                        <!-- Servlet路径,用来匹配客户端请求,以"/"开头 -->

                        <url-pattern>/HelloServlet</url-pattern>

                </servlet-mapping>

五、Servlet的URL映射的配置细节

       由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。对于<servlet-mapping>中<url-pattern>的配置有三种形式:

     1、绝对路径匹配,通过该配置,直接定位到一个Servlet,以/开头

                <servlet-mapping>

                        <servlet-name>HelloServlet</servlet-name>

                        <url-pattern>/HelloServlet</url-pattern>

                </servlet-mapping>

      2、目录匹配,该目录下的所有的请求都访问这个Servlet,以/开头,以*结尾

                <servlet-mapping>

                        <servlet-name>HelloServlet</servlet-name>

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

                </servlet-mapping>

      3、通配符匹配,以*开头,以扩展名(.do,.action,...)结尾

                <servlet-mapping>

                        <servlet-name>HelloServlet</servlet-name>

                        <url-pattern>/HelloServlet</url-pattern>

                </servlet-mapping>

          访问的优先级是:绝对路径匹配>目录匹配>通配符匹配,匹配的原则就是"谁长得更像就找谁"。