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