使用servlet和“ setHeader”方法无法重定向请求

我是servlet开发的新手,正在阅读一本电子书,发现我可以使用重定向到另一个网页

setHeader("Location", "http://www.google.com")

但这不起作用,因为我将这段代码编写为:

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class ModHelloWorld extends HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException{

// response.addHeader("Location", "http://www.google.com");

response.setHeader("Location", "http://www.google.com");

response.setContentType("text/html");

PrintWriter pw = response.getWriter();

pw.println("<html><head><title>Modified Hello World</title></head><body>");

pw.println("<h1>");

//getInitParameter function reads the contents ot init-param elements.

pw.println(getInitParameter("message"));

pw.println("</h1>");

pw.println("</body></html>");

pw.close();

}

}

我已经使用程序检查了标头,以获取网页的标头,如下所示:

import java.net.*;

import java.io.*;

class getHeaders{

public static void main(String args[]){

URL url = null;

URLConnection urc = null;

try {

url = new URL(args[0]);

urc = url.openConnection();

for(int i=0 ; ; i++) {

String name = urc.getHeaderFieldKey(i);

String value = urc.getHeaderField(i);

if(name == null && value == null)//both null so end of header

break;

else if(name == null){//first line of header{

System.out.println("Server HTTP version, Response code: ");

System.out.println(value);

System.out.println("ENd of first header field");

} else {

System.out.println("name of header is: " + name + " and its value is : " + value);

}

}

} catch(MalformedURLException e){

System.out.println("Malformed URL " + e.getMessage());

} catch(IOException e){

e.printStackTrace();

}

}

}

我得到的输出为:

Server HTTP version, Response code: 

HTTP/1.1 200 OK

ENd of first header field

name of header is: Server and its value is : Apache-Coyote/1.1

name of header is: Location and its value is : http://www.google.com

name of header is: Content-Type and its value is : text/html

name of header is: Content-Length and its value is : 101

name of header is: Date and its value is : Sat, 05 Mar 2011 15:27:29 GMT

但是我没有从浏览器重定向到google的页面。

提前致谢:)

回答:

如您所见,响应仍然是HTTP/1.1 200 OK。要指示重定向,您需要发送回302状态代码:

response.setStatus(HttpServletResponse.SC_FOUND); // SC_FOUND = 302

以上是 使用servlet和“ setHeader”方法无法重定向请求 的全部内容, 来源链接: utcz.com/qa/427120.html

回到顶部