初识 JSP---(servlet / ServletConfig接口 / ServletContext接口)
servlet简介
Java Servlet是和平台无关的服务器端的组件,它运行在servlet容器中。Servlet容器负责servlet和客户的通信以及调用servlet的方法,servlet和客户的通信采用的是“请求/响应”的模式。
servlet可完成如下功能:
1.创建并返回客户请求的动态HTML页面
2.创建可嵌入现有HTML页面的部分HTML页面(HTML片段)
3.去其他服务器资源交互(如数据库或基于java的应用程序)进行通信
Servlet介绍
–Java Servlet(server applet)
–Java Servlet继承结构
Servlet接口(javax.servlet.Servlet)
GenericServlet(javax.servlet.GenericServlet)
HttpServlet(javax.servlet.http.HttpServlet)
创建一个Servlet
–继承HttpServlet
–重写service(doGet、doPost)方法
–在web.xml中配置Servlet
–部署和执行
Servlet的API
Servlet接口(javax.servlet)
说明:javax.servlet的基础接口,定义了Servlet必须实现的方法。
GenericServlet类(javax.servlet)
说明:实现Servlet的接口,属于通用的,不依赖与HTTP协议的servlet(实际应用不算多)
HttpServlet类(javax.servlet.http)
说明:继承GenericServlet类,是在其基础上扩展了HTTP协议的servlet
Servlet生命周期
1.加载和实例化:(构造方法)只有第一次请求servlet时。创建servlet的实例
2.初始化:(init方法)只被调用一次,在创建好实例后立即调用初始化方法
3.服务的方法:每次请求都会调用service的方法,实际用于响应请求的
4.销毁方法:只调用一次,在当service所在的web应用项目被卸载前调用,用于释放资源
在什么时候创建,加载,初始化?
<load-on-startup>0</load-on-startup>
大于0时,tomcat启动时就被加载了,小于0时,访问时才被加载,默认的是小于0
Servlet容器响应客户请求的过程
第一步:servlet引擎检查是否已经装载并创建了该servlet的实例对象,如果是则直接执行第四步,否则执行第二步
第二步:装载并创建servlet的实例对象,调用该servlet的构造器
第三步:调用servlet实例对象的init的方法
第四步:创建一个用于封装请求ServletRequest对象和一个代表响应的消息的ServletResponse对象,然后调用Servlet的service方法并请求和响应对象作为参数传递进去
第五步:web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destory的方法
ServletConfig接口的方法:
getInitParameter()方法:通过名字获取值
getInitParameterNames()方法:获取所有的名字,返回的是枚举类型,可以迭代
例:
结果:
getServletName方法:获取servlet的名称
例:
结果:
getServletContext方法:获取ServletContext的接口的初始化参数
ServletContext对象:
Servlet引擎为每个web应用程序都创建了一个对应的ServletContext对象,ServletContext对象包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象引用。
由于一个web应用程序中的所有的Servlet都共享一个ServletContext对象,所以ServletContext对象都被称之为Application对象(web应用对象)
ServletContext接口的功能:
1.获取web应用程序的上下文参数
(1)配置web.xml,不需要配置在<servlet></servlet>标签中,使用<context-param></context-param>标签
例:
(2)通过ServletConfig对象获取ServletContext对象
例:
(3)通过servletContext按照名字获取值(servletContext.getInitParameter)
例:
结果:
(4)通过servletContext获取所有的名字(servletContext.getInitParameterNames)
例:
结果:
2.记录日志
3.Application域范围的属性(application作用域)
4.访问资源文件
获取当前web应用的某一个文件对应的输入流
结果:
5.获取虚拟路径所映射的本地路径
方法:servletContext.getRealPath("/Test");
例子:
结果:
6.web应用程序对象之间的访问
7.ServletContext的其他方法
获得当前名称:servletContext.getContextPath();-
例子:
结果:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
初识 JSP---(HTTP协议 / 创建Web项目)
HTTP协议 HTTP协议用在网络上,传输超文本文件,传输方式为URL地址,连接方式为短连接 短连接 即客户端发送请求,服务器响应,响应完毕后链接断开,浏览器解析响应,再展示给用户 请求:Request 响应:Response HTTP协议无状态协议: 对事务没有记忆的能力,缺少状态,意味着如果后续处理需要前面的信息。 解决HTTP协议无状态协议: 1.使用cookie 2.使用session保存会话 HTTP状态码(是用以表示网页服务器HTTP响应状态的3位数字代码) 消息(1xx):代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束(HTTP1.0不支持) 成功(2xx):代表请求已成功被服务器接收,理解,并接受(200请求已成功) 重定向(3xx):代表需要客户端采取进一步的操作才能完成请求。通常,这些状态代码用来重定向,后续请求地址(重定向目标)在本次响应的location域中指明 请求错误(4xx):客户端看起来可能发生了错误,妨碍了服务器的处理(404)请求的资源不存在 服务器错误(5xx):服务器在处理请求的过程中错误或者...
- 下一篇
java序列化
# 背景 java对象是在jvm中,如果jvm销毁,那么对象都不存在了。如果想继续使用java对象的话,需要用到序列化,将java中的对象转化为字节序列,用于存储和运输; 那么可以将DB理解为一种序列化,将java对象序列化后存储在DB中,将java对象保存在文本中也是一种序列化 # 细节 需要被序列化的类,需要实现Serializable接口 虽然Serializable接口是空的,没有任何方法,但也要实现,起到标识的作用 同一字节流中的引用是得到保存的 User user = new User("jwen"); Order o1 = new Order(user, "o1"); Order o2 = new Order(user, "o2"); 将这两个对象o1和o2序列化保存在同一文本中(同一输出流),会发现两个对象的o1.user == o2.user 但将两个对象分别保存在不同文件中,file1和file2的话,引用是不一样的 o1.user != o2.user 反序列化没有调用构造函数 public class User implements Serializabl...
相关文章
文章评论
共有0条评论来说两句吧...