0

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

在下面发布我的代码,请根据需要提供任何更改/最佳实践......这对我来说是全新的。

登录小服务程序

    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 是登录 servlet 即/Login

任何回应将不胜感激。谢谢

4

3 回答 3

0

看看返回的 http 标头。有一些很好的 ff 插件可以显示这些,例如 Live http headers

比较从您的登录转发请求返回的标头与您的直接欢迎页面请求的标头。

于 2012-05-04T22:25:45.117 回答
0

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

于 2012-05-05T08:56:51.967 回答
0

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

这里有一些关于这个主题的好信息。

于 2012-05-04T22:13:02.680 回答