转自:http://www.cnblogs.com/xujian2014/p/4536168.html

一、摘要

  本文主要简单介绍开发Servlet需要用到的接口和类。

二、ServletRequest和ServletResponse接口

  当客户请求到来时,由容器创建一个ServletRequest对象,封装请求数据,同时创建一个ServletResponse对象,封装响应数据。这两个对象作为参数传递给service方法。

  这两个接口都用很多方法,这里就不逐一介绍。

  HttpServletRequest和HttpServletResponse分别继承自ServletRequest和ServletResponse接口。

三、ServletConfig接口

  Servlet容器使用ServletConfig对象在Servlet初始化期间向它传递配置信息,一个Servlet对象只有一个|ServletConfig对象。该接口中定义下述四个方法:

      //返回名字为name的初始化参数的值
String getInitParameter(String name);
//返回所有初始化参数的的名字的枚举集合
Enumeration getInitParameterNames() ;
//返回Servlet上下文对象的引用
ServletContext getServletContext();
//返回Servlet实例的名字
String getServletName() ;

  该几个方法的简单例子代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//返回名字为name的初始化参数的值
System.out.println(getServletConfig().getInitParameter("name"));
//返回所有初始化参数的的名字的枚举集合
Enumeration<String> paraNames=this.getServletConfig().getInitParameterNames();
for(Enumeration e=paraNames;e.hasMoreElements();)
{
String name=e.nextElement().toString();
String value=getServletConfig().getInitParameter(name);
System.out.println(name+"-----"+value);
}
//返回Servlet上下文对象的引用
System.out.println(getServletConfig().getServletContext().getContextPath());
//返回Servlet实例的名字
System.out.println(getServletConfig().getServletName()) ;
}

  输出结果为:

  

四、ServletContext接口

  ServletContext接口用来表示上下文,该接口定义一组方法,Servlet可以使用这些方法与它的Servlet容器进行通信。ServletContext对象是Web服务器中一个已知路径的根。我们可以通过ServletConfig对象的getServletContext方法来得到ServletContext对象,也可以调用GenericServlet类的getServletContext方法得到ServletContext对象。

  一个Web应用程序只有一个ServletContext对象,该对象可以被Web应用程序的所有Servlet所访问,因此通常使用Servlet对象保存一些需要在Web应用程序中共享的信息。eg,统计页面访问量的小例子,代码如下:

public class ContextDemo extends HttpServlet
{
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
ServletContext context=getServletContext();
Integer count=null;
synchronized(context)
{
count=(Integer)context.getAttribute("counter");
if(count==null)
{
count=new Integer(1);
}
else
{
count=new Integer(count.intValue()+1);
}
context.setAttribute("counter", count);
}
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
out.println("<html><head><title>页面访问统计</title></head><body>");
out.println("该页面已被访问了"+"<b>"+count+"</b>"+"次");
out.println("</body></html>");
out.close();
}

五、RequestDispatcher接口

  RequestDispatcher对象用于封装一个由路径所标识的服务器资源,利用RequestDispatcher对象可以将请求转发给其他的Servlet或者JSP页面。

  • 获取RequestDispatcher对象

  两种方法可以获取该对象,一种是从ServletRequest接口的getRequestDispatcher方法获取,另一种是从ServletContext接口的getRequestDispatcher获取。两者的区别是参数的资源的路径名,前者不但可以是相对于上下文根的路径名,而且可以是相对于当前Servlet的路径,而后者只能是是相对于上下文根的路径名。

  • 请求转发方法

  在RequestDispatcher接口中定义了两种方法:

  forward(req,resp)和include(req,resp),两者的区别是前者将请求转发给其他的Servlet,将由被调用的Servlet负责对请求作出相应,而原先Servlet的执行则终止。而后者将调用的Servlet对请求作出的响应并入原先的响应对象中,原先的Servlet还可以继续输出响应信息。示例代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//该方法用于在响应中包含其他资源的内容并从ServletContext接口得到RequestDispatcher对象
/*RequestDispatcher rd=this.getServletContext().getRequestDispatcher("/hello.html");
rd.include(request, response);*/ //该方法用于将请求从一个Servlet传递给服务器上另外的Servlet、JSP页面或者是HTML文件。
/*RequestDispatcher rd=this.getServletContext().getRequestDispatcher("/hello.html");
rd.forward(request, response);*/ //从ServletRequest接口得到RequestDispatcher对象
RequestDispatcher rd=request.getRequestDispatcher("hello.html");
rd.include(request, response);
}

  转自:http://www.cnblogs.com/xujian2014/p/4536168.html

Servlet基本用法二接口和类的更多相关文章

  1. Java Servlet DAO实践(二)

    Java Servlet DAO实践(二) DAO连接类 package com.seller.servlets.dao; import java.sql.*; public class DataBa ...

  2. Servlet基本用法(二)接口和类

    一.摘要 本文主要简单介绍开发Servlet需要用到的接口和类. 二.ServletRequest和ServletResponse接口 当客户请求到来时,由容器创建一个ServletRequest对象 ...

  3. javaWeb学习总结(3)- Servlet总结(servlet的主要接口、类)

    Servlet总结01——servlet的主要接口.类 (一)servlet类 Servlet主要类.接口的结构如下图所示: 要编写一个Servlet需要实现javax.servlet.Servlet ...

  4. Servlet常用的接口和类

    使用接口和类的作用:Servlet也是依靠继承父类和实现接口来实现的.使用Servlet必须要引入两个包:javax.servlet和javax.servlet.http.所有的Servlet应用都是 ...

  5. Servlet API遍程常用接口和类

    本文主要总结Servlet  API遍程常用接口和类 Servlet API http://tomcat.apache.org/tomcat-5.5-doc/servletapi/index.html ...

  6. Servlet基础之一:Servlet基本接口与类

    1.概述 Servlet API中共有5个包,约113个接口和类: javax.servlet javax.servlet.http javax.servlet.jsp javax.servlet.a ...

  7. JavaWeb学习——Servlet相关的接口和类

    JavaWeb学习——Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...

  8. Spring常用的接口和类(二)

    七.BeanPostProcessor接口 当需要对受管bean进行预处理时,可以新建一个实现BeanPostProcessor接口的类,并将该类配置到Spring容器中. 实现BeanPostPro ...

  9. Servlet的接口实现类

    Sun公司提供了两个默认实现类 GenericServlet和HttpServlet HttpServlet指能够处理Http请求的Servlet,它在原有的Servlet基础上添加了与HTTp相关的 ...

随机推荐

  1. xen 不同后端存储方案的性能对比

    概述 在xen平台下,一般使用文件来模拟一个磁盘.在xen中使用文件来模拟磁盘有3种方式, blkback 直接操作 blktap2 直接将文件映射为一个裸块设备,这样vm可以直接用phy的方式进行文 ...

  2. 为什么32位系统最大支持4G内存??我自己悟出来了 终于 。。。。。

    今天突然开窍了,想通了..... 以下是我的抽象想法: 32位系统 这个 多少位 指的是 硬件的 一次性发送过来的位数,一个字节 等于8位,内存的一个存储单元就是一个字节,即8位. 也可以这样来想这个 ...

  3. Spring集成JavaMail并利用线程池发送邮件

    我们系统存在大量发送邮件的需求,项目使用的是Spring框架而JavaMail也能很好的跟Spring进行集成,由于发送邮件最好还是使用异步进行发送,所以这里就采用线程池+JavaMail进行邮件发送 ...

  4. PE文件RV转FOA及FOA转RVA

    /************************************************************************/ /* 功能:虚拟内存相对地址和文件偏移的转换 参数 ...

  5. HDU 2553 N皇后问题(回溯 + 剪枝)

    本文链接:http://i.cnblogs.com/EditPosts.aspx?postid=5398797 题意: 在N*N(N <= 10)的方格棋盘放置了N个皇后,使得它们不相互攻击(即 ...

  6. poj2728(最小比率生成树)

    poj2728 题意 给出 n 个点的坐标和它的高度,求一颗生成树使得树上所连边的两点高度差之和除以距离之和最小. 分析 01分数规划+最小生成树. 对于所有的边,在求最小生成树过程中有选或不选的问题 ...

  7. oracle中执行execute的时候报异常ORA-01031的解决办法

    在做实验的时候,编写关于"在存储过程中使用动态sql,建立一个统计表,并把统计结果,插入这个表中"的PL/sql语句在执行时出现权限不足的问题. 上网查询很多,看到了下面这篇博文( ...

  8. Bluetooth篇 开发实例之八 匹配

    自己写的App匹配蓝牙设备,不需要通过系统设置去连接. 匹配和通信是两回事. 用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在SDK ...

  9. 数据块dump详解及大小表扫描过程

    http://blog.csdn.net/u013820054/article/details/40378233 http://blog.csdn.net/u013820054/article/cat ...

  10. c++中resize这个函数怎么用

    c++中序列式容器的一个共性函数, vv.resize(int n,element)表示调整容器vv的大小为n,扩容后的每个元素的值为element,默认为0 resize()会改变容器的容量和当前元 ...