• JSP教程:1天玩转JSP网站开发技术
  • JSP是什么?
  • JSP的特点与工作流程
  • JSP与ASP、PHP的比较
  • JSP页面的组成及其元素
  • JSP开发环境搭建(Tomcat的安装和配置)
  • 第一个JSP程序
  • JSP注释(多种注释详解)
  • JSP声明:变量、方法和类的声明
  • JSP中嵌入Java代码
  • JSP表达式
  • JSP开发模式(四种模式)
  • JSP常见错误以及解决方案
  • JSP指令详解(三大指令)
  • JSP page指令
  • JSP include指令
  • JSP指令应用实例
  • JSP动作
  • JSP include动作
  • JSP param动作
  • JSP forward动作
  • JSP plugin动作
  • JSP useBean动作
  • JSP setProperty动作
  • JSP getProperty动作
  • JSP application 对象
  • JSP out对象:向客户端输出数据
  • JSP request对象:获取客户端的请求信息
  • JSP response对象:响应客户端的请求并向客户端输出信息
  • JSP session对象
  • JSP pageContext对象
  • JSP page对象
  • JSP config对象
  • JSP获取并显示字符串长度
  • 什么是JavaBean?
  • JavaBean工具
  • JavaBean规范
  • JavaBean的属性(Simple、Indexed、Bound、Constrained)
  • JavaBean的Scope属性
  • JavaBean事件
  • JavaBean实现用户登录界面
  • Servlet是什么?
  • Servlet的生命周期
  • Servlet的类和方法
  • Servlet客户端跳转
  • EL是什么?(详解)
  • JSP EL表达式的基本语法及运算符的优先级(一览表)
  • JSP EL 点(.)运算符和下标([])运算符
  • JSP EL算数运算符
  • JSP EL关系运算符
  • JSP EL逻辑运算符
  • JSP EL条件运算符
  • JSP EL empty空运算符
  • EL表达式中的常量与变量
  • EL表达式的保留字
  • EL表达式的内置对象及其作用域
  • 使用EL表达式访问JavaBean
  • 使用EL表达式访问集合
  • EL表达式内置对象param和paramValues
  • EL表达式内置对象cookie
  • EL表达式内置对象initParam
  • JDBC 的定义及产品组件
  • 建立JDBC连接
  • 利用JDBC发送SQL语句
  • JDBC API ResultSet接口(记录集接口)
  • JDBC RowSet接口
  • JDBC BaseRowSet类和CachedRowSet类
  • 填充CachedRowSet对象记录集(三种方法)
  • File类(在JSP中的使用)详解
  • 使用字节流读/写文件
  • RandomAccessFile类
  • JSP文件上传
  • XML是什么?
  • XML的基本语法
  • JDK 中的 XML API
  • DOM解析XML
  • SAX解析XML
  • DOM4j解析XML
  • 开发 Servlet 相关的程序包主要有两个,即 javax. servlet和j avax.servlet.http。大多数 Servlet 是针对 HTTP 协议的 Web 容器,这样,开发 Servlet 的方法时,会使用 javax.servlet.http.Httpservlet 类。下面介绍 Servlet 开发中经常使用的 API。

    1. Servlet接口

    此接口位于 javax.servlet 包中,定义了 Servlet 的主要方法,声明如表 1 所示。

    方法声明 说明
    public void service(ServletRequest request, ServletResponse response) Servlet 在处理客户端请求时调用此方法
    public void destroy() Servlet 容器移除 Servlet 对象时调用此方法,以释放资源空间
    public ServletConfig getServletConfig() 用于获取 Servlet 对象的配置信 息,返回 ServletConfig 对象
    public String getServletInfo() 返回有关 Servlet 的信息,如作者、版本柄息等

    2. HttpServlet类

    HttpServlet 类是 Servlet 接口的实现类,主要封装了 HTTP 请求的方法,常用的方法声明如表 2 所示。

    方法声明 说明
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 用于处理 GET 类型的 HTTP 请求方法
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 用于处理 POST 类型的 HTTP 请求方法
    protected void doPut(HttpServletRequest req, HttpServletResponse resp) 用于处理 PUT 类型的 HTTP 请求方法

    3. HttpServletRequest接口

    HttpServletRequest 接口位于 javax.servlet.http 包中,用于封装 HTTP 的请求。通过此接口,可以获取客户端传递的 HTTP 请求参数,常用方法的声明及其说明如表 3 所示。

    方法声明 说明
    public String getContextPath() 返回上下文路径,此路径以“/”开始
    public Cookie getCookies() 返回所有 Cookie 对象,返回值类型为 Cookie 数组
    public String getMethod() 返回 HTTP 请求的类型,如 GET 和 POST 等
    public String getQueryString() 返回请求的查询字符串
    public String getRequestURI() 返回主机名到请求参数之间的部分字符串
    public HttpSession getSession() 返回与客户端页面关联的 HttpSession 对象

    4. HttpServletResponse接口

    HttpServletResponse 接口位于 javax.servlet.http 包中,它封装了对 HTTP 请求的响应。

    通过此接口,可以向客户端发送回应,其常用方法声明及说明如表 4 所示。

    方法声明 说明
    public void addCookie(Cookie cookie) 向客户端发送 Cookie 信息
    public void sendError(int sc) 发送一个错误状态码为 sc 的错误响应到客户端
    public void sendError(int sc,String msg) 发送包含错误状态码及错误信息响应到客户端
    public void sendRedirect(String location) 将客户端请求重定向到新的 URL

    HttpServletRequest 接口和 HttpServletResponse 接口中封装了 HTTP 请求,更多的方法读者可以参阅 JavaEE API 文档。

    要开发一个可以处理 HTTP 请求的 Servlet 程序,需要继承 HttpServlet 类,继承 HttpServlet 之后,就可以重写 HttpServlet 类中的方法,然后编写代码实现。

    【例1】创建 Servlet 程序 Welcome.java,程序运行显示 “Welcome Servlet”。

    首先创建一个 Servlet 文件 Welcome.java,编写代码如下:

    1. import javax.servlet.ServletException;
    2. import javax.servlet.http.HttpServlet;
    3. import javax.servlet.http.HttpServletRequest;
    4. import javax.servlet.http.HttpServletResponse;
    5. public class Welcome extends HttpServlet
    6. {
    7. //第一个Servlet
    8. public void goGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
    9. {
    10. PrintWrite out=response.getWrite(); //创建输出流对象,准备输出
    11. out.println("<HTML>");
    12. out.println("<HEAD><TITLE>Welcome Servlet</TITLE></HEAD>");
    13. out.println("<BODY>");
    14. out.print("<h1> Welcome Servlet </h1>");
    15. out.println("</BODY>");
    16. out.println("</HTML>");
    17. out.close();
    18. }
    19. }

    以上代码从 HttpServletResponse 对象中获取一个输出流对象,然后通过输出流对象 out 输出每个 HTML 元素。

    编译后仍无法直接访问,需要在 \WEB-INF\web.xml 文件中进行配置,完成 Servlet 程序的映射,Servlet 才能执行。本例在 web.xml 文件中添加如下代码:

    1. <servlet>
    2. <servlet-name> Welcome</servlet-name >
    3. <servlet-class>ch05.Welcome</servlet-class >
    4. </servlet>
    5. <servlet-mapping>
    6. <servlet-name> Welcome</servlet-name >
    7. <url-pattern>/servlet/Welcome</url-pattern>
    8. </servlet-mapping>

    上面的配置程序表示:通过 /servlet/Welcome 路径可以找到对应的 <servlet> 节点,找到 <servlet -class> 所指定的 Servlet 程序。

    启动服务器后,在浏览器中输入 http://localhost:8080/ch05/5-2/servlet/Welcome,程序运行结果如图 1 所示。

    Welcome程序的运行结果
    图1 Welcome程序的运行结果