在學(xué)習(xí)javaweb的三大框架Struts2,Hibernate,Spring的時(shí)候遇到了很多問(wèn)題荣德,大部分是由于自身配置不規(guī)范造成的,下面來(lái)說(shuō)一下一些正式的配置步驟
Struts2的配置
基礎(chǔ)配置
<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>
當(dāng)然這在action較多的項(xiàng)目中配置起來(lái)較為麻煩,因此瓦阐,我們采用通配符的方式來(lái)配置
通配符配置方式
<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配置文件中配置的幾個(gè)步驟
加載jdbc屬性文件
<!-- 加載jdbc屬性文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
配置屬性文件
<!-- 通過(guò)jdbc屬性文件配置數(shù)據(jù)源 -->
<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的相關(guān)屬性和映射文件
<!-- 注入Hibernate相關(guān)的屬性 -->
<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事務(wù)的最后配置
<!-- 事務(wù)管理器 -->
<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/>
<!-- 事務(wù)注解 -->
Spring的其他配置
除了上述的配置,Spring還提供了權(quán)限配置(過(guò)濾器)篷牌,編碼設(shè)置睡蟋,還有針對(duì)Hibernate的session提早關(guān)閉的過(guò)濾器來(lái)解決其他問(wèn)題,有興趣的可以自行去查閱一下枷颊。在這里戳杀,我舉一個(gè)項(xiàng)目中最常用的編碼設(shè)置的過(guò)濾器為例子、
Spring在web.xml中配置字符編碼過(guò)濾器解決字符編碼問(wèn)題
<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>
最后夭苗,總結(jié)一下我在學(xué)習(xí)SSH三大框架的時(shí)候信卡,所遇到的坑,主要有以下幾點(diǎn)
- 1.文件路徑是否與實(shí)際路徑相符
- 2.類(lèi)文件的屬性是否與數(shù)據(jù)庫(kù)相對(duì)應(yīng)题造,類(lèi)的屬性名與hbm.xml文件中配置的屬性是否對(duì)應(yīng)傍菇,屬性的值允許少但不允許多
- 3.類(lèi)之間的關(guān)系映射是否正確(多對(duì)一,一對(duì)多界赔,多對(duì)多)
- 4.spring桥嗤、Struts,Hibernate在配置過(guò)程中都特別注重屬性,方法仔蝌,變量的大小寫(xiě)問(wèn)題泛领、
- 5.Hibernate查詢(xún)的是對(duì)應(yīng)的實(shí)體類(lèi)的名稱(chēng),Spring 是DAO和Service層的實(shí)現(xiàn)類(lèi)的實(shí)例敛惊,并不是實(shí)現(xiàn)類(lèi)本身渊鞋,Struts的Action返回值是action里面result節(jié)點(diǎn)的name的值。
- 6.Struts標(biāo)簽使用過(guò)程中,表單是否需要使用Struts標(biāo)簽锡宋。取決于是否需要回顯
以上就是我在學(xué)習(xí)和配置SSH上的一些心得儡湾,有不足之處,還望批評(píng)指正执俩。