评论

收藏

[MySQL] Struts+Spring+Hibernate框架配置方案

数据库 数据库 发布于:2021-07-05 10:02 | 阅读数:405 | 评论:0

  本文以给出了一个完整的SSH(Struts+Spring+Hibernat)框架配置方案。(附源文件)
  
  本文的读者:适合刚刚学习SSH、想体验一下SSH和想用SSH做点事情的朋友。
  
  你需要的知识:会eclipse的基本操作、tomcat的配置,如果不会你可能犯了“躁进”的毛病,先学基础吧(建议你读一下《学习原来是这样的》)。当然你要有一定的StrutsSpringHibernate知识,至少知道struts-config.xmlhibernate.cfg.xmlApplicationContext.xml是干什么的。     因为要配置的文件比较多,为了给读者一个直观印象,在正式开始前,我先给出配置的路线图。
  
   DSC0000.jpg 图中按照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>
          <action
              path="/hello"
              type="org.springframework.web.struts.DelegatingActionProxy">
              <forward
                  name="helloUser"
                  path="/WEB-INF/jsp/hello.jsp"/>
          </action>
      </action-mappings>
      <!-- 因为使用了代理类,DelegatingActionProxy,注册一个插件,让它通过/Hello去寻找真正的实现类 -->
      <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
          <set-property property="contextConfigLocation"
                        value="/WEB-INF/action-servlet.xml"/>
      </plug-in>   
  </struts-config>
  
  

  
  3.配置ApplicationContext.xml
  
  

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
  
  <beans>
         <bean id="userDAO" class="edu.bjtu.zhao.ssh.UserDAO">
          <property name="sessionFactory" ref="sessionFactory"/>
      </bean>
         <bean id="sessionFactory"       class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                <property name="configLocation">
                        <value>hibernate.cfg.xml</value>  
                       </property>
         </bean>
  </beans>
  

  
  4. 配置action-servlet.xml
  
  

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
  <beans>
  <!-- struts-config.xml里的"/hello"对应,由代理类返回HelloActoine
  到此spring struts配置完毕,也就是还说spring只是管理了action
   -->
      <bean name="/hello"
            class="edu.bjtu.zhao.ssh.HelloAction">
              </bean>
  </beans>
  

  
  5.      配置hibernate.cfg.xml
  
  

  <?xml version='1.0' encoding='UTF-8'?>
  <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  <hibernate-configuration>
  <session-factory>
         <!--是否使运行时生成的sql输出到控制台以供调试  -->
         <property name="show_sql">true</property>
         <property name="dialect">
                org.hibernate.dialect.MySQLDialect
         </property>
         <property name="connection.driver_class">
                com.mysql.jdbc.Driver
         </property>
         <property name="connection.url">
                jdbc:mysql://localhost:3306/sample
         </property>
         <property name="connection.username">root</property>
         <property name="connection.password">
         </property>
         <!-- 以下设置对象与数据库表格的映射文件(所用用到的hbm文件在此配置),必须是相对于根的全路径 -->
         <mapping resource="edu/bjtu/zhao/ssh/User.hbm.xml"/>
  </session-factory>
  </hibernate-configuration>
  

  
  6. 创建映射文件User.hbm.xml
  
  

  <?xml version="1.0" encoding="utf-8"?>
  <!DOCTYPE hibernate-mapping
      PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  
  <hibernate-mapping>
      <class name="edu.bjtu.zhao.ssh.User"
             table="user">
          <id name="id" column="id">
              <generator class="native"/>
          </id>
          <property name="name" column="name"/>
      </class>
  </hibernate-mapping>
  

  
  第四步,测试
  
  1.      打开TOMCAT_HOME/conf/server.xml,在<Host>下配置
  
  

   <Context path="/SSHDemo" docBase="D:\j2ee\workspace\SSHDemo\WebRoot" reloadable="true" debug="0">
      </Context>
  

  
  2.            启动TOMCAT
  IE中输入http://localhost:8080/SSHDemo/hello.do
  将显示“Hello zhaoyuan
  
  IE中输入http://localhost:8080/SSHDemo/hello.do?user=yourname
            将显示“hello  yourname”;
  
  以上程序在
  tomcat-5.5.17jdk1.5.0_06   MySQLversion: 4.0.14-nt 下测试成功。
  
  看到输出的结果,说明配置成功,你拥有了自己的SSH开发框架。这只是一个入门级别的框架配置,用来做个Demo还可以,如果用它来做企业级开发,我基本上可以断言不能。因为至少连接池没配,再说用SSH这种东西来开发,虽然网上炒的比较热,但在具体的项目中还是要慎用。
  

  

  
  

  
关注下面的标签,发现更多相似文章