在JSP页面中获取用户的登录名

时间:2014-08-09 19:49:04

标签: java jsp

我使用Struts处理J2EE应用程序,我希望在JSP页面中获取用户的登录信息。 我的UserDAO中连接的方法是:

 public String Connect(String login,String password) {

    List<Long> results= null;
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    StringBuffer queryString = new StringBuffer();
    queryString.append("Select id from Utilisateur user ")
      .append("where user.login= :logi and user.password= :passwor ");
    try {
        Query query = session.createQuery(queryString.toString());
        query.setString("logi",login);
        query.setString("passwor",CryptUtil.md5(password));
        results =query.list();
    } catch (HibernateException e) {
        e.printStackTrace();
        session.getTransaction().rollback();
    }
     if(results.size() != 0) {
         long id=(Long) results.get(0);
         user = (Utilisateur) session.get(Utilisateur.class, id);
         session.getTransaction().commit();
        if (user != null){
             statut= user.getStatut();
             id_us= user.getIdutilisateur();
         }else{
             statut= null;
             id_us= null;
         }
     }
     return statut;
}

现在我想在JSP页面中获取此登录名.jsp任何帮助!!!

我的班级USER.java是:

 public class Utilisateur {

private Long idutilisateur;

private String login;
private String password;
private String statut;

public Long getIdutilisateur() {
    return idutilisateur;
}
public void setIdutilisateur(Long idutilisateur) {
    this.idutilisateur = idutilisateur;
} 
public String getStatut() {
    return statut;
}
public void setStatut(String statut) {
    this.statut = statut;
}

public String getLogin() {
    return login;
}
public void setLogin(String login) {
    this.login = login;
}

public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

}

我使用服务方法和操作方法。

 public String Connect(Utilisateur admin) {
     String statut= null;
     Long id = null;
    if (admin != null){
        utilisateurDAO.Connect(admin.getLogin(), admin.getPassword());
        statut= utilisateurDAO.getStatut();
        id= utilisateurDAO.getId_us();
        if(statut != null && !statut.isEmpty()){
            statut= statut.toUpperCase();
            session.put("id", id);
            session.put("login", admin.getLogin());
            session.put("statut", utilisateurDAO.getStatut());
            return statut;
        }else{
            return "input";
        }
    }else{
        return "input";
    }

}

UserAction:

 public String Connect() {
    uService = new UtilisateurService();
    statut = uService.Connect(admin);
    return statut;
}

这个action方法返回我想在JSP页面中获取的statut,我该怎么办?

现在我可以在JSP页面上获得statut,但是如何在这个中使用它就是我所做的:

 <s:property value="#session.principal.statut"/>
 <c:set var="type" value="#session.principal.statut"/>


 <c:choose>
 <c:when test="${type eq 'ADMIN'}">
 <%@ include file="../menu/menu.jsp"%>

 </c:when>
 <c:when test="${type1 eq 'USER'}">
 <%@ include file="../menu/menuother.jsp"%>
 </c:when>
 </c:choose>

2 个答案:

答案 0 :(得分:0)

我不认为在jsp页面中使用访问DAO对象是个好主意,就像将数据访问层与表示层混合一样。例如,您可以找到一些解释here

相反,我建议在servlet中执行login方法。所以,我猜你有一个带登录名和密码字段的html表单。然后在POST方法中,您可以指定最终将执行您的servlet的URL,该URL将包含对方法 connect 的调用。

答案 1 :(得分:0)

在身份验证之后,您可能会将用户放到http会话映射中,因此您不需要进行两次或更多次身份验证就可以进入jsp页面,这只能在用户登录时显示。< / p>

 if(results.size() != 0) {
     long id=(Long) results.get(0);
     user = (Utilisateur) session.get(Utilisateur.class, id);
     session.getTransaction().commit();
    if (user != null){
      ActionContext.getContext().getSession().put("principal", user);

现在在JSP中你可以得到这个用户

<s:property value="#session.principal.statut"/>

您还可以尝试tutorial creating a simple login application