struts2+hibernate3+spring3(ssh2)框架下的web应用

首先咱们须要一点点jar包,来支持咱们的工做,具体这些jar包是干吗的本身去搜。如图:java

  

    在工程里面,将这些jar包复制到WebContent下的WEB-INF下的lib目录里面,Eclipse会自动将jar包加到工程项目里。如图mysql

    ssh2的优点在于,加入jar包,写上配置文件,就能使用。它的优点在于使用配置文件,主要是xml来代替了大量的代码书写操做,可是缺点在于新人对于配置文件简直两眼一抹黑,并且大的工程的话会存在配置文件泛滥成灾。因此事有利弊,一切在于本身的掌握。web

   (一)配置struts2。spring

    struts2的配置很简单,只须要在src目录下创建文件struts.xml。具体怎么才能创建这个文件是属于Eclipse的问题,就很少说了。sql

    打开struts2,若是你使用的是MyEclipse的话,或许看不到如我下图的东西,你须要如图点击下source选项卡就好了。
数据库

    在里面写上:apache

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
  <constant name="struts.custom.i18n.resources" value="message" />
  <package name="SBPM" extends="json-default">json

    <!--1Common Action -->
    <action name="login" class="ManageUserAction" method="login">
      <result name="input">/WEB-PAGE/Login.jsp</result>
      <result name="success">/WEB-PAGE/Test.jsp</result>
    </action>
    <!-- 2ChangeLanguage -->
    <!-- 3Request operation -->
    <!-- 4Change url -->
  </package>
</struts>session

解释下这个文件,app

    1.1<? 到 > 是这个xml的dtd,encoding和version的定义,从<struts>到</struts>是咱们定义的struts须要使用的内容。

    1.2<constant....这一行,是定义的国际化文件内容,就是internationalization由于从i到n有18个字母,因此又叫i18n。后面咱们将使用2个文件名为message的文件来实现中英文的转化。

    1.3从<package>到</package>是我定义的一个package,能够用于workspace的转换等工做,可 以彼此继承,由于这个工程很小,因此就定义一个就好了。使用默认的workspace /。注意,extends="json-default" 通常这里是使用struts-default,可是json是struts-default的扩展包,使用json-default的话,我就能使用 json与前台,用于不刷新页面的后台调用和前台显示。

    1.4像<!-- 2ChangeLanguage -->这样的东西,是注释。我饿打算把个人action分红4部分,如注释所言。随手写注释是个很是好的习惯。具体缘由能够去搜下。在<!-- 与-->之间能够写任何内容。

    1.5我写了第一个action。  

<action name="login" class="ManageUserAction" method="login">
      <result name="input">/WEB-PAGE/Login.jsp</result>
      <result name="success">/WEB-PAGE/Test.jsp</result>
</action>

    name为这个action的名字,它是提供给jsp页面用于调用action时的标志。

    class是这个action在工程里的位置,原本应当写成com.sbpm.action.ManageUser的,可是我使用了spring对struts进行了托管,因此这里填的是spring中写的action的class。

    每一个action能够定义不少的result。当咱们在action的文件里面进行操做的时候,能够返回这些String,而后会根据咱们返回 String的内容找到result的name,在调用result里面所定义的操做。咱们这里定义了2个返回,若是返回input,那么就跳转到登录页 面,若是返回success,跳转到Test.jsp页面。这里写的/WEB-PAGE/Test.jsp是工程下的文件所在目录+文件名。

    打开上图的WEB-INF下的web.xml文件,写下以下内容

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" 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">

  <display-name>SBPMS</display-name>
  <session-config>
    <session-timeout>10</session-timeout>
  </session-config>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <welcome-file-list>
    <welcome-file>/Login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

须要解释一下。

    2.1从<session-config> 到  </session-config>设置了咱们页面的session的持续时间为10分钟。实际应用中就是登录超时,10分钟不动,你再点页面的话我会提示请从新登录。

    2.2其他分别定义了监听器,spring文件位置,过滤器,和初始界面。

That's all。struts2配置完毕。

    (二)配置Spring和Hibernate

    在WebContent下的WEB-INF下创建applicationContext.xml文件,这是spring配置所须要的惟一文件,我计划将Spring与Hibernate的配置放在一块儿。打开文件,写入

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

  <!-- Connect dataSource and sessonFactory -->
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql://localhost:3306/sbpms"></property>
    <property name="username" value="root"></property>
    <property name="password" value="root"></property>
    <property name="maxActive" value="100"></property>
  </bean>

  <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
        <prop key="hibernate.connection.autocommit">true</prop>
        <prop key="hibernate.show_sql">true</prop>
      </props>
    </property>
    <property name="mappingResources">
      <list>
        <value>com/sbmps/bean/User.hbm.xml</value>
      </list>
    </property>
  </bean>

  <!-- IOC DAOs -->
  <!-- DAO for User -->
  <bean id="UserDao" class="com.sbpms.dao.impl.UserDaoImpl">
    <property name="sessionFactory">
      <ref bean="sessionFactory"></ref>
    </property>
  </bean>

  <bean id="UserService" class="com.sbpms.service.impl.UserServiceImpl">
    <property name="userDao" ref="UserDao"></property>
  </bean>

  <!-- IOC Actions -->
  <!-- Action for users -->
  <bean id="ManageUserAction" class="com.sbpms.action.ManageUserAction"
    scope="prototype">
    <property name="service" ref="UserService"></property>
  </bean>
</beans>

解释下

    2.1<!-- Connect dataSource and sessonFactory -->部分是配置hibernate,主要配置jdbc的连接,dataSource和sessionFactory。jdbc是连接数据库的 url里面jdbc:mysql://localhost:3306/sbpms为数据库内容,我本身创建的数据库sbpms,其他内容写法是固定的,使 用了端口3306,是在配置数据库的时候设置的。而后设置了登录的用户名root密码root也是设置数据库的时候设置的,再设置了下最大链接数100。

    sessionFactory是将我写的java类:bean中得类与数据库的表相关联,除了<value>com/sbmps/bean /User.hbm.xml</value>这一行以外的其他东西均可以不改。这一行的意思在于将我在bean中得表-类关联文件读取。前面 还设置了显示sql,自动提交,dialect等内容。这是一种工厂模式。

    2,2   <!-- IOC DAOs --> <!-- DAO for User -->是将个人dao层java类进行ioc控制,经过    <property name="sessionFactory"> <ref bean="sessionFactory"></ref> </property>将dao层与sessionFactory关联,同理,在后面的ioc中,将service与dao关联,将 action与service关联。前面在1.5提到的,struts.xml中使用的action类的class,就是这里bean的id,为 ManageUserAction,这个id关联到具体的com.sbpms.action.ManageUserAction类。这样,将jsp与 struts.xml与applicationContext.xml和数据库都关联起来了。

    2.3为何要放在WEB-INF下面,由于数据库操做的文件不但愿在运行时被更改,放在WEB-INF下面就有这个优点。

    That‘s all,ssh2框架就配置完成。固然这里还有另外的方法,就是将hibernate的配置写成独立的文件,叫hibernate.cfg.xml文件。在里面写hibernate的配置。由于这个项目的hibernate很小,因此我以为不必。

相关文章
相关标签/搜索