我使用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>
答案 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"/>