javaWeb 理解(一)

Servlet

Servlet(Servlet Applet),全称Java Servlet。是用Java编写的服务器端程序。主要功能用于交互式地浏览和修改数据,生成动态web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现这个这个Servlet接口的类。

Servlet接口定义了Servlet与servlet容器之间的关系。Servlet容器将Servlet类载入内存,并产生Servlet实例和调用它具体的方法。但是要注意的是,在一个应用程序中,每种Servlet类型只能有一个实例

Servlet生命周期的三个关键方法int、service、destory。

1.init()方法,当Servlet第一次被请求时,Servlet容器就会开始调用这个方法类初始化一个Servlet对象出来,但是这个方法在后续请求中不会在被Servlet容器调用。可以利用init()方法来执行相应的初始化工作

2.service()方法,每当请求Servlet时,Servlet容器就会调用这个方法。第一次请求时,Servlet容器就会先调用init()方法初始化一个Servlet对象出来,然后会调用它的service()方法进行工作,但在后续的请求中,Servlet容器只会调用service方法。

3.destory()方法。当要销毁Servlet时,Servlet容器就会调用这个方法。在关闭Servlet容器时,就会调用该函数。

下面是访问Servlet的图解

上面是对Servlet的理解

平时在创建项目的时候,最开始就是一个功能对应一个Servlet,并在web.xml中对创建的Serlvet进行相关的配置,开始项目的时候Servlet比较少,但是到后来发现Servlet越来越多的,在web.xml中配置的记录也越来越多(这个问题可以通过注解的方式来进行解决,Servlet3.0添加了注解可以解决Serlvet在xml中的配置问题。)虽然web.xml中配置的问题解决了,但是Servlet的过多个问题还是没有解决。

BaseServlet

在进行java培训的时候老师最开始讲的都是最原始的Servlet,要是讲的全的话直接将javaWeb的框架,但是不讲其中的原理,仅仅将使用框架的使用方法。在不适用框架的情况下,如何减少Servlet的数量,可以通过BaseServlet。BaseServlet其实可以不叫这个名字,但是在使用的时候一定要去继承HttpServlet。继承了HttpServlet之后主要就是去实现Service()。一般来说service方法是不需要重写的,因为在HttpServlet中已经有了很好的实现,它会根据请求的方法名(Get,POST),调用doGet,doPost以及其他的doXXX方法,也就是说service是用来转向的。但是如果你在自己的servlet类中覆盖了service方法,实现的方法如下:

    public void service(ServletReuqest req,ServletResponse res) throws ServletException,IOException{
        res.getOutputStream().print("image is <img src="images/downcoin.gif"></img><br>");
    }

那么这时service就不是用来转向的,而是用来处理业务的,现在不论你的客户端调用post还是get来请求此servlet,都会执行service方法也只能执行service方法

在BaseServlet中就是通过复写service方法来实现对业务的处理。通过BaseServlet可以减少Servlet的数量。通过让BaseServlet继承HttpServlet之后,在让自己的类去继承BaseServlet,通过BaseServlet中的service方法来调用子类中的实现的方法(通过反射来实现对子类中的方法调用的)。

baseServlet中的实现步骤

第一步:先获取请求携带的方法参数。

第二步:获取指定类的字节码对象。

第三步:根据请求携带的方法参数值,在通过字节码对象获取指定的方法。

第四步:最后执行指定的方法。

posted @ 2019-09-01 16:05  xingchen95  阅读(463)  评论(0编辑  收藏  举报