注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 linux服务器被黑了
 帮助

Struts+Spring+Hibernate框架配置方案


2007-10-11 23:24:17
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
本文以给出了一个完整的SSH(Struts+Spring+Hibernat)框架配置方案。(附源文件)
 
本文的读者:适合刚刚学习SSH、想体验一下SSH和想用SSH做点事情的朋友。
 
你需要的知识:会eclipse的基本操作、tomcat的配置,如果不会你可能犯了“躁进”的毛病,先学基础吧(建议你读一下《学习原来是这样的》)。当然你要有一定的StrutsSpringHibernate知识,至少知道struts-config.xmlhibernate.cfg.xmlApplicationContext.xml是干什么的。     因为要配置的文件比较多,为了给读者一个直观印象,在正式开始前,我先给出配置的路线图。
图中按照hello.do请求的处理顺序,描述了6个配置文件之间的依赖关系。下面我们将一个实际的例子,依次来讲述各个文件的配置。
例子SSHDemo演示了又前台传入请求hello.do,请求,返回一条由数据库中取出的数据。
 
第一步、建立项目
 
1.用MyEclipse建立SSHDemo项目。你至少需要下面的jar文件:
1.Struts.jar 2.commons-beanutils.jar  3.commons-digester.jar
4. commons-collections.jar   5. commons-logging.jar  6Hibernate3.jar   
7. antlr-2.7.6.jar  8.asm.jar  9.cglib-2.1.1.jar 
10. dom4j-1.6.1.jar 11.dom4j-1.6.1.jar   12. ehcache-1.2.jar  13.jta.jar
14. log4j-1.2.11.jar  15. mysql-connector-java-5.0.0-beta-bin.jar  16. spring.jar
 
这些文件你可以在spring的下载包中找到。把上面的jar文件加入classPath中,并拷贝到WEB-INF中的lib中。
 
第二步、建立相关文件,包括类文件,jsp文件等
 
1  1.建立hello.jsp 用来显示由数据库传来的信息
hello.jsp
<%@ page language="java" contentType="text/html; charset=GB2312"
    pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>Struts Demo</title>
</head>
<body>
    <H1>Hell, ${userInfo["username"]} !</H1>   
</body>
</html>
 
2.      建立数据库表
 
create table us (id int(10) primary key auto_increment, name varchar(20))type=innodb;
insert into us (name) values("zhaoyuan");
 
3创建User.java
package edu.bjtu.zhao.ssh;
 
public class User {
    private Integer id;
    private String name;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
 
4.      创建UserDAO.java
 
package edu.bjtu.zhao.ssh;
 
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
public class UserDAO {
    private SessionFactory sessionFactory;  
    public UserDAO() {
    } 
    public UserDAO(SessionFactory sessionFactory) {
        this.setSessionFactory(sessionFactory);
    }  
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
    public User find(Integer id) {
        Session session = sessionFactory.openSession();
        User user = (User) session.load(User.class, id);
        Hibernate.initialize(user);
        session.close();
        return user;
    }
}
 
5.创建HalloAction.java
 
package edu.bjtu.zhao.ssh;
 
import java.util.*;
import javax.servlet.http.*;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class HelloAction extends Action {
 //  private UserChecker userChecker;
   
    public ActionForward execute(
                             ActionMapping mapping,
                             ActionForm form,
                             HttpServletRequest request,
                             HttpServletResponse response)
                                  throws Exception {
         
      String username = request.getParameter("user");
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
       //建立DAO对象
       UserDAO userDAO =  (UserDAO) context.getBean("userDAO");
       User user = new User();
       user = userDAO.find(new Integer(1));
       if(username==null )
       {
             username=user.getName();
       }
        Map model = new HashMap();
        model.put("username", username);
        request.setAttribute("userInfo", model);
 
        return mapping.findForward("helloUser");
    }
}
 
第三步,开始配置路线图中的6xml文件(你可以参考文章的路线图)
 
1.            配置web.xml
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
   
    <!-- Standard Action Servlet Configuration -->
<servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>
            org.apache.struts.action.ActionServlet
        </servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>
                /WEB-INF/struts-config.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
 
    <!-- Standard Action Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
   
<!—配置Spring applicationContext.xml-->
   <context-param>
              <param-name>contextConfigLocation</param-name>
        
<param-value>
                     /WEB-INF/classes/applicationContext.xml
              </param-value>
       </context-param> 
</web-app>
 
2.  配置struts-config.xml
 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
 "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
 
<struts-config>
    <action-mappings>
        <