Rediriger une demande à l'aide de servlets et de la “setHeader” méthode ne fonctionne pas
Je suis nouveau sur le servlet de développement, et j'ai été la lecture d'un ebook, et a constaté que je peux rediriger vers une autre page web à l'aide
setHeader("Location", "http://www.google.com")
Mais cela ne fonctionne pas, comme je l'ai écrit ce code:
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();
}
}
j'ai vérifié les en-têtes à l'aide de mon programme pour obtenir les en-têtes de la page web qui est la suivante:
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();
}
}
}
Et j'en suis sortie comme:
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
Mais je n'ai pas été redirigé vers la page de google à partir de mon navigateur.
Merci d'avance:)
- Cette queztion est pour le cas de la méthode GET. Pour le cas d'un POST, et pour quelques subtilités sur l'Emplacement de l'en-tête, reportez-vous à la question stackoverflow.com/questions/5043902/...
Vous devez vous connecter pour publier un commentaire.
Comme vous pouvez le voir, la réponse est toujours
HTTP/1.1 200 OK
. Pour indiquer une redirection, vous avez besoin de retourner un code d'état 302:Oh non non! Ce n'est pas la façon dont vous rediriger. Il est beaucoup plus simple:
Aussi, c'est une mauvaise pratique d'écrire du code HTML dans une servlet. Vous devriez envisager de mettre tout ce qui balise dans une page JSP et de l'invocation de la JSP en utilisant:
Sinon, vous pouvez essayer ce qui suit,
Une autre manière de faire si vous voulez rediriger vers l'url de la source après le point spécifié de temps