如何使用Struts2和Hibernate删除和修改数据

问题描述:

我创建了一个jsp页面,通过hibernate框架和struts2显示我的mysql数据库中包含的医生列表(medecin,法语)。如何使用Struts2和Hibernate删除和修改数据

我有一个删除按钮supprimer(法语),删除一个医生和一个按钮,modifier,编辑医生的数据。

编辑按钮,modifier,将采取选定的医生的所有数据(id,nom,prenom等..),并把它放在一个表格中,我可以更新它。

ListMed行动给我这个。 enter image description here

ListedesMedecins.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib prefix="sb" uri="/struts-bootstrap-tags"%> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Listes des Medecins</title> 
</head> 
<body> 
    <jsp:include page="accueil.jsp"/> 
    <h1>Listes des Medecins</h1> 
     <s:if test="Medecin.size() > 0"> 
<table border="1px" cellpadding="8px"> 
<tr> 
    <th>id</th> 
    <th>Nom</th> 
    <th>Prenom</th> 
      <th>contact</th> 
    <th>specialite</th> 

</tr> 
<s:iterator value="Medecin"> 
    <tr> 
     <td><s:property value="idmed" /></td> 
     <td><s:property value="nom" /></td> 
     <td><s:property value="prenom" /></td> 
        <td><s:property value="contact" /></td> 
     <td><s:property value="specialite"/></td> 
        <td><a href="<s:url action="Modmed" namespace="/Modmed"/>"> Modifier </a> </td> 
        <td><a href="<s:url action="Supmed" namespace="/Supmed"/>"> Supprimer </a> </td> 
    </tr> 
</s:iterator> 
</s:if> 
</table> 
</body> 
</html> 

我的课MedecinDAO与所需的方法(选择,更新,删除列表)

public Medecin getMedecin(Integer idMedecin) { 
    log.info("********** Debut getMedecin MedecinDAO **********"); 
    Medecin Medecin = null; 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
    try { 
     Medecin = (Medecin) session.get(Medecin.class, idMedecin); 

     return Medecin; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     log.fatal(e.getMessage()); 
     return null; 
    } finally { 
     session.close(); 
     log.info("********** Fin getMedecin MedecinDAO **********"); 
    } 
} 

public boolean saveMedecin(Medecin Medecin) { 
    log.info("********** Debut saveMedecin MedecinDAO **********"); 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
    Transaction trans = session.beginTransaction(); 
    try { 


     session.save(Medecin); 
     trans.commit(); 
     return true; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     log.fatal(e.getMessage()); 
     trans.rollback(); 
     return false; 
    } finally { 
     session.close(); 
     log.info("********** Fin saveMedecin MedecinDAO **********"); 

    } 
} 

public boolean updateMedecin(Medecin Medecin) { 
    log.info("********** Debut updateMedecin MedecinDAO **********"); 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
    Transaction trans = session.beginTransaction(); 
    try { 
     session.update(Medecin); 
     trans.commit(); 
     return true; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     log.fatal(e.getMessage()); 
     return false; 
    } finally { 
     session.close(); 
     log.info("********** Fin updateMedecin MedecinDAO **********"); 

    } 
} 


public boolean deleteMedecin(Medecin Medecin) { 
    log.info("********** Debut deleteMedecin MedecinDAO **********"); 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
    try { 
     Transaction trans = session.beginTransaction(); 
     session.delete(Medecin); 
     trans.commit(); 
     return true; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     log.fatal(e.getMessage()); 
     return false; 
    } finally { 
     session.close(); 
     log.info("********** Fin deleteMedecin MedecinDAO **********"); 
    } 
} 

    public List<Medecin> allmedecin(){ 

    List<Medecin> medecin = null; 

    Session session = SessionFactoryUtil.getInstance().openSession(); 
    String registr = "from Medecin"; 

    Query query = session.createQuery(registr); 
    medecin=query.list(); 

    return medecin; 
} 

最后我的动作类,formMedAction.java

//getters,setters... 
    //this method is for adding Medecin/doctors 
    public String Ajoutmed() { 


    MedecinDAO medDAO= MedecinDAO.getInstance(); 
    Medecin M = new Medecin(); 

    M.setIdmed(idmed); 
    M.setNom(nom); 
    M.setPrenom(prenom); 
    M.setContact(contact); 
    M.setSpecialite(specialite); 
    medDAO.saveMedecin(M); 

    return SUCCESS; 

    } 
    // return list of all medecin in the table 
    public String Listmed() throws Exception { 

    MedecinDAO medDAO = MedecinDAO.getInstance(); 
    Medecin = medDAO.allmedecin(); 

    return SUCCESS; 
    } 

    // Method I created to delete the data, but I'm not sure if it correct 
    public String Supmed() { 
     MedecinDAO medDAO = MedecinDAO.getInstance(); 
     Medecin M = new Medecin(); 
     M.getIdmed(); 
     M.getNom(); 
     M.getPrenom(); 
     M.getContact(); 
     M.getSpecialite(); 
     medDAO.deleteMedecin(M); 

     return SUCCESS; 


    } 

    public string Modmed() { 
    //dont know what to do for the modifier/edit action , need your help 
    return SUCCESS; 
    } 

需要你的帮助谢谢

编辑!

找到一种方法来删除医生用这个代码MedecinDAO:

public Medecin deleteMedecin(Integer idmed) { 
    log.info("********** Debut deleteMedecin MedecinDAO **********"); 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
     Transaction trans = session.beginTransaction(); 
     Medecin m = (Medecin) session.load(Medecin.class, idmed); 
     session.delete(m); 
     trans.commit(); 
     return m; 
    } 

而且在动作类

public String Supmed() { 
     MedecinDAO medDAO = MedecinDAO.getInstance(); 
     Medecin m = new Medecin(); 
     m = medDAO.deleteMedecin(getIdmed()); 
     return SUCCESS; 

    } 

而且在JSP按钮动作添加此

<td><a href="<s:url action="Supmed" namespace="/pages"><s:param name="idmed" value="%{idmed}"></s:param></s:url>"> Supprimer </a> </td> 

现在我需要知道如何编辑

好吧,我已经找到了解决办法。

如果你想获得选择的对象参数(ID,名称或其他) 你只需要添加这段代码。 (在我的情况下,例如,我需要:idmed,NOM prenom,接触,specialite)

<td><a class="btn btn-warning" href="<s:url action="editmed" namespace="/pages"> <s:param name="idmed" value="%{idmed}" ></s:param><s:param name="nom" value="%{nom}" ></s:param><s:param name="prenom" value="%{prenom}" ></s:param><s:param name="contact" value="%{contact}" ></s:param><s:param name="specialite" value="%{specialite}" ></s:param></s:url>"> Modifier </a> </td> 

您创建一个编辑动作

public String editmed() 
{ 

    return SUCCESS; 
} 

,然后创建一个新的一页,为edit.jsp文件例如,你设置的参数的时值,在struts文本框(选择等)

<s:form action="Modmed" id="Modmed" namespace="/pages" theme="bootstrap" cssClass="bs-example form-horizontal"> 

       <s:textfield label="Identifiant" type="Number" min="1" name="idmed" value="%{idmed}"/> 
       <s:textfield label="Nom" name="nom" value="%{nom}" /> 
       <s:textfield label="Prenom" name="prenom" value="%{prenom}" /> 
       <s:textfield label="Contact" name="contact" value="%{contact}" /> 
       <s:textfield label="Spécialité" name="specialite" value="%{specialite}"/> 

       <div class="col-lg-9 col-lg-offset-3"> 
       <s:submit cssClass="btn btn-primary" value="Sauvegarder"/> 

    </div> 
      </s:form> 

,它应该工作!

编辑应该像您一样的方式删除。首先,你可以得到Medecin对象,你婉更新:

Medecin med = (Medecin) session.get(Medecin.class, idmed); 
med.setNom("Andrea"); //set new values of your columns 

在设置属性要更新:

public Medecin updateMedecin(Medecin updatedObject) { 
    log.info("********** Debut updateMedecin MedecinDAO **********"); 
    Session session = SessionFactoryUtil.getInstance().openSession(); 
    Transaction trans = session.beginTransaction(); 
    session.save(updatedObject); 
    trans.commit(); 
    return updatedObject; 
} 

编辑:如果您需要设置新的选择Medecin对象的值JSP页面,首先你需要一个表格来更新列,第二你要通过idMed形成页,

的编辑操作JSP按钮:

<td><a href="<s:url action="edit" namespace="/edit"><s:param name="idmed" value="%{idmed}"></s:param></s:url>"> Edit</a> </td> 

窗体页:

<s:form action="update"> 
<s:push value="medecin"> 
    <s:hidden name="idmed" /> 
    <s:textfield name="name" label="User Name" value="%{medecin.nom} /> 
    <s:textfield name="surname" label="Sur Name" value="%{medecin.prenom} /> 
    <s:submit /> 
</s:push> 
</s:form> 

最后,你可以从JSP获取ID参数:

request.getParameter("idmed") 
+0

thx但是,如何在新的JSP页面中设置所选Medecin对象的值,在表单中设置idmed,nom等的值。 –

+1

我编辑了我的文章@KaneSamba – fiskra

+0

好的thx,但仍然面临问题。我想我编辑行动出了错误。 public String edit() { String param = ServletActionContext.getRequest()。getParameter(“idmed”); return SUCCESS; },这是我所做的,但我有一个空白页面,我只有标题,窗体不显示。我创建了另一个jsp页面,在和param中设置编辑动作,填写表单,就像你做的那样。但我想唯一剩下的就是现在的Action类,编辑方法。 –