• 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 跳转有客户端跳转和服务器跳转两种。其中,客户端跳转运用 sendRedirect() 方法实现,服务器跳转运用 RequestDispatcher 接口实现,本文将介绍客户端跳转方法的实现以及使用。

    在 Servlet 中要想进行客户端跳转,需要使用 HttpServletResponse 接口的 sendRedirect() 方法,但需要注意的是,这种跳转只能传递 session 和 application 范围的属性,无法传送 request 范围的属性。

    【例1】使用客户端跳转 ClientRedirect.java。

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

    1. package ch05;
    2. import java.io.IOException;
    3. import java.io.PrintWriter;
    4. import javax.servlet.ServletException;
    5. import javax.servlet.http.HttpServlet;
    6. import javax.servlet.http.HttpServletRequest;
    7. import javax.servlet.http.HttpServletResponse;
    8. public class ClientRedirect extends HttpServlet
    9. {
    10. /**
    11. *客户端跳转
    12. */
    13. public void goGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
    14. {
    15. request.getSession().setAttribute("name","白辰");
    16. request.setAttribute("info","JavaServlet");
    17. response.sendRedirect("info.jsp");
    18. }
    19. public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
    20. {
    21. this.doGet(request,response); //调用doGet的方法
    22. }
    23. }

    然后配置 web.xml 文件如下:

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

    info.jsp 代码如下:

    1. <%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
    2. <html>
    3. <head>
    4. <title>
    5. Serlet客户端跳转
    6. </title></head>
    7. <body>
    8. <% request.setCharacterEncoding("utf-8");%>
    9. <h2>session 属性:<%=session.getAttribute("name")%></h2>
    10. <h2>request 属性:<%=request.getAttribute("info")%></h2>
    11. </body>
    12. </html>

    启动服务器后,在浏览器的地址栏输入 http://localhost:8080/servlet/ClientRedirect,运行结果如图 1 所示。

    客户端跳转运行结果
    图1 客户端跳转运行结果

    提示:

    由于是客户端跳转,跳转后,浏览器地址栏中变为 http://localhost:8080/ch05/info.jsp。从程序结果可以看到,request 属性的范围无法接收,只能接收 session 属性的范围。