SSH配置的步骤以及配置过程应该注意的问题

在学习javaweb的三大框架Struts2,Hibernate,Spring的时候遇到了很多问题,大部分是由于自身配置不规范造成的,下面来说一下一些正式的配置步骤

Struts2的配置

基础配置

<struts>
    <constant name="struts.devMode" value="true"></constant>
    <package name="p1" extends="struts-default">

    <action name="login" class="com.heima.web.action.UserAction" method="Login">
    <result>/login/home.jsp</result>
    <result name="input">/login/login.jsp</result>
    </action>
    </package>
</struts>

当然这在action较多的项目中配置起来较为麻烦,因此,我们采用通配符的方式来配置

通配符配置方式

<struts>
<constant name="struts.devMode" value="true"></constant>
<package name="basicstruts2" extends="struts-default">
<action name="page_*_*">
<result name="success" type="dispatcher">/WEB-INF/pages/{1}/{2}.jsp</result></action>

</package>
</struts>

Spring和Hibernate在Spring配置文件中配置的几个步骤

加载jdbc属性文件

<!-- 加载jdbc属性文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

配置属性文件

    <!-- 通过jdbc属性文件配置数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${driverClass}"/>
        <property name="jdbcUrl" value="${jdbcUrl}"/>
        <property name="user" value="${user}"/>
        <property name="password" value="${password}"/>
    </bean>

配置Hibernate的工厂Bean

    <!-- spring框架用于整合Hibernate的工厂bean -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>

注入Hibernate的相关属性和映射文件

        <!-- 注入Hibernate相关的属性 -->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
        <!-- 注入Hibernate的映射文件 -->
        <property name="mappingDirectoryLocations">
            <list>
                <value>classpath:com/itheima/bos/domain</value>
            </list>
        </property>
    </bean>

spring事务的最后配置

<!-- 事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <!-- 组件扫描 -->
    <context:component-scan base-package="com.itheima.bos"/>
    <!-- 引入注解解析器 -->
    <context:annotation-config/>
    <!-- 事务注解 -->

Spring的其他配置

除了上述的配置,Spring还提供了权限配置(过滤器),编码设置,还有针对Hibernate的session提早关闭的过滤器来解决其他问题,有兴趣的可以自行去查阅一下。在这里,我举一个项目中最常用的编码设置的过滤器为例子、

Spring在web.xml中配置字符编码过滤器解决字符编码问题

 <filter>
  <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
  <filter-name>characterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>

最后,总结一下我在学习SSH三大框架的时候,所遇到的坑,主要有以下几点

  • 1.文件路径是否与实际路径相符
  • 2.类文件的属性是否与数据库相对应,类的属性名与hbm.xml文件中配置的属性是否对应,属性的值允许少但不允许多
  • 3.类之间的关系映射是否正确(多对一,一对多,多对多)
  • 4.spring、Struts,Hibernate在配置过程中都特别注重属性,方法,变量的大小写问题、
  • 5.Hibernate查询的是对应的实体类的名称,Spring 是DAO和Service层的实现类的实例,并不是实现类本身,Struts的Action返回值是action里面result节点的name的值。
  • 6.Struts标签使用过程中,表单是否需要使用Struts标签。取决于是否需要回显

以上就是我在学习和配置SSH上的一些心得,有不足之处,还望批评指正。

你可能感兴趣的:(spring,Hibernate,struts,ssh,struts2.0)