1. 程式人生 > >IDEA配置一個入門的ssh事例,解決Artifact war exploded:Error during artifact deployment. See server log for detail

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 

和 lib

然後選擇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(業務層)

 

準備工作的大致就是這樣的