.net到Java那些事兒--整合SSH


一、介紹

      整體介紹分成兩個部分,第一.net轉到Java的原因,第二開發SSH時候的環境介紹;

      .net到Java的原因:

      .net開發也將近快3年的樣子,加上現在的老東家換過的公司也有4家了,中間的心酸故事我也不想說,我就說下中間遇到一些事和我想做的一些事,這些可能促使我進行了轉行,當然中間也猶猶豫豫過,比如Core的到來、還有Xamarin這些東西的涌入使我堅持將近一年的樣子,但是在6月份的時候我還是下定決心,先后購入Java核心卷、Spring實戰、JVM虛擬機、Java並發編程這幾本書,當然JVM和並發編程還沒有開始看,核心卷大致上看了一遍(除去Swing部分),Spring看了將近一半,另外也看了一些視頻,這就是現在的基本狀況;當然這有點偏題,我還是轉回來主題吧,根據現在杭州就業狀況來說,由於淘寶的存在,杭州這邊好多小型電商,很多小型電商都是基於Java平台來開發,淘寶確實引領技術的風向,就濱江來說可能Java行業的提供的崗位會比整個杭州的.Net崗位都多了,當然我這是基於拉勾平台上來說的,別的我不知道,另外就是就薪資來說,Java同等年限的會比.Net高一些,可能10%-20%的樣子,當然這可能根據行業不同,這個是我在好多群里看到的大家基本都這樣說,不過這確實也是發送在我身上,我好基友確實每次找工作會比我高點,不過他也好像確實比較辛苦點,不過這個都不是重點了;

        接着上面說,上面我看見一不小心就打了好多字,分一段來說下重點原因吧,這一段主要是針對我自己原因來說的,我面試到的基本都是做軟件的公司,除去第2家相對文檔,測試這些比較全面以外好像在也沒有遇到比較正規的,當然這中間可能我也有和大一部分的原因,不過這些也都不是重點嘍,就說我開發軟件來說吧,很多很多都是數據量比較少,其實我就懷疑很多都是沒有怎么用,沒有數據其實就沒有什么技術,沒有什么框架,說白還就增刪改查,哈哈,這當然說的有些過,不過也差不多吧,另外可能周圍同事還在進行sql拼接,有些時候和他們討論的時候感覺扯不到一起,這不是我技術有多好,也不是他們技術有多爛的問題,我感覺是作為一個開發人員來說,不管你是在那個平台你必須保持一種時刻學習進步,明天的代碼比今天好的心態,這樣我們可能在這條道路上越走越遠,我可能稍微具備一點上面的特征,這個歸結為一句話,團隊技術太老,大家沒有什么學習心態;

      總結下:

      上面寫的有點亂:其實就是2點吧,就業空間和團隊,這個團隊這一部分可能就是我說說,不過我朋友公司確實每周大家都會有技術分享這些東西,技術氛圍比較好,至少來說比我遇到這些會好很多吧!這僅代表我個人觀點!

      整合SSH技術以及開發環境:

      JDK:1.8.0_131

      開發工具:IDEA

      服務器:Tomact

      數據庫:MySql

      包整理工具:Meavn

      至於Spring,Hibernate,Struts2這些版本有點多,具體版本的不同還是需要看下API,我也說不上來;

二、使用Meavn構建項目

     第一步新建一個空的Meavn項目,作為項目的父工程項目,將src目錄刪除,下面的配置有一部分沒有用到,不明白的可以自己查一下;

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.wtz</groupId>
    <artifactId>store</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>stroe_dao</module>
        <module>store_service</module>
        <module>store_domain</module>
        <module>store_web</module>
    </modules>
    <properties>
        <spring.version>4.2.4.RELEASE</spring.version>
        <struts2.version>2.3.24</struts2.version>
        <hibernate.version>5.0.7.Final</hibernate.version>
        <slf4j.version>1.6.6</slf4j.version>
        <log4j.version>1.2.12</log4j.version>
        <shiro.version>1.2.3</shiro.version>
        <cxf.version>3.0.1</cxf.version>
        <c3p0.version>0.9.1.2</c3p0.version>
        <mysql.version>5.1.6</mysql.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.4</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.37</version>
        </dependency>
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.1</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

        <!-- jstl -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- shiro -->
        <!-- apache shiro dependencies -->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-all</artifactId>
            <version>${shiro.version}</version>
        </dependency>


        <!-- spring -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.8</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>



        <!-- struts2  begin -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>${struts2.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>javassist</artifactId>
                    <groupId>javassist</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
            <version>${struts2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-json-plugin</artifactId>
            <version>${struts2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-convention-plugin</artifactId>
            <version>${struts2.version}</version>
        </dependency>
        <!-- struts2  end -->

        <!-- hibernate begin -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${hibernate.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.2.1.Final</version>
        </dependency>
        <!-- hibernate end -->

        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>${c3p0.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${cxf.version}</version>
        </dependency>

        <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- log end -->

        <!-- Javamail -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.4</version>
        </dependency>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>

        <dependency>
            <groupId>org.codehaus.xfire</groupId>
            <artifactId>xfire-core</artifactId>
            <version>1.2.6</version>
        </dependency>

        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.11</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.11</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.11</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache-core</artifactId>
            <version>2.6.6</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
    </build>

</project>
View Code

     第二步建立一個子工程項目,New-Module-Next-Finish,最終生成第四副圖的目錄;

     第三步建立一個子工程項目,操作如下

    

     第三步先進ORM實體類的映射關系,這里我做的單表的映射關系,我的目的是先讓項目跑起來,之后開始介紹這些框架的用法,User是表,User.hbm.xml是映射實體與數據庫表的映射關系,基本的實體層就是這樣;

     

     第四步數據庫層的配置,這里使用的是Spring整合Hibernate,這個地方我將SessionFactory這個屬性注入到數據層,那么這樣就可以創建Session進行數據庫操作, 這些里面的關系咱們后面再扯,下面類命名的方法是參考Bob大叔的說法做的我感覺有道理;

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean name="userDao" class="com.wtz.store.impl.UserDaoImpl" scope="prototype"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> </beans>

       第五步業務層,業務層這邊我沒有做實現,想法是按照AOP的形式將業務層注入到表現層;

    

     第六步表現層,這里的配置很多,還有重點的記得添加項目依賴,這些東西后面在慢慢說為什么,這里先說下怎么寫代碼,下面是action的配置文件,如果你需要調用到業務端的邏輯的時候就在下面進行注入就好了,

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="userAction" class="com.wtz.store.action.UserAction" scope="prototype">
    </bean>
</beans>
View Code

    第七步添加hibernate.cfg.xml和struts.xml配置文件,這里我犯錯了,struts我的單詞寫錯,我在這里亂投醫了好久一直沒想到原因,希望大家引以為鑒吧;

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="dialect">
      org.hibernate.dialect.MySQLDialect
    </property>

    <property name="show_sql">true</property>
    <property name="format_sql">false</property>
    <property name="hbm2ddl.auto">update</property>
    <!-- 懶加載,配合web.xml中配置的 openSessionInViewFilter -->
    <property name="hibernate.enable_lazy_load_no_trans">true</property>
    <!--校驗模式  JPA  java persistent api-->
    <property name="javax.persistence.validation.mode">none</property>

    <!--  加載映射文件-->
    <mapping resource="User.hbm.xml"></mapping>
  </session-factory>
</hibernate-configuration>
View Code
<?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>
    <constant name="struts.objectFactory" value="spring" />
    <constant name="struts.ui.theme" value="simple"/>
    <constant name="struts.devMode" value="true" />
    <constant name="struts.i18n.encoding" value="UTF-8" />
    <package name="store" namespace="/" extends="struts-default">
        <action name="login" method="login" class="userAction">
            <result name="success">/WEB-INF/login.jsp</result>
        </action>
    </package>
</struts>
View Code

   第八步將所有整合到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:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<!-- 數據源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/store?characterEncoding=utf8" />
        <property name="user" value="root" />
        <property name="password" value="123456" />
    </bean>

    <!-- SessionFactory -->
    <bean id="sessionFactory"
          class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"
          p:dataSource-ref="dataSource"
          p:configLocation="classpath:hibernate.cfg.xml" />

    <!-- 事務管理 -->
    <bean id="transactionManager"
          class="org.springframework.orm.hibernate5.HibernateTransactionManager"
          p:sessionFactory-ref="sessionFactory" />

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>

            <tx:method name="get*" read-only="true"/>
            <tx:method name="*" read-only="true"/>
        </tx:attributes>
    </tx:advice>

    <aop:aspectj-autoproxy proxy-target-class="true"/>
    <aop:config>
        <aop:pointcut id="pointcut" expression="execution(* com.wtz.store.service.*.*(..))" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" />
    </aop:config>

    <bean id="userDao" class="com.wtz.store.impl.UserDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>


    <!-- 加載分解的配置文件 -->
    <import resource="applicationContext-service.xml"/>
    <import resource="applicationContext-action.xml"/>

</beans>
View Code

   第九步配置Tomact測試運行框架

    第十步頁面顯示成功

三、心得

    這是我第一次搭建Java框架,中間肯定遇到很多問題,比如該怎么整合啊,IDEA的一些使用啊,一些莫名的問題等等,因為面向的一個新的東西,所以避免不了要踩一些坑,但是這中間我堅信我還是能解決的,一路堅持下來還是成功了,警示大家不要輕言放棄,有一顆樂觀個心態。加油!少年!還有肯定有好多猶猶豫豫的像我一樣到底轉不轉的心態的,我送你一句話,轉就立即行動,不轉就安心研究,不要猶豫,當你決定轉,你就做好踩坑的准備,面向加班以后繼續踩坑的道路。編程之路悠悠而漫長,吾將上下而求索。

    后記最近騎行的時候受傷了,在龍井北坡下坡的大S路上,行人逆行,盲點,急剎車差點翻下山去,當然中間也有點我得原因快下去了稍微注意力不集中了點,有喜歡騎行的希望大家注意點。另外杭州如果你也是一個人在騎行可以聯系下,哈哈!有一個自己的愛好還是很不錯的!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM