基于Maven的SSH框架搭建
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
1.工程介紹
工程是結合了Spring+struts2+hibernate,實現(xiàn)了一個簡單的form表單提交的功能,可能需要對spring,struts2,hibernate有一個基礎的了解才好理解。?
2.工程結構圖
首先來看一下整個工程的結構
3.java文件
User.java ?- ?用于往數(shù)據(jù)庫中存入數(shù)據(jù)
UserForm.java ?- ?用于接收頁面?zhèn)鱽淼谋韱螖?shù)據(jù)
package?com.ssh.forms;public?class?UserForm?{private?String?username;private?String?password;private?int?gender;public?String?getUsername()?{return?username;}public?void?setUsername(String?username)?{this.username?=?username;}public?String?getPassword()?{return?password;}public?void?setPassword(String?password)?{this.password?=?password;}public?int?getGender()?{return?gender;}public?void?setGender(int?gender)?{this.gender?=?gender;}}UserDao.java ?- ?用于實現(xiàn)數(shù)據(jù)接口層
UserService.java ?- ?用于實現(xiàn)業(yè)務層邏輯
RegisterAction.java ?- ?struts2的Action
package?com.ssh.action;import?org.springframework.beans.factory.annotation.Autowired;import?com.opensymphony.xwork2.ActionSupport; import?com.ssh.forms.UserForm; import?com.ssh.service.UserService;public?class?RegisterAction?extends?ActionSupport?{private?static?final?long?serialVersionUID?=?1L;private?UserForm?user;@Autowiredprivate?UserService?userService;public?UserForm?getUser()?{return?user;}public?void?setUser(UserForm?user)?{this.user?=?user;}public?String?execute()?{try?{userService.regUser(user);return?SUCCESS;}?catch?(Exception?e)?{e.printStackTrace();return?ERROR;}}}4.配置信息
如第一張工程結構圖可知,為了結構清晰,ssh的所有配置信息都放在resource路徑下面。
struts.xml ?- ?struts2配置
hibernate.cfg.xml ?- ?hibernate的一些配置信息
<?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><!--?配置?hibernate?的基本屬性?--><!--?1.?數(shù)據(jù)源需配置到?IOC?容器中,?所以在此處不再需要配置數(shù)據(jù)源?--><!--?2.?關聯(lián)的?.hbm.xml?也在?IOC?容器配置?SessionFactory?實例時再進行配置?--><!--?3.?配置?hibernate?的基本屬性:?方言,?SQL?顯示及格式化,?生成數(shù)據(jù)表的策略以及二級緩存等.?--><property?name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property?name="hibernate.show_sql">true</property><property?name="hibernate.format_sql">true</property><property?name="hibernate.hbm2ddl.auto">create</property><!--?配置?hibernate?二級緩存相關的屬性.?--></session-factory> </hibernate-configuration>在本工程中將原來在hibernate中的數(shù)據(jù)源信息和關聯(lián)的*.hbm.xml文件配置到了spring配置文件中由spring容器管理。
為了讓工程結構調(diào)理清晰保留了hibernate.cfg.xml文件,并且把hibernate的基本屬性配置寫在了里面,也方便以后添加其他的配置信息。(hibernate的基本屬性也可以配置到spring的配置文件當中,然后刪除掉hibernate.cfg.xml文件,后面會具體講述如何配置)
db.properties ?- 抽取了數(shù)據(jù)源的基本信息,方便以后修改
applicationContext.xml ?- ?spring配置文件
<?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:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"?xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/aop?http://www.springframework.org/schema/aop/spring-aop-4.0.xsdhttp://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/tx?http://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/context?http://www.springframework.org/schema/context/spring-context-4.0.xsd"><!--?配置自動掃描的包?--><context:component-scan?base-package="com.ssh"></context:component-scan><!--?配置數(shù)據(jù)源?--><!--?導入資源文件?--><context:property-placeholder?location="classpath:db.properties"?/><bean?id="dataSource"?class="com.mchange.v2.c3p0.ComboPooledDataSource"><property?name="user"?value="${jdbc.user}"></property><property?name="password"?value="${jdbc.password}"></property><property?name="driverClass"?value="${jdbc.driverClass}"></property><property?name="jdbcUrl"?value="${jdbc.jdbcUrl}"></property><property?name="initialPoolSize"?value="${jdbc.initPoolSize}"></property><property?name="maxPoolSize"?value="${jdbc.maxPoolSize}"></property></bean><!--?配置?Hibernate?的?SessionFactory?實例:?通過?Spring?提供的?LocalSessionFactoryBean?進行配置?--><bean?id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><!--?配置數(shù)據(jù)源屬性?--><property?name="dataSource"?ref="dataSource"></property><!--?配置?hibernate?配置文件的位置及名稱?--><property?name="configLocation"?value="classpath:hibernate.cfg.xml"></property><!--?配置?hibernate?映射文件的位置及名稱,?可以使用通配符?--><property?name="mappingLocations"?value="classpath:com/ssh/bean/*.hbm.xml"></property></bean><bean?id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property?name="sessionFactory"?ref="sessionFactory"?/></bean></beans>上面提到可以刪除hibernate.cfg.xml文件,可以將spring配置文件中的 ?id=sessionFactory 的bean 替換如下即可:
<bean?id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><!--?配置數(shù)據(jù)源屬性?--><property?name="dataSource"?ref="dataSource"></property><!--?使用?hibernateProperties?屬相來配置?Hibernate?原生的屬性?--><property?name="hibernateProperties"><props><prop?key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</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="mappingLocations"?value="classpath:com/ssh/bean/*.hbm.xml"></property></bean>web.xml ?- ?額外指定了 spring 和 struts2配置文件的路徑
pom.xml ?- ?配置了一些ssh框架所必需的jar包,有maven自動下載到本地倉庫
<project?xmlns="http://maven.apache.org/POM/4.0.0"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com</groupId><artifactId>ssh1</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>ssh1?Maven?Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>test</scope></dependency><!--?添加SSH依賴?--><!--?Struts2?--><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.3.24</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-spring-plugin</artifactId><version>2.3.24.1</version></dependency><!--?添加Hibernate依賴?--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.2.2.Final</version></dependency><!--?spring框架依賴?--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.2.4.RELEASE</version></dependency><!--?包含了大量注解@Autowired等。?--><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.2.4.RELEASE</version></dependency><!--?包含SessionFactory?org.springframework.orm.hibernate4.LocalSessionFactoryBean?--><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>4.2.4.RELEASE</version></dependency><!--?包含ContextLoaderListener?監(jiān)聽器?--><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.2.4.RELEASE</version></dependency><!--??ApplicationContextInitializer?--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.2.4.RELEASE</version></dependency><!--?mysql驅(qū)動?--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.26</version></dependency><!--?c3p0數(shù)據(jù)源?--><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><!--?添加Log4J依賴?--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.6.1</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-nop</artifactId><version>1.6.4</version></dependency><!--?添加javassist?--><dependency><groupId>javassist</groupId><artifactId>javassist</artifactId><version>3.11.0.GA</version></dependency></dependencies><build><finalName>ssh1</finalName></build> </project>5.頁面文件
Register.jsp
<%@?page?language="java"?contentType="text/html;?charset=UTF-8"pageEncoding="UTF-8"%> <%@?taglib?prefix="s"?uri="/struts-tags"%> <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8"> <title>User?Register?Page</title> </head> <body><s:form?action="register"><s:textfield?name="user.username"?label="用戶名"></s:textfield><s:password?name="user.password"?label="密碼"></s:password><s:select?list="#{'1':'男','0':'女'}"?listKey="key"?listValue="value"name="user.gender"?label="性別"?value="1"></s:select><s:submit?value="注冊"></s:submit></s:form></body> </html>success.js
6.配置中遇到的一些問題和解決方法
1.hibernate配置了自動建表,但是程序運行之后不僅沒有自動建表而且還總是提示無法找到表。
解決方法:hbm2ddl.auto 改成hibernate.hbm2ddl.auto 當然值也要改成create才可以自動建表。
.......
源代碼在此:點擊此處下載
轉(zhuǎn)載于:https://my.oschina.net/kimyeongnam/blog/612971
總結
以上是生活随笔為你收集整理的基于Maven的SSH框架搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个从源代码里提取中文字符串的java类
- 下一篇: R语言学习笔记(4)