← 回到文章列表

Hello Servlet Day05

1、Servlet的生命周期及相关的核心类与接口 1)核心类与接口 a,Servlet接口 init(ServletConfig config):容器 在创建一个servlet对象之后,会立即调用 该方法。容器在调用init方法之前,会先fig对象。也就是说, ServletCo…

1、Servlet的生命周期及相关的核心类与接口
1)核心类与接口
a,Servlet接口
init(ServletConfig config):容器
在创建一个servlet对象之后,会立即调用
该方法。容器在调用init方法之前,会先fig对象。也就是说,
ServletCo
创建一个ServletConnfig对象会作为参数传递给servlet
对象。

service(ServletRequest request,
ServletResponse response):容器收到客户端的
请求之后,会调用该方法来处理请求。
destroy(): 容器在销毁servlet对象之前,会调用
该方法。
b,GenericServlet抽象类(实现了Servlet
接口中的init,destroy方法)
c,HttpServlet抽象类(继承GenericServlet,
实现了service方法)
该service方法会依据请求方式调用doGet
/doPost方法,所以,可以通过override
doGet/doPost方法来实现请求的处理。
d,ServletConfig接口:
//访问servlet的初始化参数,在web.xml文件当中
//使用配置的参数。
String getInitParamter(String paraName);
如何配置servlet初始化参数?
web.xml中,添加

author tarena
e,ServletRequest是HttpServletRequest的父接口。
ServletResponse是HttpServletResponse的父接口。
2)生命周期
servlet容器如何创建servlet对象,然后分配
其资源,调用其方法完成请求处理,最后销
毁servlet对象的整个过程。
第一阶段: 实例化
当请求到达容器时,容器会先检查对应的
servlet对象是否存在,如果不存在,则
创建servlet对象,如果存在,不再创建。
容器在启动的时候,会检查servlet的配置
信息,如果某个servlet配置了
参数,则会先对该servlet进行实例化和初始化。
参数值是一个>=0的整数,越小,优先级越高。
指的是先实例化。
第二阶段: 初始化
容器接下来,会调用servlet对象的init方法。
该方法只会执行一次,用于初始化。
init方法可以override,建议
override init()。
而不是override init(ServletConfig)
第三阶段:就绪
容器调用servlet对象的service方法来处理请求。
第四阶段:销毁
容器在销毁servlet对象之前,会先调用destroy
方法。
2、jsp
(1)jsp是什么?
java server page(java服务器页面技术)
sun公司制订的一种服务器端动态页面技术规范。
因为直接使用servlet开发动态页面过于麻烦,并且,
难以维护(直接使用out.println输出动态页面),所以,
sun制订了一种更好的生成动态页面技术规范,即jsp,
jsp只需要在html文件内部添加一些java代码就可以生成
动态页面,相对于servlet,要简单方便。
(2) 如何写jsp?
step1 写一个以.jsp为后缀的文件。
step2 在文件内部,可以添加如下内容:
a, html(html,css,javascript) : 直接添加即可。
b, java代码:
java代码片断 <% java代码 %> jsp表达式 <%= java表达式%> c, 隐含对象:直接使用
在jsp文件内部,不用声明和创建,就可以
直接使用的对象。因为容器负责隐含对象的
声明和创建过程。
out
request
response
d,指令:通知容器,在将.jsp文件转换成
.java文件时,作一些额外的处理。
page指令
import属性: 导入包
比如 : <%@page import=“java.util.*”%> <%@page import=“java.util.*,java.text.*”%> pageEncoding属性: 告诉容器,.jsp文件保存的
编码。
contentType属性:在.jsp文件对应的servlet类
当中,添加response.setContentType语句。
(3) jsp的执行过程:
step1 将.jsp文件转换成.java文件(其实就是一个
servlet)。
a, html —-> service方法里,使用out.write()输出。
out.println()会将null直接输出,而out.write()
会将null转换成"“输出。
b, <% %> —>service方法里,照搬。
c, <%= %> —>service方法里,使用out.print()
输出。
step2 容器编译该servlet,实例化,初始化,
调用其service方法。

练习:
写一个 employee_list.jsp,会以表格的方式显示
所有的雇员的信息。

3、转发
(1)什么是转发?
一个web组件(servlet/jsp)将未处理完的任务
转交给另外一个web组件继续处理。
常用的使用场合:
servlet将处理得到的数据转发给jsp,由jsp
生成合适的页面。
(2)编程:
step1 将数据绑订到request对象上。
request.setAttribute(String name,
Object obj);
step2 获得一个转发器
//uri:要转发的目的地,比如是一个jsp的地址
RequestDispatcher rd =
request.getRequestDispatcher(String uri);
step3 转发
rd.forward(request,response);
在转发的目的地,可以使用
//如果name对应的对象不存在,返回null。
Object request.getAttribute(String name);
request.removeAttribute(String name);
(3)转发编程需要注意的问题
转发之前,如果response中缓存有任何的数据,
会清空。如果转发之前,调用了out.flush(),
out.close(),则会出错。
(4) 转发的特点:
a,转发时,浏览器地址栏的地址不会变。
b,转发的目的地只能是同一个应用内部的各个
组件。

课堂内容

在这里找找

输入关键词,找一篇过去的记录。