EasyPlay spring+SpringMVC+Hibernate框架搭建 二

    導入所需要的jar包。可以通過我的百度雲鏈接進行下載(要注意下載的版本的使用,不同版本的jar包導入也有可能導致項目框架搭建的失敗。)
    百度雲鏈接 http://pan.baidu.com/s/1pKCphXL
    百度雲密碼 1d21
    將所有jar包放在lib文件下面。
    接下來最重要的五個配置文件。
    最先配置數據庫連接文件 十分簡單 代碼就不貼了 百度一下 一大把 (要注意的是自己數據庫訪問的url以及驅動加載)
    輸入需要訪問數據庫的url以及數據庫的登錄名以及密碼。然後在其他配置文件中獲取該文件信息。
    配置log4j打印日誌 這裏也十分簡單,原封不動的複製上去就可以了。(這個也百度一下吧。因爲這裏沒有什麼要改動的東西)
    該文件可用於在控制檯打印基本信息。也可以將信息以文件的方式記載在電腦的某個位置
    1.springMVC-servlet文件
    
    //需要掃描的controller文件
    <context:component-scan base-package="main.java.com.yxr.controller"/>
    
    <mvc:annotation-driven />
    
    <mvc:default-servlet-handler/>
        //轉向界面路徑解析
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    
    <!-- SpringMVC上傳文件時,需要配置MultipartResolver處理器 需要使用導出時進行的spring配置-->  
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <property name="defaultEncoding" value="utf-8" />  
        <!-- 指定所上傳文件的總大小不能超過10485760000B。注意maxUploadSize屬性的限制不是針對單個文件,而是所有文件的容量之和 -->  
        <property name="maxUploadSize" value="10485760000" />  
        <property name="maxInMemorySize" value="40960" />  
    </bean>  

    2.application 文件的配置
    開啓註解掃描
    <context:annotation-config />
    <!-- 設定Spring 去哪些包中找Annotation -->
    <context:component-scan base-package="main.java.com.yxr" />
    //暫且理解爲找到jdbc的配置文件
    <bean id="propertyConfigurer"  
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="location">  
        //明明我將文件放在src.main下面的config包文件下面,爲什麼尋找的路徑卻在這裏 是因爲項目編譯之後會在web-inf下面生成
            <value>/WEB-INF/classes/main/config/jdbc.properties</value>  
        </property>  
    </bean>  
    //這一塊就是拿到jdbc文件中的一些信息
    <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>
    //這一塊顯而易見是 包所要掃描的基類
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="DataSource"/>
        <property name="packagesToScan">
            <list>
                <value>main.java.com.yxr.model</value>
            </list>
        </property>
        <property name="hibernateProperties">
                    //所使用的sql方言 以及設置是否顯示sql語句
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                //這裏是比較重要的地方 個人覺得 一共有四種取值 update 不改變表結構 validate 驗證表結構  
                //create 創建表存在則刪除再創建 這樣一旦表中有數據則後果不堪設想  create-drop tomcat啓動時創建 tomcate關閉時銷燬
                //所以我在這裏使用update
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.format_sql">false</prop>
            </props>
        </property>
    </bean>

    <!-- 開啓HibernateTemplate,並且爲其注入SessionFactory
    使用HibernateTemplate不太方便的就是要獲取session得通過getSessionFactory()方法獲取 -->
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <!-- 配置Spring的事務處理 -->
    <!-- 創建事務管理器-->
    <bean id="txManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    
    <!-- 配置AOP,Spring是通過AOP來進行事務管理的 -->
    <aop:config>
    <!-- 設置pointCut表示哪些方法要加入事務處理 -->
    <!-- 以下的事務是聲明在DAO中,但是通常都會在Service來處理多個業務對象邏輯的關係,注入刪除,更新等,此時如果在執行了一個步驟之後拋出異常
        就會導致數據不完整,所以事務不應該在DAO層處理,而應該在service,這也就是Spring所提供的一個非常方便的工具,聲明式事務 -->
        <aop:pointcut id="allMethods"
            expression="execution(* main.java.com.yxr.serviceImpl.*.*(..))" />
        <!-- 通過advisor來確定具體要加入事務控制的方法 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="allMethods" />
    </aop:config>
        <!-- 配置哪些方法要加入事務控制 -->
    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
        <!-- 讓所有的方法都加入事務管理,爲了提高效率,可以把一些查詢之類的方法設置爲只讀的事務 -->
            <tx:method name="*" propagation="REQUIRED" read-only="true"/>
            <!-- 以下方法都是可能設計修改的方法,就無法設置爲只讀 -->
            <tx:method name="add*" propagation="REQUIRED"/>
            <tx:method name="del*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="save*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    3.下面還有最重要的一個配置就是web.xml文件的配置 (display-name以及welcome-file-list 一個是項目顯示內容一個是加載的起始頁 不細講)

    <!-- 創建Spring的監聽器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
    //項目完全啓動之前打開的文件 加載xml文件
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/main/config/application.xml</param-value>
    </context-param>

        //加載srpingMVC-servlet文件
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/classes/main/config/SpringMVC-servlet.xml</param-value>
          </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- Spring中提供了 org.springframework.orm.hibernate3.support.OpenSessionInViewFilter;
        這個類來實現OpenSessionInViewer的操作 -->
    <filter>
        <filter-name>openSessionInViewerFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
        </filter-class>

    </filter>
    <filter-mapping>
        <filter-name>openSessionInViewerFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>
            org.springframework.web.context.request.RequestContextListener
        </listener-class>
    </listener>

  個人理解。之前的配置文件無論是怎樣最後都回加載到web.xml文件中來,直接的或者是間接的。這樣的話框架就已經搭建好了。啓動tomcat不報錯。算是初步
  成功。但是如果你之前沒有搭建過。我敢保證一半的人會報各種不同錯誤。總而言之如果報錯你就細細的研究你的路徑是否配置正確。很多時候路徑配置不正確
  框架就會報錯。當然具體情況具體對待。雖然現在不報錯。並不代表項目框架搭建就成功了。我將以一個簡答的登錄來測試一下。

 首先在數據庫中創建一個數據庫。然後創建一張用於臨時測試的用戶表
 -- 以後該項目所需要使用的數據庫
 create database EasyPlay;
 -- 使用該數據庫
 use EasyPlay;
 -- 創建一張用戶表
 create table user_t(id int auto_increment, loginName char(8), password char(8), primary key(id));

 在myEclipse中 創建用戶類 這裏大家也可以不在數據庫中間表。將上面提到的update換成create試試。你會發現。它通過註解自動生成了一張表。
 親測 一樣的效果
 user.java
 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 @Column(name = "id")
 private int id;
    
 @Column(name = "loginName", length = 8)
 private String loginName;
    
 @Column(name = "password", length = 8)
 private String password;

 下面是get set 方法 就不一一展示了。

 接下來 我再寫個controller文件驗證一下 控制層是否起作用。
 按道理應該從controller一直到dao層一連串的實現登錄功能。但是 後期我會首先編寫baseDao文件簡化數據庫操作。所以此處只驗證controller層
 。如果後期報出問題再修改配置。
 下面給出 java文件 以及 jsp文件
  @Controller
  @RequestMapping("/user")
    public class UserController {

    @SuppressWarnings("unused")
    @RequestMapping("/userLogin.do")
    private void userLogin(@RequestParam(name = "loginName", defaultValue = "", required = true) String loginName,
                           @RequestParam(name = "password", defaultValue = "", required = true) String password){
        String str;
        if (StringUtils.isEmpty(loginName) || StringUtils.isEmpty(password)) {
            str = "請將信息填寫完整!";
        } else if (!loginName.equals("zs")) {
            str = "所填寫的賬號不存在!";
        } else if (!password.equals("111111")) {
            str = "密碼填寫錯誤!";
        } else {
            str = "登錄成功!";
        }
        System.out.println(str);
    }
    }

    jsp文件
    <body>
    <form method="post" action="user/userLogin.do">
        賬號:<input type="text" name="loginName"/><br/><br/>
        密碼:<input type="password" name="password"/><br/><br/>
        <input type="submit" value="提交"/>&nbsp;&nbsp;&nbsp;
        <input type="reset" value="重置"/>
    </form>
  </body>

  親測,運行成功。

 下面是運行出來的截圖偶!

  


  順便,我將自己現有的jquery插件什麼的也放入項目中,同時我將其放在百度雲中供各位下載使用。
  百度雲鏈接 http://pan.baidu.com/s/1pKCphXL
  百度雲密碼 1d21
  只做交流學習使用。將其放置在jquery文件夾下面。
  可能你會發下報錯。不用緊張只需要百度一下如何跳過驗證就可以。反正我是這麼處理的,對於後期的使用暫時沒發現有什麼影響。如果有更好的方法
  可以留言評論。找到錯誤文件 右鍵選擇myeclipse 然後選擇 exclude from validation 從驗證中排除。至於如何使用以後再介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章