用Hibernate与Struts实现简单的项目的登录与注册

-首先在由于自己是新手,现在也是刚刚接触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;      
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值