zoukankan      html  css  js  c++  java
  • 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 比起来配置确实很花时间,

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

  • 相关阅读:
    程序员:不要自称为码农
    SpringBoot对静态资源配置
    LeetCode 572. Subtree of Another Tree(子树)
    LeetCode 437. Path Sum III(统计路径和等于sum的路径数量)
    LeetCode 112. Path Sum(判断路径和是否等于一个数)
    LeetCode 617. Merge Two Binary Trees(归并两棵二叉树)
    LeetCode 226. Invert Binary Tree(翻转二叉树)
    Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.6 的解决办法
    linux-查询某软件的安装的目录
    WebService概念解释
  • 原文地址:https://www.cnblogs.com/loongsoft/p/7551527.html
Copyright © 2011-2022 走看看