在学习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上的一些心得,有不足之处,还望批评指正。
网友评论