日期:2014-05-16  浏览次数:20407 次

jsp笔记
  1. ? Servlet的生命周期:

?

??? Servlet部署在容器中,其生命周期由容器来管理,可以概括为一下5个阶段

1.加载:当web客户端请求Servlet服务或web服务器启动时,容器环境加载一个Servlet类。

2.实例化:容器环境根据客户请求创建一个Servlet对象实例。

3.初始化:容器环境调用Servlet的init()方法进行初始化,该方法以一个ServletConfig类型的应用作为参数,该参数可让Servlet从部署描述文件web.xml中读取一些“键对值”形式的参数值,以初始化这些数据。Servlet初始化时也可以从数据库中读取初始化数据,建立JDBC连接,或者创建其他有价值的资源信息引用。

4.服务:容器环境利用HttpServletRequset和HttpServletResponse对象,封装从web客户端接受到的HTTP请求和Servlet生成的响应,将这两个对象以参数的形式传给service()方法。

5.销毁:当web服务器或容器关闭时,会自动调用servlet的destroy()方法关闭所有打开的资源,并进行一些关闭前的处理

??? ?? Servlet生命周期整个过程:

?? 1:不存在的Servlet实例——2:容器装载Servelt——3:创建Servlet实例——4:初始化Servlet调用init()方法——

5:调用service()方法对应Servlet的service()方法——6:结束Servlet调用destory()方法

?

?

?应用Servlet API

?

Servlet API中定义了一整套的借口和类:

??? javax.servlet?—— [接口?????类]

????????????? 接口:{ServletConfig、ServletContext、ServletResponse、ServletRequset、Servlet}

?

?????????????? 类:{ServletOutputStream、ServletInputStream、GenericServlet}?

?

使用Servlet API的原则

  1. 重写doGet()方法来处理Get请求
  2. 重写doPost()方法来处理post请求
  3. 如果需要在Servlet实例化中进行初始化工作,可以重写init()方法
  4. 如果需要在Servlet被释放时进行资源清理工作,可以重写destort()方法???

HttpServletRequest接口

??? HttpServletRequest接口代表客户请求。容器在调用Servlet的doGet()和doPost()方法时,会创建一个HttpServletRequest接口的实例,该实例作为参数传给doGet()或doPost()方法

?

???? HttpServletRequest所提供的方法如下:????

  1. publick String getParameter(String name)?????????????????????? ?获取指定名称的参数值
  2. public String[] getParamnterValues(String name)????????????获取指定名称参数的所有值数组。它使用与一个参数名对应多个值的情况,如页面表单中的复选框。
  3. public java.util.Enumeration getParameterNames()?????????返回一个包含请求信息的所有参数名的Enumeration对象。通过编辑Enumeration对象,可以获取请求中所有的参数
  4. public java.util.Map getParameterMap()????????????????????????? 返回所有参数的一个Map对象。其中key代表参数名,value代表参数值。

HttpServletResponse接口:

??? HttpServletResponse接口代表向客户端发送的响应。容器在调用Servlet的doGet()和doPost()方法时,同样会创建一个HttpServletResponse接口的实例,作为参数传给doGet()或doPost()方法。

???

??? HttpServletResponse接口提供的方法:

  1. public?void addCookie(Cookie arg0)??????????????????? 在响应中加入cookie对象
  2. addHeader(String arg0,String arg1)??????????????????? 加入对应的名称的字符串头信息
  3. public String encodeURL(String arg0)??????????????????对特定的URL进行加密
  4. public sendRedirect(String arg0)?????????????????????????传递临时响应,响应的地址由location指定

使用request对象属性传递数据

??? 在Servlet类的请求处理方法中,可以获取客户端提交的参数数据,也可以棉鞋逻辑代码,对数据请求进行处理并作出响应。

???

??? 业务需求:

  1. 将处理的结果传给其他页面,如jsp页面或其他的Servlet。
  2. 一个Servlet类无法处理独立处理客户请求,处理部分数据后需要传给另一个Servlet继续处理
  3. <