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

  • 相关阅读:
    MSSQL经典语句
    注销时关闭当前窗体,返回登入界面
    自定义控件小结进阶篇
    精妙SQL语句大全
    触发器MSSQL常用操作
    经典SQL语句大全
    文件下载
    android Notification 的使用
    startActivityForResult()的用法
    Android手机中获取手机号码和运营商信息
  • 原文地址:https://www.cnblogs.com/wtzbk/p/7409770.html
Copyright © 2020-2023  润新知