浅谈Java Web 之Servlet

1.Servlet概述

(1)Serlet名字的由来?

Servlet 是Java Servlet 的简称,Servlet本身并不是一个英文单词,而是两个单词拼构而成的:Servlet = Service + Applet。与之类似的是Scriptlet,它也是由两个单词拼构而成的:Scriptlet = Script + Applet,它表示的是脚本小程序。由此可以看出,java的老东家sun的命名特点。

(2)Servlet是什么?用来干什么?

通俗的理解,Servlet是用java语言编写的一个小程序,这个小程序运行在服务器端。实际上,我们对于Servelet的理解可以分为两个层次:

  • 狭义的Servlet是指Java语言实现的一个接口。
  • 广义的Servlet是指任何实现了这个Servlet接口的类。

我们知道Java Web的资源分为动态资源和静态资源,其中动态资源的特征是具有逻辑性,而动态资源的逻辑性就是通过java代码呈现出来的,具体的实现就是运行在服务器端的java代码,也就是我们的Servlet类,因此我们通常是说的Servlet,实际上指的是广义Servlet。但是Servlet类与我们通常写的java类又有着不同之处。下面详细讲解。

(3)Servlet与通常的java程序的不同之处

  • 因为它运行在服务器端的Web服务器软件上,因此它要遵循一定的规则。它需要遵循的规则的具体体现就是,编写运行在服务器端的小程序的话,需要实现Servlet接口。实现这样接口的程序写出来以后,就叫Servlet程序。
  • 我们通常写的程序是我们主动去调用它,也就是在主方法中使用它。但是,运行在服务器端的小程序,也就是Servlet不需要我们主动去调用它,在需要执行的时候,我们的服务器软件就会去调用它。
  • 实际上说我们不会主动去调用它,也不完全正确。作为一个客户,当我们使用浏览器访问一些web资源时,实际上可能就发起了Servlet的调用。但是,这个请求中间经过了web服务器软件这一层,也就是我们先把请求给了web服务器软件,web服务器软件再去具体的执行某一个servlet。那web服务器软件怎么知道我们要执行哪个Servlet呢?它是怎么体现的呢?答案就是通过url体现出来的。也就是我们在浏览器中输入一个路径时,可能就是在请求执行一个(或多个)Servlet的。因此,我们需要给每一个Servlet配置一个url。

(4)Servlet的特点

Servlet自身不依赖于协议或者平台。它的主要功能在于交互式地浏览和生成数据,生成动态Web内容。通俗的说,它就是用来申请和生成web资源的,例如html页面。

2.Servlet的继承体系

Servlet的继承关系图如下

在实际开发中,我们写Servlet程序,一般继承自HttpServlet。

3.Servlet的访问路径配置

  • 通过配置文件配置
  • 通过注解配置

注意:一个Servlet程序可以配置多个访问路径。例如通过注解方式配置,可以这样写:@WebServlet({"/d4","/dd4","/ddd4"}),这样配置的话我们访问三个路径中的任何一个,都可以访问到该Servlet资源。

4. Servlet程序举例

(1)使用配置文件方式配置

 //使用配置文件方式配置Servlet,在web.xml中添加 下述信息即可:
 /*
		    <!--配置Servlet -->
                    <!--(1).为Servlet类起一个别名, 例如:demo-->
		    <servlet>
		        <servlet-name>demo</servlet-name>
		        <servlet-class>全类名</servlet-class>               
		    </servlet>
		    <!--(2). 为demo配置一个url-pattern ,例如:/demo1  这样,这个servlet类便可以通过/demo 这个资源路径访问到 -->
		    <servlet-mapping>										
		        <servlet-name>demo1</servlet-name>		
		        <url-pattern>/demo1</url-pattern>		        
		    </servlet-mapping>
*/

(2)使用注解方式配置

@WebServlet("/demo")
public class ServletDemo4 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo4...");
        System.out.println(req);
    }
}
posted @ 2019-09-04 09:30  江南又一春  阅读(488)  评论(0编辑  收藏  举报