IDEA配置一個入門的ssh事例,解決Artifact war exploded:Error during artifact deployment. See server log for detail
首先,我的版本ideaIU-2017.3.4,
一、新建一個專案project
1、1)create new project
2)file ——》new ——》project
2、這裡選擇spring,struts2,hibernate
1)選擇spring ——>spring,勾選create empty spring-config.xml檔案,download是自動選擇的(它可以自動生成spring必要的jar包,你可以點選 Configure.. 檢視裡面的jar包)選擇好後,再選擇JavaEE下的Web Application ——>struts2 , 往下拉 ,選擇hibernate,選擇 finnish
建立專案名和你要存放的路徑,我的為ssh和E:\JavaWeb相關\ssh,然後finnish
等待系統自動為你下載相關的jar包
下載完成後的目錄,lib裡面為jar包
3、生成web.xml
在專案的右上角,如下圖的地方,點選(Project Structure)
選擇Modules——》Web——》+ ——》web.xml,就會彈出下圖,點選OK,再點選底部的Apply
然後,還在該視窗下,點選ssh——》Source ——》WEB-INF ——》滑鼠右鍵 ——》New Floder..
建立兩個資料夾 classes
然後選擇Path ——》Use module compile output path,把路徑改成下面這樣的,然後Apply,OK 退出
4、加入另外的相關的jar包到ssh\lib檔案和WEB-INF\lib檔案
(注意看,你自己專案有沒有下載完成,如若沒有,你需要手動新增)
1 ) ssh\lib
注意:手動新增的jar包,需要右擊——》還需要回到project structure,將這些jar包新增到artifact
struts2-spring-plugin-2.3.34.jar是在struts-2.3.34.zip解壓後的lib目錄中,是spring整合struts2用到的
mysql-connector-java-8.0.12.jar是連線資料庫用到的
spring-web-4.3.12.RELEASE.jar這個是專案自動下載缺失的spring需要的jar包
下面是hibernate缺少的c3p0連線池用到的jar包(在hibernate.zip解壓後的lib/optional/c3p0/*)
2 ) WEB-INF\lib
將src\lib下的jar包copy到WEB-INF\lib中,另外再加入如下的三個jar包,然後到project Structure,將該lib新增到artifact
3)回到project Structure——》module——》ssh——》dependencies——》+ ——》JARs or Directory, 然後選擇你的專案下的WEB-INF\lib檔案,點選OK
選擇Jar Directory ——》OK,Apply
配置Artifact,在下圖右擊的地方,滑鼠右擊,選擇+Add ——》Web Application:Exploded ——》From module..
就會彈出下圖,點選ssh,OK
得到下面的圖後,點選Apply
然後,點選ssh:war exploded,在視窗右下角點選 Fix.. ,選擇第二個Add all miss dependencies of 'ssh' to the artifact,
(當然,你可以選擇第一個,一個一個的新增jar包到 artifact )
如果建立WEB-INF\lib這個檔案,當執行專案時會報下面的錯誤
二、程式碼配置
在spring-config.xml中加入下面的程式碼(是spring管理hibernate的),引入的外部檔案是放在src下的jdbc.properties
<!-- 引入外部的屬性檔案 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置c3p0連線池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 配置Hibernate相關屬性 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 注入連線池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置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="mappingResources">
<list>
<value></value>
</list>
</property>
</bean>
jdbc.properties(連線資料庫用的資訊)
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_book?serverTimezone=GMT%2B8
jdbc.username=root
jdbc.password=123456
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--spring的配置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-config.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--struts的配置-->
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
注意jsp頁面中提交表單最好使用struts-tags(如下)
<s:form>
<table>
<tr>
<td>使用者名稱:</td>
<td><s:textfield value="" name="#實體類的引數"/> </td>
</tr>
<tr>
<td>密碼:</td>
<td><s:textfield value="" name="#實體類的引數"/> </td>
</tr>
<tr>
<td colspan="2">
<s:submit value="登陸"/><s:reset value="重置"/>
</td>
</tr>
</table>
</s:form>
建立src目錄,下面是我寫好的一個專案的src目錄,dao(資料庫操作)、action、domain(實體)、service(業務層)
準備工作的大致就是這樣的