Java Spring MVC入门(四)使用Maven创建项目

  使用普通方式创建项目的问题                                        

   前几篇文章中,我们使用普通方法在eclispe上创建了项目,并成功的运行了helloworld文件,那么普通方法创建的项目在多人协作开发项目的时候,可能会有下面问题

   1、多人协作时候各成员所使用的jar包版本可能不一致,比如:张三下载的版本是3.2,而李四下载的版本是4.2 ,服务器上的版本是4.3,这样可能导致在本地运行正常,而在服务器上运行却有可能出现问题。

   2、需要从网上去搜索自己所需要的依赖包,如果想要团队协作保证各个成员的jar包保持一致,需要来回的拷贝jar包。

  什么是Maven                                                          

  普通方式创建项目有上面所说的不足之处,还好我们有Maven可以解决上面的问题,那么什么Maven? (官网: http://maven.apache.org/index.html)

在这里我只能简单的介绍,让大家有个感性上的认识。

  Maven是一个管理项目的工具,可以方便的管理项目的jar包依赖、测试、编译、打包、发布。

  1、管理jar包依赖

    这个功能可能是Maven最突出的特点,大家不用再去网上单独下载jar包,而是在pom.xml里配置jar包的依赖关系,具体看下面例子:

<dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-aopartifactId>
      <version>3.2.4.RELEASEversion>
dependency>

<dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-coreartifactId>
      <version>3.2.4.RELEASEversion>
dependency>

   大致解释下几个配置项的意思:

  groupId:所述的项目名称,由于有的项目并不是一个jar包构成的,而是由很多的jar包组成的。因此这个groupId就是整个项目的名称。

  artifactId:包的名称。

  version:版本号。

  packaging:包的类型,一般都是jar,也可以是war之类的。如果不填,默认就是jar。

  大家可以看到每个jar包配置项内都有版本号,这样团队开发时候大家只要保证pom.xml一致,那么Maven就会自动下载pom.xml配置项内的包,这样既不用自己下载,又保证了团队内各个成员下载jar包的版本都一样。

  2、其他功能

    Maven除了管理依赖包之外,还可以编译、测试、打包项目,具体命令如下:   

mvn archetype:create 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvn jetty:run 启动jetty服务
mvn tomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类

    如果想要更加深入了解Maven请看:

   maven学习(上)- 基本入门用法 

    maven学习(中)- 私服nexus搭建 

    maven学习(下)利用Profile构建不同环境的部署包

 

  Eclipse建立Maven项目                                           

  1、打开eclispe 选择Fire-> New -> Maven Project Java Spring MVC入门(四)使用Maven创建项目_第1张图片
 
2、在弹框内填写选项
Java Spring MVC入门(四)使用Maven创建项目_第2张图片
Java Spring MVC入门(四)使用Maven创建项目_第3张图片
 

GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。

ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

Version是版本号,这个自己写了。

Java Spring MVC入门(四)使用Maven创建项目_第4张图片
填写完成点击“Finish”。项目建好之后如下:
Java Spring MVC入门(四)使用Maven创建项目_第5张图片
到这里项目已经基本成型,但是还没有完成,还要稍做配置,我们首先右击项目名->Build Path ->Configure Build Path..
Java Spring MVC入门(四)使用Maven创建项目_第6张图片
 
Java Spring MVC入门(四)使用Maven创建项目_第7张图片
把两个"missing"的项"Remove"掉,之后点"OK"。之后右击Java Resources -> New -> Source Folder
Java Spring MVC入门(四)使用Maven创建项目_第8张图片
 
新增Source Folder
Java Spring MVC入门(四)使用Maven创建项目_第9张图片
建立三个Source Folder
src/main/java
src/test/java
src/test/resources
完成之后如下:
Java Spring MVC入门(四)使用Maven创建项目_第10张图片
之后再进入Java Build Path->Libraries标签,选中 JRE System Library[J2SE-1.5],点击 Edit 
Java Spring MVC入门(四)使用Maven创建项目_第11张图片
选择下图选项:
 
Java Spring MVC入门(四)使用Maven创建项目_第12张图片
接下来还要处理下排列顺序,进入Java Build path ->Order and Export
Java Spring MVC入门(四)使用Maven创建项目_第13张图片
利用"Up" 和 "Down"将顺序调整成和上图一样。
 最后还要设置部署程序集,右键项目名->Properties->Deployment Assembly,

此处列表是,部署项目时,文件发布的路径。

 我们删除test的两项,因为test是测试使用,并不需要部署。见下图:

Java Spring MVC入门(四)使用Maven创建项目_第14张图片
 
完成之后应该是下面这样
Java Spring MVC入门(四)使用Maven创建项目_第15张图片
OK,终于完成了。

  配置文件pom.xml                                        

   主要是要配置spring框架的一些依赖包,再就是和数据库相关的包,具体内容如下:
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0modelVersion>
  <groupId>com.mavenProgroupId>
  <artifactId>demoartifactId>
  <packaging>warpackaging>
  <version>1.0version>
  <name>demo Maven Webappname>
  <url>http://maven.apache.orgurl>
  <dependencies>
      
      
      <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-aopartifactId>
        <version>3.2.4.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-coreartifactId>
        <version>3.2.4.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-contextartifactId>
        <version>3.2.4.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-context-supportartifactId>
        <version>3.2.4.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-aspectsartifactId>
        <version>3.2.4.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-ormartifactId>
        <version>3.2.4.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-jdbcartifactId>
        <version>3.2.4.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-jmsartifactId>
        <version>3.2.4.RELEASEversion>
    dependency>
    
       <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webmvcartifactId>
        <version>3.2.4.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>org.springframework.securitygroupId>
        <artifactId>spring-security-ldapartifactId>
        <version>3.2.4.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-testartifactId>
        <version>3.2.4.RELEASEversion>
        <scope>providedscope>
    dependency>
    
    <dependency>
        <groupId>com.googlecode.ehcache-spring-annotationsgroupId>
        <artifactId>ehcache-spring-annotationsartifactId>
        <version>1.2.0version>
    dependency>
    <dependency>
        <groupId>org.springframework.datagroupId>
        <artifactId>spring-data-mongodbartifactId>
        <version>1.5.4.RELEASEversion>
    dependency>
    <dependency>
        <groupId>org.springframework.datagroupId>
        <artifactId>spring-data-redisartifactId>
        <version>1.2.0.RELEASEversion>
    dependency>
    
    
    <dependency>
        <groupId>javax.servletgroupId>
        <artifactId>javax.servlet-apiartifactId>
        <version>3.0.1version>
    dependency>
    
    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>3.8.1version>
      <scope>testscope>
    dependency>
  dependencies>
  <build>
    <finalName>mavenDemofinalName>
  build>
project>

文件里有一些注释,初学者先大致了解,今后会详细介绍。

  配置文件web.xml                                           

 
xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>demodisplay-name>
    
    
    <context-param>
        <param-name>contextConfigLocationparam-name>
        
        <param-value>classpath:demo-root-servlet.xmlparam-value>
    context-param>
    
    <context-param>
        <param-name>log4jExposeWebAppRootparam-name>
        <param-value>falseparam-value>
    context-param>
    
    <filter>
        <filter-name>characterEncodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
        <init-param>
            <param-name>forceEncodingparam-name>
            <param-value>trueparam-value>
        init-param>
    filter>
    
    <filter-mapping>
        <filter-name>characterEncodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>
    
    
    <servlet>
        <servlet-name>gameLiveServletservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:demo-servlet.xmlparam-value>
        init-param>
        <load-on-startup>1load-on-startup>
    servlet>
    
    <servlet-mapping>
        <servlet-name>gameLiveServletservlet-name>
        <url-pattern>/url-pattern>
    servlet-mapping>
    
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListenerlistener-class>
    listener>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>
web-app>

注释写的有点多,大家要仔细看,这里重点说下我踩过的坑:

这里我曾经遇到一个坑,这里说出来告诉大家。
大家先看<servlet>内有个<init-param>里面也有一个<param-name>contextConfigLocationparam-name>配置
于是我自作聪明把最外层的<context-param>删除,只保留<servlet><init-param>内的配置,
结果运行时候报错说找不到classpath:demo-servlet.xml文件,此时系统会自动去找/WEB-INI/applicationContext.xml文件,
此时文件是不存在的所以也报错。 切记:如果要用classpath方式去定位配置文件,文件路径在最外层的配置一定要有,仅仅只写servlet内的配置是无法找到的。如果最外层不想写 只在servlet标签内定位spring配置文件,只能用/WEB-INI/文件名.xml这样的方式。

Spring容器加载web.xml的顺序为context-param >> listener  >> fileter  >> servlet

  Spring配置文件                                       

   在上面的web.xml配置文件中我们有两个Spring的配置文件,分别是/src/man/resources/demo-root-serlvet.xml 和/src/man/resources/demo-servlet.xml 

用classpath方式定位文件必须要放到/src/man/resources/下否则要放到/src/main/webapp/WEB-INF/ 路径下。

      /src/man/resources/demo-root-servlet.xml 文件的主要用途为包含其他子配置文件,例如数据库配置文件、AOP配置文件。

  /src/man/resources/demo-servlet.xml 文件主要是声明一些本项目用到的bean。

 /src/man/resources/demo-root-servlet.xml 内容:

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:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc" 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.2.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd 
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd" default-autowire="byName">
    <description>Spring公共配置description>
    
    
beans>

由于本次不涉及数据库内容,所以我将引入数据配置文件内容注释了。

/src/man/resources/demo-servlet.xml内容:

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:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc" 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.2.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd 
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd" default-autowire="byName">
    
    <description>demodescription>
    
    <bean id = "HelloWorld" class="com.demo.game.HelloWorld"> bean>
beans>

  Hello world                                        

   接下来我们就要写hello world 了,先在/src/main/java里建立一个包,再包内建立一个文件HelloWorld

Java Spring MVC入门(四)使用Maven创建项目_第16张图片

Java Spring MVC入门(四)使用Maven创建项目_第17张图片

HelloWorld.java内容如下:

package com.demo.game;

import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloWorld {
    @RequestMapping("/hello")
    public void index(HttpServletRequest request, HttpServletResponse response) throws IOException {
        
        response.setHeader("content-type", "text/html;charset=UTF-8");
        response.getWriter().append("hello World");

    }
}

大家看到没有demo-servlet.xml配置文件里有一句:

<bean id = "HelloWorld" class="com.demo.game.HelloWorld"> bean>

将HelloWorld注册为一个bean , 这样就让他由一个普通类变成控制器了,接下来我们启动tomcat server ,再浏览器里输入http://localhost:8080/demo/hello

Java Spring MVC入门(四)使用Maven创建项目_第18张图片

忙活了半天,hello world终于出来了,终于有点小小成就感!!!

转载于:https://www.cnblogs.com/scofi/articles/5911840.html

你可能感兴趣的:(Java Spring MVC入门(四)使用Maven创建项目)