在用hibernate3+struts2+spring做东西
很简单,数据库里就一张表,就俩元素:姓名和密码
完了实现个登录功能就行了其他都配置好了 就applicationContext.xml不会配置了
hibernate什么的都弄好了 测试过了
就一个class Client
然后一个ClientDAO和ClientDAOImpl然后写了个class LoginAction 这里面有两个数据Client和ClientDAO  方法execute()就是根据Client和ClientDAO比较名字和密码是否都一致  登录成功就跳到success.jsp 否则跳到fail.jsp  这些也都写好了就是这个applicationContext.xml不会配置了 注入什么的搞乱了 而且从网上找,发现里面还有个sessionFactory什么的 不太明白  求高人指点啊~~~下面附上LoginAction的代码:
public class LoginAction extends ActionSupport{
private Client client;
private ClientDAO dao;
private String msg;

        //所有的get和set都有 节省空间就不贴了 @Override
public void validate() {
if(this.client.getNom() == null) {
this.addFieldError("username", "username can't be empty!!!");
}
super.validate();
} @Override
public String execute() throws Exception {
ActionContext context = ActionContext.getContext();
if(dao.FindClientForLogin(this.client.getNom(), this.client.getPwd())) {
msg = "login succeeded";
context.put("message", msg);
return this.SUCCESS;
}
msg = "login failed";
context.put("message", msg);
return this.ERROR;
}
}applicationContextstruts2spring注入

解决方案 »

  1.   

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
    <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
    </bean> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    在applicationcontext中加入这段就行了,sessionFactory封装了connection,这个对象又被hibernateTemplate引用,hibernateTemplate可以对数据库进行增删改查等操作。然后你就可以实现你的dao层了。
    具体使用在每个dao实现类里加入
    protected HibernateTemplate hibernateTemplate; 
    并提供getter、setter方法 然后你就可以spring的方式来写代码了。比如
    public void addForum(Forum forum) {
    hibernateTemplate.save(forum);
    }
    懂了吗?就这么简单!
      

  2.   


    我在写dao的时候,并没有用hibernatetemplate,可能我用了古老的方法,这也是导致我看不懂网上的applicationContext.xml的原因吧
    我是这样实现dao层的://这个class负责创建session和关闭session
    public class DBHibernate {
    private SessionFactory sessionFactory = (new Configuration().configure()).buildSessionFactory();
    public Session connect() {
    return this.sessionFactory.openSession();
    }

    public void close() {
    this.sessionFactory.close();
    }
    }//interface---dao
    public interface ClientDAO {
    Client FindClientByNom(String nom);

    boolean FindClientForLogin(String nom, String pwd); List<Client> ListAll();
    void AddClient(Client client);
    }//上面的interface的实现 同时继承第一个class
    public class ClientDAOImpl extends DBHibernate implements ClientDAO {
    @Override
    public void AddClient(Client client) {
    Session session = connect();
    Transaction trans = session.beginTransaction();
    session.save(client);
    trans.commit();
    session.close();
    } @Override
    public Client FindClientByNom(String nom) {
    Session session = connect();
    Transaction trans = session.beginTransaction();
    String sql = "SELECT * FROM client WHERE nom = '" + nom + "'";
    @SuppressWarnings("unchecked")
    List<Client> list = session.createSQLQuery(sql).addEntity(Client.class).list();
    trans.commit();
    session.close();
    if(list.isEmpty()) {
    return null;
    }
    return list.get(0);
    }

    @Override
    public boolean FindClientForLogin(String nom, String pwd) {
    Session session = connect();
    Transaction trans = session.beginTransaction();
    String sql = "SELECT * FROM client WHERE nom = '" + nom + "'" + "AND pwd = '" + pwd + "'";
    @SuppressWarnings("unchecked")
    List<Client> list = session.createSQLQuery(sql).addEntity(Client.class).list();
    trans.commit();
    session.close();
    if(list.isEmpty()) {
    return false;
    }
    return true;
    } @Override
    public List<Client> ListAll() {
    Session session = connect();
    Transaction trans = session.beginTransaction();
    String sql = "SELECT * FROM client";
    @SuppressWarnings("unchecked")
    List<Client> list = (session.createSQLQuery(sql).addEntity(Client.class).list());
    trans.commit();
    session.close();
    return list;
    }

    public static void main(String[] args) {
    ClientDAO dao = new ClientDAOImpl();
    Client client = new Client("user2", "123");
    dao.AddClient(client);
    List<Client> list = dao.ListAll();
    //Client c = dao.FindClientByNom("admin");
    //System.out.println(c);

    Iterator<Client> it = list.iterator();
    while(it.hasNext()) {
    System.out.println(it.next());
    }
    }
    }
    如果我这样写,该如何写applicationContext.cml呢?(结合上我最一开始的LoginAction代码 这是我全部的java代码了 除了俩jsp没贴过来)
      

  3.   

    你这样写就用不到 spring 了 根本没有spring什么事,完全是单独的hibernate开发
      

  4.   

    使用spring你要把需要的对象让spring帮你生成,然后配置他们的依赖关系,也就是在ApplicationContext.xml文件里配置。你的程序根本就没有用到spring。
      

  5.   


    那应该怎么写就会用到spring呢?
      

  6.   

    你下载的spring的包中有spring的小demo直接去看就得了