将现有对象传递给JSP

时间:2013-01-28 17:35:10

标签: jsp object servlets

我有问题。在我的应用程序中,我有一个用于身份验证的现有对象(在我的自定义身份验证提供程序类中)。此对象很重要,因为它包含有关连接的信息。验证后,此对象存在。现在我想将此对象传递给JSP页面。我不知道该怎么做。

我尝试为这个类编写doGet()方法,make request.setAttribute("object", object)并在JSP上通过request.getAttribute("object")获取此对象,但它不起作用。我也尝试使用<jsp:useBean>,但它仍然不起作用。我没有任何其他解决方案。

你会帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

好的,所以我在自定义身份验证提供程序中有一个retrieveUser方法,我连接到ldap服务器(ldapConnect类):

@Override
protected UserDetails retrieveUser(String username,
        UsernamePasswordAuthenticationToken authentication)
        throws AuthenticationException {

    log.entry("retrieveUser", authentication.getPrincipal());

    LdapUser userDetail = null;

    UsernamePasswordAuthenticationToken userToken = authentication;
    String userName = userToken.getName();
    userName = userName != null ? userName.toLowerCase() : userName;
    String password = userToken.getCredentials().toString();

    if (password == null || "".equals(password)) {
        log.debug("retrieveUser", "no password provided");
        throw new AuthenticationCredentialsNotFoundException(
                "Invalid login or password");
    }

    // try to connect with ldap and check retrieved username and
    // password
    LdapConnect ldapConnect = new LdapConnect();
    connect = ldapConnect.connection(userName, password);

    if (connect) {
        log.debug("retrieve user", "correct connection with ldap");
        userDetail = new LdapUser();
        setUserDetails(userDetail, ldapConnect.getCtx(), username);
        userDetail.setLdapConnect(ldapConnect);
    }

    if (userDetail == null) {
        throw new UsernameNotFoundException("User not found");
    }

    return userDetail;

}

之后我想访问现有的LdapConnect类(完全是这个类中的一个属性),我从HttpServlet类扩展了我的LdapConnect类,并实现了doGet方法:

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    request.setAttribute("ctx", ctx);
    getServletContext().getRequestDispatcher("/ldap_saved.jsp").forward(
            request, response);
}

最后我尝试从我的jsp文件中获取LdapClass的ctx属性:

    <%DirContext ctx = (DirContext) request.getAttribute("ctx");%>
<%=ctx.toString();%>

但是这样我就没有得到现有的ctx对象。