zoukankan      html  css  js  c++  java
  • .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路上,行人逆行,盲点,急刹车差点翻下山去,当然中间也有点我得原因快下去了稍微注意力不集中了点,有喜欢骑行的希望大家注意点。另外杭州如果你也是一个人在骑行可以联系下,哈哈!有一个自己的爱好还是很不错的!!

  • 相关阅读:
    SGU 495 Kids and Prizes 概率DP 或 数学推理
    poj 2799 IP Networks 模拟 位运算
    uva 202 Repeating Decimals 模拟
    poj 3158 Kickdown 字符串匹配?
    uva 1595 Symmetry 暴力
    uva 201 Squares 暴力
    uva 1594 Ducci Sequence 哈希
    uva 1368 DNA Consensus String 字符串
    数字、字符串、列表的常用操作
    if条件判断 流程控制
  • 原文地址:https://www.cnblogs.com/wtzbk/p/7409770.html
Copyright © 2011-2022 走看看