将请求从servlet转发到jsp,在firefox中给出空白页面

时间:2012-05-04 21:42:26

标签: java jsp firefox google-chrome servlets

我有一个Login servlet,它在我的登录页面上从表单(通过POST)获取用户名,密码。 一旦通过身份验证,我就会尝试导航到欢迎页面。但问题是,我的代码在IE8上运行良好,但在Firefox和Chrome上它只显示一个空白页面。 如果我单击查看源,则所有正确的HTML都存在,但实际上没有显示任何内容。 如果我直接从地址栏请求欢迎页面,它将在FF和chrome中正确显示。

在下面发布我的代码,请在必要时告知任何更改/最佳做法......这对我来说都是新的。

登录Servlet

    public class Login extends HttpServlet {
      public static String jsessionid = null;

      public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("GET CALLED");
        doPost(req, resp);
    }

    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws IOException, ServletException {
        System.out.println("POST CALLED");
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        String jsessionid_full;
        String endpoint = "https://sample-url";
        try {
            // Authentication Code...
                    // Authentication Code...

            // resp.sendRedirect(resp.encodeRedirectURL("welcome.jsp"));

            String nextJSP = "welcome.jsp";
            RequestDispatcher dispatcher = getServletContext()
                    .getRequestDispatcher(nextJSP);
            dispatcher.forward(req, resp);

        } catch (Exception e) {
            System.out.println(e);
        }

    }
}

welcome.jsp 页面目前只是一些静态文本

我的 web.xml 是......

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>mobile CRM</display-name>
  <servlet>
    <servlet-name>Login</servlet-name>
    <servlet-class>crmApp.Login</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Login</servlet-name>
    <url-pattern>/Login</url-pattern>
  </servlet-mapping>
    <servlet>
    <servlet-name>AccountQuery</servlet-name>
    <servlet-class>crmApp.AccountQuery</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>AccountQuery</servlet-name>
    <url-pattern>/AccountQuery</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

我的身份验证程序运行正常...它只显示在FF和Chrome中遇到问题的欢迎页面。

执行后,地址栏中的URL属于Login servlet,即 / Login

任何回复都将不胜感激。 感谢

3 个答案:

答案 0 :(得分:0)

我不知道为什么你会在不同的浏览器中看到不同的行为,因为它是webapp的内部,但尝试重定向用户而不是转发;这将导致地址栏中的URL也发生变化。

这是关于这个主题的一些good info

答案 1 :(得分:0)

看一下回来的http标题。有一些很好的ff插件可以显示这些插件,例如Live http header

将从您的登录转发请求中重新调整的标头与直接欢迎页面请求的标头进行比较。

答案 2 :(得分:0)

抱歉......问题显然出在我的一个样式表中 在这里使用jQuery和jQuerymobile ...浏览器问题!