Servlet和JSP

servlet生命周期

一、初始化阶段

1)servlet容器装载servlet,在web.xml中<servlet/>标签中启动。

*<load-on-startup>参数若为0或负数则是不默认加载,若为大于0正数则是数字越小优先级越高

2)容器启动后,客户首次向Servlet发起请求则装载

3)Servlet被更新后重新装载。

*当servlet被装载后,servlet容器(tomcat)会创建一个servlet实例并调用servlet的init()方法进行初始化,在整个生命周期init()方法只执行一次。

二、客户响应阶段service()

当收到请求后,servlet调用service()方法进行处理,先对请求进行匹配,选择调用doPost,doGet这些方法,然后处理对应的逻辑层方法,doGet和doPost需要手动实现,定义于HttpServlet方法中,创建请求的ServletRequest对象和ServletRespon对象,并通过后者返回响应信息。

三、终止阶段

web应用或servlet容器终止时,或servlet装载新的servlet实例时,会调用destroy()方法,再释放资源。


servlet容器(tomcat)和servlet

Tomcat是web应用服务器,也是一个servlet/jsp容器,Tomcat作为servlet的容器,负责处理客户端请求并转发给servlet,并将servlet响应传回客户端。(JSP在首次执行时会被编译成servlet类,即JAVA代码)

在web应用中,Tomcat通过scoket接受Http请求,分析客户请求信息,之后Tomcat创建一个HttpRequest和HttpResponse对象,接着调用HttpServlet对象的service()方法,把HttpRequest和HttpResponse对象作为参数传给HttpServlet对象,HttpServlet根据HttpRequest获取请求信息,根据HttpResponse生成相应数据,再由Tomcat返回给web客户端。

 Servlet 包装成 Context 容器中的 StandardWrapper,这里有个疑问,为什么要将 Servlet 包装成 StandardWrapper 而不直接是 Servlet 对象。这里 StandardWrapper 是 Tomcat 容器中的一部分,它具有容器的特征,而 Servlet 为了一个独立的 web 开发标准,不应该强耦合在 Tomcat 中。

除了将 Servlet 包装成 StandardWrapper 并作为子容器添加到 Context 中,其它的所有 web.xml 属性都被解析到 Context 中,所以说 Context 容器才是真正运行 Servlet 的 Servlet 容器。一个 Web 应用对应一个 Context 容器,容器的配置属性由应用的 web.xml 指定,这样我们就能理解 web.xml 到底起到什么作用了。



servletjsp
动态网页动态网页,第一次运行时被编译成servlet
纯Java语言编写,更擅长处理流程和逻辑java+html,更擅长网页制作,生成动态页面更直观
 不容易跟踪和排错,不好维护
 

修改后能立即看见网页效果,热编译


JSP(Java Server Pages)java服务器页面

JSP内置对象

1)request对象

是javax.sevlet.httpServletRequest类对象。代表了客户端的请求信息,主要用于接受通过http协议传送到服务器的数据(请求报头,系统请求方式,请求参数)。request对象的作用域为一次请求。

2)response对象

代表了对客户端的响应,主要是将jsp容器处理过的对象返回给客户端。作用域为在JSP页面内有效。

3)session对象

服务器自动创建的与用户请求相关的对象,直到服务器关闭,信息在整个应用中有效,内部用map保存信息,作用域为一次会话,即直到客户端关闭整个会话。

4)application对象

javax.servlet.servletContext。可将信息保存于服务器中,直到服务器关闭,信息在整个应用中有效,类似于全局变量。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。

5)pageContext对象

javax.serlvet.jsp.pageContext,可取得任何范围内的参数,通过它可以获得jsp页面的out,request,response,session,application,等对象,创建和初始化由容器完成,jsp中可直接使用。

6)page对象

page代表JSP页面本身。只有在jsp页面内才是合法的, page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。

7)out对象

在web内输入信息,并且管理应用程序的缓冲区,用out输出信息时可对数据缓冲区进行操作,即使清除缓冲区数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

8)config对象

javax.servlet.ServletConfig

主要用于获取服务器的配置信息,通过 pageContext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。


9)exception对象

java.lang.Throwable 的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page 的isErrorPage 属性为true 时,该对象才可以使用。常用的方法有getMessage()和printStackTrace()等。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值