response.sendRedirect not working

2020-02-14 03:31发布

问题:

The method response.sendRedirect() is not working in my program.

The code go through and sucessfully print out.println("wrong user");, but the redirect to the google paged doesn't work.

String id="java";

try 
{
    query = "select Id from Users where Id= ?";
    ps  =Database.getConnection().prepareStatement(query);
    ps.setString(1, id);
    rs  =   ps.executeQuery();

    if(rs.next())
    {
        out.println(rs.getString(1));
    }
    else 
    {
        out.println("wrong user");
        response.sendRedirect("www.google.com");
    }
    rs.close();
}
catch(Exception e)
{
    //e.printStackTrace();
    System.out.print(e);
}   

Any answers?

回答1:

You should return after redirecting.

response.sendRedirect("http://www.google.com");
return;

It does not return automatically after calling sendRedirect().



回答2:

HttpServletResponse.sendRedirect() works like this:

  • if the URL is absolute http://www.google.com , it redirects to http://www.google.com.
  • If the URL is not absolute , it redirects relative to the current URL. If the URL starts with / it redirects relative to the context root, Else it redirects to the current url

Based on above rules in your case it redirects to http://currenturl/www.google.com.

Instead modify your code like this

response.sendRedirect("http://www.google.com");
return;


回答3:

Try this

<% response.sendRedirect("http://www.google.com/"); %>


回答4:

Try providing the protocol.

response.sendRedirect("http://www.google.com");
return;