日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于Maven的SSH框架搭建

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Maven的SSH框架搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

1.工程介紹

工程是結合了Spring+struts2+hibernate,實現了一個簡單的form表單提交的功能,可能需要對spring,struts2,hibernate有一個基礎的了解才好理解。?


2.工程結構圖

首先來看一下整個工程的結構


3.java文件

User.java ?- ?用于往數據庫中存入數據

package?com.ssh.bean;public?class?User?{private?int?userId;private?String?username;private?String?password;private?int?gender;public?int?getUserId()?{return?userId;}public?void?setUserId(int?userId)?{this.userId?=?userId;}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;}}


UserForm.java ?- ?用于接收頁面傳來的表單數據

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 ?- ?用于實現數據接口層

package?com.ssh.dao;import?org.hibernate.HibernateException; import?org.hibernate.Session; import?org.hibernate.SessionFactory; import?org.springframework.beans.factory.annotation.Autowired; import?org.springframework.stereotype.Repository;@Repository public?class?UserDao{@Autowiredprivate?SessionFactory?sessionFactory;??private?Session?getCurrentSession()?{??return?sessionFactory.openSession();??}public?void?saveObject(Object?obj)?throws?HibernateException?{this.getCurrentSession().save(obj);??}}


UserService.java ?- ?用于實現業務層邏輯

package?com.ssh.service;import?org.hibernate.HibernateException; import?org.springframework.beans.BeanUtils; import?org.springframework.beans.factory.annotation.Autowired; import?org.springframework.stereotype.Service;import?com.ssh.bean.User; import?com.ssh.dao.UserDao; import?com.ssh.forms.UserForm;@Service public?class?UserService?{@Autowiredprivate?UserDao?dao;public?void?regUser(UserForm?userForm)?throws?HibernateException?{User?user?=?new?User();BeanUtils.copyProperties(userForm,?user);dao.saveObject(user);}}


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配置

<?xml?version="1.0"?encoding="UTF-8"??> <!DOCTYPE?struts?PUBLIC"-//Apache?Software?Foundation//DTD?Struts?Configuration?2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package?name="default"?extends="struts-default"><action?name="register"?class="com.ssh.action.RegisterAction"><result?name="input">/Register.jsp</result><result?name="success">/success.jsp</result><result?name="error">/fail.jsp</result></action></package></struts>


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.?數據源需配置到?IOC?容器中,?所以在此處不再需要配置數據源?--><!--?2.?關聯的?.hbm.xml?也在?IOC?容器配置?SessionFactory?實例時再進行配置?--><!--?3.?配置?hibernate?的基本屬性:?方言,?SQL?顯示及格式化,?生成數據表的策略以及二級緩存等.?--><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中的數據源信息和關聯的*.hbm.xml文件配置到了spring配置文件中由spring容器管理。

為了讓工程結構調理清晰保留了hibernate.cfg.xml文件,并且把hibernate的基本屬性配置寫在了里面,也方便以后添加其他的配置信息。(hibernate的基本屬性也可以配置到spring的配置文件當中,然后刪除掉hibernate.cfg.xml文件,后面會具體講述如何配置)


db.properties ?- 抽取了數據源的基本信息,方便以后修改

jdbc.user=root jdbc.password=123456 jdbc.driverClass=com.mysql.jdbc.Driver jdbc.jdbcUrl=jdbc:mysql:///ssh1jdbc.initPoolSize=5 jdbc.maxPoolSize=10


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><!--?配置數據源?--><!--?導入資源文件?--><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"><!--?配置數據源屬性?--><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"><!--?配置數據源屬性?--><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配置文件的路徑

<!DOCTYPE?web-app?PUBLIC"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd"?><web-app><display-name>Archetype?Created?Web?Application</display-name><!--?struts.xml路徑配置,若不配置需放到類路徑下?--><init-param><param-name>config</param-name><param-value>../../resources/struts.xml</param-value></init-param><!--?spring配置文件路徑,如不配置需放到web-inf下?--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath: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><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><welcome-file-list><welcome-file>Register.jsp</welcome-file></welcome-file-list></web-app>


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?監聽器?--><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驅動?--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.26</version></dependency><!--?c3p0數據源?--><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

<%@?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><h1>SUCCESS</h1></body> </html>


6.配置中遇到的一些問題和解決方法

1.hibernate配置了自動建表,但是程序運行之后不僅沒有自動建表而且還總是提示無法找到表。

解決方法:hbm2ddl.auto 改成hibernate.hbm2ddl.auto 當然值也要改成create才可以自動建表。

.......

源代碼在此:點擊此處下載


轉載于:https://my.oschina.net/kimyeongnam/blog/612971

總結

以上是生活随笔為你收集整理的基于Maven的SSH框架搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。