• java maven、springmvc、mybatis 搭建简单Web项目学习笔记


    前言:

      空余的时间,学学 Java,没准哪天用的到;

      环境搭建折腾了好几天,总算搞顺了,也做个学习笔记,以防后面会忘记;

    一、安装文件及介绍

      JDK:jdk1.8.0 77

      eclipse-maven:eclipse-maven

      tomcat:apache-tomcat-8.0.33

      整合资料参考:http://www.iteye.com/blogs/subjects/ssm_demo

      这个的配置过程比较简单,搞清楚关系就可以了。

    二、maven、springmvc、mybatis 简单介绍

      maven:.NET 下的 NuGet,dll 管理库,也可以自己搭建起来用,程序界的思想都是相同的;

      springmvc:就是一套非常火热的且实现了 ioc、di 的一套 mvc 框架;

        看看开涛大神博客对 springmvc 的解释

      mybatis:数据库访问的一套框架,我也不知道该不该这样的描述他,ORM 框架;

        全解释:自定义SQL、存储过程和高级映射的持久层框架;

        一般的教程都是引导使用逆向工程的方式去映射所有表的 xml 文件,个人建议 xml 文件还是自己写比较好一点,

        但是这个也要根据不同的业务来定;相对来讲 MyBatis 灵活性还是不错的;

    三、基础环境搭建

      1、JDK 安装好了以后配置下系统环境变量;

      2、eclipse 配置一下 mavn;

      3、eclipse 修改一下全局编码集、以及编译的 jdk 版本;

      案例:http://www.cnblogs.com/alunchen/p/5632497.html

    四、向世界问个好

      在新建完成后的 maven 项目中,跟目录下会有一个 pom.xml 文件,

      文件是 maven 默认的配置文件,配置当前项目所需要的 jar 包;

      参考如下:

      pom.xml

      1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      3     <modelVersion>4.0.0</modelVersion>
      4     <groupId>com.cjt</groupId>
      5     <artifactId>MyMaven</artifactId>
      6     <packaging>war</packaging>
      7     <version>0.0.1-SNAPSHOT</version>
      8     <name>MacRobot Maven Webapp</name>
      9     <url>http://maven.apache.org</url>
     10     <properties>
     11         <!-- spring版本号 -->
     12         <spring.version>4.0.2.RELEASE</spring.version>
     13         <!-- mybatis版本号 -->
     14         <mybatis.version>3.2.6</mybatis.version>
     15         <!-- log4j日志文件管理包版本 -->
     16         <slf4j.version>1.7.7</slf4j.version>
     17         <log4j.version>1.2.17</log4j.version>
     18     </properties>
     19 
     20     <dependencies>
     21         <dependency>
     22             <groupId>junit</groupId>
     23             <artifactId>junit</artifactId>
     24             <version>3.8.1</version>
     25             <scope>test</scope>
     26         </dependency>
     27  
     28         <dependency>   
     29               <groupId>dom4j</groupId>    
     30               <artifactId>dom4j</artifactId>    
     31               <version>1.6</version>   
     32         </dependency>  
     33         
     34         <!-- 导入java ee jar 包 -->
     35         <dependency>
     36             <groupId>javax</groupId>
     37             <artifactId>javaee-api</artifactId>
     38             <version>7.0</version>
     39         </dependency>
     40         <!-- spring核心包 -->
     41         <dependency>
     42             <groupId>org.springframework</groupId>
     43             <artifactId>spring-core</artifactId>
     44             <version>${spring.version}</version>
     45         </dependency>
     46 
     47         <dependency>
     48             <groupId>org.springframework</groupId>
     49             <artifactId>spring-web</artifactId>
     50             <version>${spring.version}</version>
     51         </dependency>
     52         <dependency>
     53             <groupId>org.springframework</groupId>
     54             <artifactId>spring-oxm</artifactId>
     55             <version>${spring.version}</version>
     56         </dependency>
     57         <dependency>
     58             <groupId>org.springframework</groupId>
     59             <artifactId>spring-tx</artifactId>
     60             <version>${spring.version}</version>
     61         </dependency>
     62 
     63         <dependency>
     64             <groupId>org.springframework</groupId>
     65             <artifactId>spring-jdbc</artifactId>
     66             <version>${spring.version}</version>
     67         </dependency>
     68 
     69         <dependency>
     70             <groupId>org.springframework</groupId>
     71             <artifactId>spring-webmvc</artifactId>
     72             <version>${spring.version}</version>
     73         </dependency>
     74         <dependency>
     75             <groupId>org.springframework</groupId>
     76             <artifactId>spring-aop</artifactId>
     77             <version>${spring.version}</version>
     78         </dependency>
     79 
     80         <dependency>
     81             <groupId>org.springframework</groupId>
     82             <artifactId>spring-context-support</artifactId>
     83             <version>${spring.version}</version>
     84         </dependency>
     85 
     86         <dependency>
     87             <groupId>org.springframework</groupId>
     88             <artifactId>spring-test</artifactId>
     89             <version>${spring.version}</version>
     90         </dependency>
     91         <!-- mybatis核心包 -->
     92         <dependency>
     93             <groupId>org.mybatis</groupId>
     94             <artifactId>mybatis</artifactId>
     95             <version>${mybatis.version}</version>
     96         </dependency>
     97         <!-- mybatis/spring包 -->
     98         <dependency>
     99             <groupId>org.mybatis</groupId>
    100             <artifactId>mybatis-spring</artifactId>
    101             <version>1.2.2</version>
    102         </dependency>
    103         <!-- 导入java ee jar 包 -->
    104         <dependency>
    105             <groupId>javax</groupId>
    106             <artifactId>javaee-api</artifactId>
    107             <version>7.0</version>
    108         </dependency>
    109         <!-- 导入Mysql数据库链接jar包 -->
    110         <dependency>
    111             <groupId>mysql</groupId>
    112             <artifactId>mysql-connector-java</artifactId>
    113             <version>5.1.30</version>
    114         </dependency>
    115         <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
    116         <dependency>
    117             <groupId>commons-dbcp</groupId>
    118             <artifactId>commons-dbcp</artifactId>
    119             <version>1.2.2</version>
    120         </dependency>
    121         <!-- JSTL标签类 -->
    122         <dependency>
    123             <groupId>jstl</groupId>
    124             <artifactId>jstl</artifactId>
    125             <version>1.2</version>
    126         </dependency>
    127         <!-- 日志文件管理包 -->
    128         <!-- log start -->
    129         <dependency>
    130             <groupId>log4j</groupId>
    131             <artifactId>log4j</artifactId>
    132             <version>${log4j.version}</version>
    133         </dependency>
    134 
    135 
    136         <!-- 格式化对象,方便输出日志 -->
    137         <dependency>
    138             <groupId>com.alibaba</groupId>
    139             <artifactId>fastjson</artifactId>
    140             <version>1.1.41</version>
    141         </dependency>
    142 
    143 
    144         <dependency>
    145             <groupId>org.slf4j</groupId>
    146             <artifactId>slf4j-api</artifactId>
    147             <version>${slf4j.version}</version>
    148         </dependency>
    149 
    150         <dependency>
    151             <groupId>org.slf4j</groupId>
    152             <artifactId>slf4j-log4j12</artifactId>
    153             <version>${slf4j.version}</version>
    154         </dependency>
    155         <!-- log end -->
    156         <!-- 映入JSON -->
    157         <dependency>
    158             <groupId>org.codehaus.jackson</groupId>
    159             <artifactId>jackson-mapper-asl</artifactId>
    160             <version>1.9.13</version>
    161         </dependency>
    162         <!-- 上传组件包 -->
    163         <dependency>
    164             <groupId>commons-fileupload</groupId>
    165             <artifactId>commons-fileupload</artifactId>
    166             <version>1.3.1</version>
    167         </dependency>
    168         <dependency>
    169             <groupId>commons-io</groupId>
    170             <artifactId>commons-io</artifactId>
    171             <version>2.4</version>
    172         </dependency>
    173         <dependency>
    174             <groupId>commons-codec</groupId>
    175             <artifactId>commons-codec</artifactId>
    176             <version>1.9</version>
    177         </dependency>
    178 
    179     </dependencies>
    180     <build>
    181         <finalName>HelloWorld</finalName>
    182         <plugins>
    183             <plugin>
    184                 <groupId>org.apache.maven.plugins</groupId>
    185                 <artifactId>maven-compiler-plugin</artifactId>
    186                 <version>2.3.2</version>
    187                 <configuration>
    188                     <source>1.8</source>
    189                     <target>1.8</target>
    190                 </configuration>
    191             </plugin>
    192         </plugins>
    193     </build>
    194 </project>
    View Code

      PS:修改完 pom.xml 后,建议先 Maven Update 一下,将需要的包文件下载下来,

      对应 eclipse 中也可以查看到下载后的 jar 包文件,路径也在其中可修改,默认在 文档目录下的 .m2 文件夹,建议不要修改;

      

      web.xml 了,web 项目主配置文件

     1 <?xml version="1.0" encoding="UTF-8"?>  
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     3     xmlns="http://java.sun.com/xml/ns/javaee"  
     4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
     5     version="3.0">  
     6     
     7     <display-name>Archetype Created Web Application</display-name>
     8 
     9     <!-- Spring和mybatis的配置文件 -->
    10     <context-param>
    11         <param-name>contextConfigLocation</param-name>
    12         <param-value>classpath:spring-mybatis.xml</param-value>
    13     </context-param>
    14 
    15     <!-- 编码过滤器 -->
    16     <filter>
    17         <filter-name>characterEncodingFilter</filter-name>
    18         <filter-class>org.springframework.web.filter.CharacterEncodingFilter
    19         </filter-class>
    20         <async-supported>true</async-supported>
    21         <init-param>
    22             <param-name>encoding</param-name>
    23             <param-value>UTF-8</param-value>
    24         </init-param>
    25     </filter>
    26     
    27     <filter-mapping>
    28         <filter-name>characterEncodingFilter</filter-name>
    29         <url-pattern>/*</url-pattern>
    30     </filter-mapping>
    31 
    32     <!-- Spring监听器 -->
    33     <listener>
    34         <listener-class>org.springframework.web.context.ContextLoaderListener
    35         </listener-class>
    36     </listener>
    37     <!-- 防止Spring内存溢出监听器 -->
    38     <listener>
    39         <listener-class>org.springframework.web.util.IntrospectorCleanupListener
    40         </listener-class>
    41     </listener>
    42 
    43     <!-- Spring MVC servlet -->
    44     <servlet>
    45         <servlet-name>SpringMVC</servlet-name>
    46         <servlet-class>org.springframework.web.servlet.DispatcherServlet
    47         </servlet-class>
    48         <init-param>
    49             <param-name>contextConfigLocation</param-name>
    50             <param-value>classpath:spring-mvc.xml</param-value>
    51         </init-param>
    52         <load-on-startup>1</load-on-startup>
    53         <async-supported>true</async-supported>
    54     </servlet>
    55 
    56     <servlet-mapping>
    57         <servlet-name>SpringMVC</servlet-name>
    58         <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->
    59         <url-pattern>/</url-pattern>
    60     </servlet-mapping>
    61 
    62     <welcome-file-list>
    63         <welcome-file>/index.jsp</welcome-file>
    64     </welcome-file-list>
    65 
    66 </web-app>  
    View Code

      PS:配置项目与 springmvc 的依赖关系,就是本项目采用 springmvc 的入口配置;

      当 web 项目启动时,会根据配置文件下的节点信息找到对应的配置文件完成 springmvc 的核心功能;

      仔细看节点,会找 spring-mvc、spring-mybatis 两个 xml 文件;

      spring-mvc.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
     4     xmlns:context="http://www.springframework.org/schema/context"
     5     xmlns:mvc="http://www.springframework.org/schema/mvc"
     6     xsi:schemaLocation="http://www.springframework.org/schema/beans    
     7                         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
     8                         http://www.springframework.org/schema/context    
     9                         http://www.springframework.org/schema/context/spring-context-3.1.xsd    
    10                         http://www.springframework.org/schema/mvc    
    11                         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    12                         
    13     <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
    14     <context:component-scan base-package="com.helloworld.controller" />
    15     <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
    16     <bean id="mappingJacksonHttpMessageConverter"
    17         class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    18         <property name="supportedMediaTypes">
    19             <list>
    20                 <value>text/html;charset=UTF-8</value>
    21             </list>
    22         </property>
    23     </bean>
    24     <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
    25     <bean
    26         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    27         <property name="messageConverters">
    28             <list>
    29                 <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 -->
    30             </list>
    31         </property>
    32     </bean>
    33     <!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
    34     <bean
    35         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    36         <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
    37         <property name="prefix" value="/WEB-INF/" />
    38         <property name="suffix" value=".jsp" />
    39     </bean>
    40           
    41     <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
    42     <bean id="multipartResolver"
    43         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    44         <!-- 默认编码 -->
    45         <property name="defaultEncoding" value="utf-8" />
    46         <!-- 文件大小最大值 -->
    47         <property name="maxUploadSize" value="10485760000" />
    48         <!-- 内存中的最大值 -->
    49         <property name="maxInMemorySize" value="40960" />
    50     </bean>
    51     
    52     <!-- 
    53     <mvc:annotation-driven>  
    54             <mvc:message-converters>  
    55                 <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">  
    56                     <property name="objectMapper">  
    57                         <bean class="com.fasterxml.jackson.databind.ObjectMapper">  
    58                             <property name="dateFormat">  
    59                                 <bean class="java.text.SimpleDateFormat">  
    60                                     <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />  
    61                                 </bean>  
    62                             </property>  
    63                         </bean>  
    64                     </property>  
    65                 </bean>  
    66             </mvc:message-converters>  
    67         </mvc:annotation-driven>  
    68       -->
    69       
    70       <!-- 在实际开发中通常都需配置 mvc:annotation-driven标签,这个标签是开启注解 -->  
    71       <mvc:annotation-driven></mvc:annotation-driven>  
    72        <!-- 拦截器 -->  
    73        <mvc:interceptors>  
    74             <!-- 多个拦截器,顺序执行 -->  
    75             <mvc:interceptor>  
    76                 <mvc:mapping path="/**"/>  
    77                 <bean class="com.helloworld.controller.BaseController"></bean>  
    78             </mvc:interceptor>
    79       </mvc:interceptors> 
    80 </beans>
    View Code

      PS:配置 springmvc 的基本项,核心就是这个包扫描,

      当 web 项目时会找到  base-package="com.macrobotinc.controller" 下的所有控制器;

      

      spring-mybatis.xml

     1 <?xml version="1.0" encoding="UTF-8"?>  
     2 <beans xmlns="http://www.springframework.org/schema/beans"  
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
     4     xmlns:context="http://www.springframework.org/schema/context"  
     5     xmlns:mvc="http://www.springframework.org/schema/mvc"  
     6     xsi:schemaLocation="http://www.springframework.org/schema/beans    
     7                         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
     8                         http://www.springframework.org/schema/context    
     9                         http://www.springframework.org/schema/context/spring-context-3.1.xsd    
    10                         http://www.springframework.org/schema/mvc    
    11                         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">  
    12     <!-- 自动扫描 -->  
    13     <context:component-scan base-package="com.helloworld.service" />  
    14         
    15     <!-- 引入配置文件 -->  
    16     <bean id="propertyConfigurer"  
    17         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    18         <property name="location" value="classpath:jdbc.properties" />  
    19     </bean>  
    20   
    21     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
    22         destroy-method="close">  
    23         <property name="driverClassName" value="${driver}" />  
    24         <property name="url" value="${url}" />  
    25         <property name="username" value="${username}" />  
    26         <property name="password" value="${password}" />  
    27         <!-- 初始化连接大小 -->  
    28         <property name="initialSize" value="${initialSize}"></property>  
    29         <!-- 连接池最大数量 -->  
    30         <property name="maxActive" value="${maxActive}"></property>  
    31         <!-- 连接池最大空闲 -->  
    32         <property name="maxIdle" value="${maxIdle}"></property>  
    33         <!-- 连接池最小空闲 -->  
    34         <property name="minIdle" value="${minIdle}"></property>  
    35         <!-- 获取连接最大等待时间 -->  
    36         <property name="maxWait" value="${maxWait}"></property>  
    37     </bean>  
    38   
    39     <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->  
    40     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
    41         <property name="dataSource" ref="dataSource" />  
    42         <!-- 自动扫描mapping.xml文件 -->  
    43         <property name="mapperLocations" value="classpath:com/helloworld/mapping/*.xml"></property>  
    44     </bean>  
    45   
    46     <!-- DAO接口所在包名,Spring会自动查找其下的类 -->  
    47     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
    48         <property name="basePackage" value="com.helloworld.dao" />  
    49         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>  
    50     </bean>  
    51   
    52     <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->  
    53     <bean id="transactionManager"  
    54         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
    55         <property name="dataSource" ref="dataSource" />  
    56     </bean>  
    57   
    58 </beans> 
    View Code

      PS:同上,找到 base-package="com.helloworld.service" 下的所有数据库操作接口;

      意思我懂,但是描述不出来;

      jdbc.properties

     1 driver=com.mysql.jdbc.Driver
     2 url=jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8
     3 username=root
     4 password=111111
     5 #定义初始连接数  
     6 initialSize=1
     7 #定义最大连接数  
     8 maxActive=20
     9 #定义最大空闲  
    10 maxIdle=20
    11 #定义最小空闲  
    12 minIdle=1
    13 #定义最长等待时间  
    14 maxWait=60000
    View Code

      log4j.properties

     1 ### set log levels ###
     2 #log4j.rootLogger = debug , stdout , D , E
     3 log4j.rootLogger = debug , stdout , D
     4 
     5 ###  output to the console ###
     6 log4j.appender.stdout = org.apache.log4j.ConsoleAppender
     7 log4j.appender.stdout.Target = System.out
     8 log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
     9 #log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
    10 log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
    11 
    12 ### Output to the log file ###
    13 log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    14 log4j.appender.D.File = ${springmvc.root}/WEB-INF/logs/log.log
    15 log4j.appender.D.Append = true
    16 log4j.appender.D.Threshold = DEBUG 
    17 log4j.appender.D.layout = org.apache.log4j.PatternLayout
    18 log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
    19 
    20 ### Save exception information to separate file ###
    21 log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    22 log4j.appender.D.File = ${springmvc.root}/WEB-INF/logs/error.log 
    23 log4j.appender.D.Append = true
    24 log4j.appender.D.Threshold = ERROR 
    25 log4j.appender.D.layout = org.apache.log4j.PatternLayout
    26 log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
    27 
    28 log4j.logger.com.macrobotinc.dao=debug
    View Code

      这个时候基本的配置已经有了,和 .NET MVC 比起来配置确实很花时间,

      但是一套会自己部署了以后,以后就知道了,其实也很简单。

  • 相关阅读:
    Asp.Net MVC 实现将Easy-UI展示数据下载为Excel 文件
    Asp.Net MVC 文件管理Demo(文件展示,上传,下载,压缩,文件重命名等)
    摄影测量-后方交会与前方交会,相对定向与绝对定向,光束法
    读取超大Excel(39万行数据)
    js 数组 remove
    VM不能连入局域网
    EPANET中读取INPUT文件的函数文件——INPUT3.C
    EPANET中读取INPUT文件的函数文件——INPUT1.C/INPUT2.C/INPUT3.C
    EPANET源码中用到的几个简单C语言函数介绍三
    EPANET中的哈希文件——hash.c
  • 原文地址:https://www.cnblogs.com/loongsoft/p/7551527.html
Copyright © 2020-2023  润新知