2024年4月12日发(作者:)

JSP 重定向sendRedirect方法

重定向的含义可以下图5-13说明:

服务器

请求

浏览器

组件1

重定向响应,包含组件2的地址信息

请求

响应

组件2

图5-13 重定向原理图

浏览器向某组件1发出请求信息,组件1向浏览器发回一个重定向响应信息,

该响应信息不包含具体的数据内容,只是在响应头信息中包含需要重定向到的地址

信息,该地址可以是任何有效的URL。浏览器收到该重定向响应后会自动的向响应

信息头中所指示的地址发出请求。整个重定向的过程涉及两次“请求-响应”。具体

的重定向响应格式如下所示:

HTTP/1.1 302 Moved Temporarily

Server: Apache-Coyote/1.1

Location: 192.168.5.100:8080/tst/jsp/

Content-Length: 0

Date: Mon, 30 Jun 2008 03:52:54 GMT

重定向可以通过Servlet中接口HttpServletResponse的实例化对象的sendRedire

ct(String url)方法来实现,需要注意的是String类型的参数url表示重定向到的地址。

如果表示重定向到本应用内的一个绝对地址时,要从应用名前开始,例如,tst应用

中的某个组件要重定向到本应用内的/jsp/,则重定向的绝对地址应该

是,“/tst/jsp/”这一点和转发中的绝对地址表示不同。

现在创建一个案例,演示重定向的使用。该案例主要计算数字的平方,如果输

入的非数字则提示错误信息。打开记事本,首先创建,其代码如下

所示:

<%@ page contentType="text/html;charset=GB2312" %>

输入一个数求取平方

打开记事本,创建文件,其代码如下所示:

package test;

import t.*;

import .*;

import .*;

public class CheckServlet extends HttpServlet {

private static final String CONTENT_TYPE = "text/html; charset=GBK";

public void init() throws ServletException {}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

tentType(CONTENT_TYPE);

PrintWriter out = ter();

n("");

n("Servlet1");

n("");

String str=ameter("name1");

try{

int num=nt(str);

int num2=num*num;

String number=""+num2;

HttpSession session = sion(true);

ribute("num",number);

direct("");

}

catch(Exception e){direct("");}

n("");

n("");

();

}

public void destroy() {

}}

在该文件中,使用request对象获取从文件传递过来的参数name1,并赋

值给变量str。对str进行整型数值转换,如果提交的信息为数字,则使用session对

象绑定,并将网页控制权转向页面。否则,转向页面。

打开记事本,创建文件,其代码如下所示:

请输入数字

创建文件,其代码如下所示:

输入数的平方为:

<%

String number=(String)ribute("num");

(number);

%>

在上述代码中,主要获取绑定对象值,并输出。

将三个JSP文件保存在C:Tomcat 6.0webappsJSPExample目录下,JavaBean

文件和Servlet文件保存在C:Tomcat 6.0webappsJSPExampleWEB-INFclasses目录

下。依照前面的方法编译这些文件。最后在配置Servlet文件。

一切完成后,就可以运行该文件了。打开IE浏览器,在地址栏中输入lo

calhost:8080/JSPExample/,单击【转到】,会显示图5-14所示窗口,

在文本域中输入数字会转到页面,并输出结果,如图5-15所示。如果文

本域输入的为非数字,则转向页面,如图5-16所示。

图5-14 求取平方

图5-15 显示平方 图5-16 输入非数字