1.Servlet的概述
Servet是使用Java语言编写的运行在服务器端的程序。狭义的Serlet是指Java语言实现的一个接口,广义的Serlet是指任何实现了这个Servlet接口的类,一般情况下, 人们将Servet理解为后者。Servilet 主要用于处理客户端传来的HTTP请求,并返回一个响应,它能够处理的请求有doGet()和doPost()等方法。
Servlet由Servlet容器提供,所谓的Servlet容器是指提供了Servlet 功能的服务器(本书中指Tomcat), Servlet 容器将Servlet动态地加载到服务器上。与HTTP协议相关的Servlet使用HTTP请求和HTTP响应与客户端进行交互。因此,Servlet容器支持所有HTTP协议的请求和HTTP响应与客服端进行交互。因此,Servlet容器支持所有HTTP协议的请求和响应。 Servlet应用程序的体现结构如图
在图中,Servlet的请求首先会被HTTP服务器(如Apache)接收,HTTP服务器只负责静态HTML页面的解析,对于Servlet的请求转交给Servlet容器,Servlet容器会根据web.xml文件中的映射关系,调用相应的Servlet,Servlet将处理的结果返回给Servlet容器,并通过HTTP服务器将响应传输给客户端。
Servlet技术具有如下特点。
●方便: Servlet提供了大量的实用工具例程,如处理很难完成的HTML表单数据、读取和设置HTTP头,以及处理Cookie和跟踪会话等。
●跨平台: Servlet用Java类编写,可以在不同操作系统平台和不同应用服务器平台下运行。●灵活性和可扩展性:采用Servlet开发的Web应用程序,由于Java类的继承性及构造函数等特点,使得应用灵活,可随意扩展。
除了,上述几点外,Servlet 还具有功能强大、能够在各个程序之间共享数据、安全性强等特点,此处就不再详细说明,读者作为了解即可。
2.使用Eclipse工具开发Servlet
1.新建Web项目
由于Eclipse工具在创建Servlet时会将Servlet的相关配置文件添加到web.xml中,因此打开web.xml文件,可以看到TestServlet01的虚拟映射路径已经自动进行配置,如图:
3.部署和访问Servlet
接下来,在浏览器中输入地址“http://locatlhost:9999/HttpServlet/luo.xml”
4 Servlet的多重映射
4.1 Servlet映射路径中使用通配符
在实际开发过程中,开发者有时候会希望某个目录下的所有路径都可以访问同一个Servlet,这时,可以在Servlet映射的路径中使用通配符“米”。 通配符的格式有两种,具体如下。
(1)格式为“.扩展名”,例如“.do" 匹配以".do"结尾的所有URL地址。
(2)格式为“/”, 例如“/abc/" 匹配以“/abc" 开始的所有URL地址。
需要注意的是,这两种通配符的格式不能混合使用,例如,/abc/*.do 就是不合法的映射路径。另外,当客户端访问一个Servlet 时,如果请求的URL地址能够匹配多个虚拟路径,那么Tomcat将采取最具体匹配原则查找与请求URL最接近的虚拟映射路径。例如,对于如下所示的-些映射关系:
/abc/* 映射到Servlet1
/* 映射到Servlet2
/abc 映射到Servlet3
*.d0 映射到Servlet4
将发生如下一些行为:
当请求 URL为“/abc/a.html” “/abc/” 和“/” 都可以匹配这个URL, Tomcat会调用Servlet1
当请求URL为“/abc”"/abc/“和“/abc"都可以匹配这个URL, Tomcat会调用Servlet3当请求URL为“/abc/a.do” “.do" 和“/abc/*" 都可以匹配这个URL, Tomcat会调用Servlet1
当请求URL为“/a.do"“/“和“.do"都可以匹配这个URL, Tomcat会调用Servlet2当请求URL为“xxxyy/.do””“.do”和“/”都可以匹配这个URL,Tomcat 会调用Servlet2
ServletConfig和ServletContext接口
ServletConfig接口
什么是ServletConfig: 它是servlet的配置对象,作用就是获取与servlet的初始化参数。
它的子类是GenericServlet和HttpServlet.
它被实列化是通过web服务器实现的。
Servletonfig接口的常用方法
获到servletContext对象:getServletContext()
获取servlet的名称:getServletName():对应web.xml里面testservlet
初始化参数的配置:web.xml文件中
<servlet-class>cn.itcat.servlet.TestServlet</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter();
ServletConfig config=this.getServletConfig();
String value= config.getInitParameter("encoding");
System.out.println("encoding"+value);
out.println("encodig="+value);
ServletContext接口
ServletContext对象是在web服务器启动时就创建了,是web服务器创建的servletContext对象,
每一个web项目只有一个ServletContext对象。
ServletContext对象的作用:获取web应用程序的初始化参数,在web应用程序能共享数据,获取web项目下的资源文件。
得到ServletContext对象:
1.通过ServletConfig对象: config.getServletContext()
2.直接得到: getServletContext();
<param-name>username</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>ip</param-name>
<param-value>192.168.1.1</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>baizhenchuan</servlet-name>
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
<servlet>
2020080605044