黑马程序员技术交流社区

标题: 【西安校区】Javaweb学习笔记-Servlet [打印本页]

作者: 西安Java组    时间: 2018-1-19 17:52
标题: 【西安校区】Javaweb学习笔记-Servlet
本帖最后由 逆风TO 于 2018-5-15 14:51 编辑

一、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时序图


四、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>
        
          访问的优先级是:绝对路径匹配>目录匹配>通配符匹配,匹配的原则就是"谁长得更像就找谁"。








作者: Port    时间: 2018-1-19 20:51


作者: wheat    时间: 2018-1-19 22:27
不错哦

作者: 逆风TO    时间: 2018-5-15 14:53
感谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2