【问题标题】:How can I redirect to another page in Servlet using response.sendRedirect() method?如何使用 response.sendRedirect() 方法重定向到 Servlet 中的另一个页面?
【发布时间】:2016-04-10 07:49:29
【问题描述】:
**loginServlet.java**

package com.anil.apps;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class LoginServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out=response.getWriter();

        String uid=request.getParameter("userid");
        String password=request.getParameter("pwd");

        if(uid.equals("Anil")&&password.equals("missinlx")){
            //out.println("welcome "+uid);
            response.sendRedirect("welcomeUser?userid="+uid);
        }
        else{
            out.println("invalid username or password");
        }
    }

}






**WelcomeUserServlet.java**

package com.anil.apps;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class WelcomeUserServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out=response.getWriter();

        out.println("<html><body><h1>Welcome " +uid+ "</h1></body></html>");
    }

}

我的代码有什么问题??我想使用 response.sendRedirect() 方法将页面重定向到 welcomeUser.java 页面。 由于我是 servlet 的新手,请帮助我摆脱它。请告诉我 Servlets 中页面重定向的整个格式。

【问题讨论】:

  • 什么不起作用?你对sendRedirect 的使用对我来说看起来没问题。
  • 我不知道,但我的 IDE 显示错误。
  • 像语法错误?它说什么?
  • out.println("

    欢迎 " +uid+ "

    ");它在这一行显示错误
  • 它说创建一个局部变量 uid

标签: redirect servlets


【解决方案1】:

GET 参数不会自动转入变量。您需要将此添加到WelcomeUserServletdoGet 方法的顶部:

String uid = request.getParameter("userId");

让这个类看起来像这样:

public class WelcomeUserServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String uid = request.getParameter("userId");
        PrintWriter out=response.getWriter();

        out.println("<html><body><h1>Welcome " +uid+ "</h1></body></html>");
    }

}

【讨论】:

  • 但是我想在 WelcomeUserServlet 中使用 loginServlet.java 的 uid。
  • 是的,但变量不会在请求之间共享。当您说 ?userid="+uid 时,您已经将它作为参数传递了,您需要在其他 servlet 中获取它。
【解决方案2】:

您为 sendRedirect 方法使用了错误的参数

你应该使用像

这样的完整路径
response.sendRedirect("some/path/here/to/"+welcomeUser?userid="+uid)

或者更好

response.sendRedirect(response.encodeURL(response.getContextPath()+"welcomeUser?userid="+uid))

或者使用一个知道你的项目结构并且不需要完整路径的请求调度器

request.getRequestDispatcher("welcomeUser?userid="+uid).forward(request,response)

【讨论】:

    猜你喜欢
    • 2015-01-17
    • 1970-01-01
    • 2015-03-12
    • 2011-02-22
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多