我有一个 JSF/IceFaces3 应用程序正在运行。通过 SSO 登录后,此应用程序应在 Intranet 环境中运行。老板让我给他提供一个他可以调用的链接,例如:
http://companieserver/FancyApplcation/indexsso?name=[用户名]&psw=[用户密码]
作为一个新手,我创建了一个 servlet 并在 web.xml 中提到了它
<servlet>
<description>SSO Login calling with given Parameters Managed
AuthenticationService</description>
<display-name>SsoLogin</display-name>
<servlet-name>SsoLogin</servlet-name>
<servlet-class>de.bws.bewerberverwaltung.security.SsoLogin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SsoLogin</servlet-name>
<url-pattern>/indexsso</url-pattern>
</servlet-mapping>
....
我想从这个 SsoLogin Servlet 重定向到 JSF/IceFaces3 应用程序。这是我的方法:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
FacesContext facesContext = getFacesContext(request, response);
LoginBean loginBean = (LoginBean)getManagedBean("loginBean", facesContext);
String login = request.getParameter("name");
String psw = request.getParameter("psw");
loginBean.setLogin(login);
loginBean.setPassword(psw);
String value = loginBean.login();
System.out.println("SsoLogin result: " + value);
request.getRequestDispatcher(value).forward(request, response);
}
来自 loginBean 的值是我项目中的 customeroverview.xhtml 文件。
行为是服务器向我显示了一个白页。当我查看页面的源代码时,它看起来应该是。我还尝试发送具有相同结果的重定向。
也许这不是从 servlet 直接跳转到 JSF 应用程序的最佳方式,但显然它有效。
有什么提示可以解决这个问题吗?