JavaWeb之Servlet开发(一)

xiaoxiao2021-02-28  91

Servlet是一个JavaEE的组件,也是JavaEE中的一个规范. 而服务器是对Servlet规范的一个实现. Servlet是一个程序(类),只不过必须要遵循Servlet的规范. 要求类:必须实现javax.servlet.Servlet接口. 以下的实现以Tomcat服务器作为例子: 创建一个Servlet程序的步骤:

1) Tomcat根路径/lib/servlet-api.jar到项目的WEB-INF/lib目录中,并做build path. (说过TomCat服务器是对Servlet的一种实现,那么在Tomcat服务器中必然就有一个jar包是用来做Servlet接口实现的) 2)编写Servlet程序,使之实现javax.servlet.Servlet接口,并覆盖接口中的方法. public class XxxServlet implements javax.servlet.Servlet{...实现方法...}(记住在开发中Servlet相关的类名以Servlet作结尾) 3):发现方法中参数出现arg0,arg1的情况是因为没有关联Servlet的源代码. 是否关联源代码和程序最终的运行没有关系,只是在开发阶段参数美观,可阅读源代码. Tomcat的源代码程序:apache-tomcat-7.0.57-src.zip 4):在service(ServletRequest req, ServletResponse res)方法,打印一句话. 引导:此时XxxServlet类,和Tomcat一点关系都没有:我们需要告诉Tomcat来帮我们管理XxxServlet类.(Tomcat是Servlet的容器,会负责Servlet对象的生命周期和方法调用). 所以,得以配置的形式,告诉Tomcat来帮我们管理自定义的Servlet类. 5):Servlet配置,需要配置web项目中的web.xml: <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.jerry.servlet.DemoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <!-- 向外暴露一个资源名称,供外界访问,此资源名称必须以/打头 --> <url-pattern>/example</url-pattern> </servlet-mapping>

部署项目,并访问: server.xml(在Tomcat服务器中的conf配置文件夹下)中: 以上的docBase表示的是当前web项目所处的根路径,必须到webapp为止,path是当前项目的上下文路径,这个路径名可以自定义,在现在的开发中一般可以省略为”“. 在浏览器中访问的方式: http://ip:port/contextPath/资源名(contextPath等价于上面配置的path,如果配置文件中的path为”“,么有上下文路径,则可以不带/contextPath) 例如 http://localhost:80/example

Servlet的生命周期

创建对象->初始化操作->运行操作->销毁操作

Tomcat管理着Servlet对象的生命周期,也就是说Servlet对象以上四个步骤的方法调用全部是由Tomcat进行调用. 以上的四个方法在web的生命周期中,一般伴随着Tomcat的启动到Tomcat的关闭.

Tomcat的管理Servlet对象流程 在接受到用户请求之后Tomcat服务器会去调用Servelt的构造器来创建servlet对象(构造器表面上在看不见,在底层中[Tomcat的servlet-api.jar]有一个公共的无参数构造器),这里需要记住的是,Servlet是单例的,所以它的构造器在服务端程序第一次被请求的时候会被调用,而且也只会被调用一次. 注意点:为什么底层要有一个公共的无参数构造器,因为Tomcat是利用Class.newInstance()方式来创建Servlet对象的.

以下是初始化 void init(ServletConfig config):在构造器执行完毕之后,调用init方法,也只会执行一次. void service(ServletRequest req, ServletResponse resp):每一次请求都会执行该方法. void destroy():正常关闭Tomcat才会执行(该方法不一定会被执行,我们在开发中也没必要在其中编写扫尾的操作).

上面的cofig对象是封装了一个保存了项目配置信息方法的对象,这个对象由Tomcat服务器来进行创建. ServletRequest req:请求对象 ServletResponse resp:响应对象 这二个对象也是由Tomcat进行创建

转载请注明原文地址: https://www.6miu.com/read-27602.html

最新回复(0)