用Hibernate與Struts實現簡單的項目的登入與註冊_struts

來源:互聯網
上載者:User

-首先在由於自己是新手,現在也是剛剛接觸java的三大架構所以可能會出現一些問題希望各位大牛能給我指出,我必虛心的接受。
首先我是用的Hibernate的註解來實現的那麼先搭建Hibernate的註解環境,我是先用反向工程來將實體類和其主設定檔Hibernate.cfg.xml檔案然後將同時產生的hbm.xml檔案移除,在同時在上面的properties中添加current_session_context_class值為thread主要是為後面的session的擷取作準。
然後在實體類中寫配置的屬性例如

@Entity@Table(name="types")public class Types implements java.io.Serializable {    // Fields    @Id    @GeneratedValue(generator="seqs",strategy=GenerationType.SEQUENCE)    @SequenceGenerator(name="seqs",sequenceName="seq_id",allocationSize=1)    private Integer id;    @Column    private String name;    @OneToMany(mappedBy="types")    private Set<House> houses = new HashSet<House>(0);有沒有能直接組建組態註解的方式我不知道,有知道的告訴我一聲謝謝。 - 搭建Struts2的環境 首先在web.xml的的檔案添加過濾器 <filter>  <filter-name>users</filter-name>  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  </filter>  <filter-mapping>  <filter-name>users</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping> - 在src下面編寫主要的struts.xml檔案 - `<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" ><struts><constant name="struts.ui.theme" value="simple"/> <constant name="struts.i18n.encoding" value="utf-8"/>    <package name="default" namespace="/" extends="struts-default">    <default-action-ref name="defaultAction"/>    <action name="defaultAction">    <result>/page/error.jsp</result>    </action>        <action name="user" class="cn.action.UserAction">            <result name="success">/page/manage.jsp</result>            <result name="error">/page/login.jsp</result>            <result name="input">/page/login.jsp</result>        </action>        <action name="users" class="cn.action.UserAction">        <result name="success">/page/success.jsp</result>            <result name="error">/page/register.jsp</result>            <result name="input">/page/register.jsp</result>        </action>    </package></struts> - 這裡struts的環境搭建好這裡要實現其商務邏輯在jsp頁面的action的映射中可以將jsp頁面的資料轉送過去不過ID要一樣在這個類中在實現欄位的get,set方法。在action的編寫中需要繼承ActionSupport(為了實現服務端校正功能)重寫validateLogin的方法可以實現校正功能將錯誤放入到FieldError標籤中

public void validateLogin(){

    if(username.trim().length()==0)    {        this.addFieldError("errorname", "使用者名稱不可為空");    }    if(password.trim().length()==0)    {        this.addFieldError("errorpwd", "密碼不可為空");    }}
 - 實現dao層的資料訪問這裡獲得Session的方法如下

static SessionFactory sf=null;
static {

    AnnotationConfiguration cf = new AnnotationConfiguration().configure();    sf=cf.buildSessionFactory();}public static Session getSession(){    return sf.getCurrentSession();}
> 這裡是登入的資料訪問的代碼由於session的擷取方式所以必須開啟事物。

public Users login(String username,String password) throws Exception
{
Users u=null;
Transaction tx=null;
Session s=null;
try {
s=HibernateUtil.getSession();
tx=s.beginTransaction();
String hql=”from Users where name=? and password=?”;
Query query=s.createQuery(hql);
query.setString(0, username);
query.setString(1,password);
u=(Users)query.uniqueResult();
Map session=ActionContext.getContext().getSession();
session.put(“username”,u.getUsername());
tx.commit();

    } catch (Exception e) {        throw new Exception(e);    }    return u;}

“`

註冊需要注意的是在可以在Action中將其封裝成USER類在資料訪問層
代碼如下當然在Action裡應該實現註冊的校正。
`public Integer register(Users u) throws Exception{

    int result=0;    Session s=HibernateUtil.getSession();    Transaction tx=s.beginTransaction();    try {        result=(Integer)s.save(u);        tx.commit();    } catch (Exception e) {        throw new Exception(e);    }    return result;      }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.