[Java] Maven 建立 Spring MVC 工程

GIT: https://github.com/yangyxd/Maven.SpringMVC.Web

1. 建立 WebApp 工程

下一步:

下一步: 选择 maven-archetype-webapp

下一步,设置 Group ID, Artifact Id 以及 package 包名。

点击 Finish 完成。

可以看到有一些错误。

解决办法:

1. 在 Project Explorer 中的项目上点击右键,在弹出菜单上点击 "Properties" , 在属性对话框中,定位到 Java Build Path 中,切换到 Source 页,删除不需要项。

2. 修改 pom.xml 文件

<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.0</modelVersion>
  <groupId>yangyxd</groupId>
  <artifactId>maven.springmvc.web</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>maven.springmvc.web Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <!-- 定义依赖库的版本变量 -->
  <properties>
      <commons-lang.version>2.6</commons-lang.version>
      <slf4j.version>1.7.6</slf4j.version>
      <!-- spring 版本号 -->
      <spring.version>4.3.3.RELEASE</spring.version>
  </properties>

  <!-- 依赖库定义 -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>${commons-lang.version}</version>
    </dependency>

    <!-- 防止 jsp 报错  -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>

    <!-- JSTL 定制标签库  -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>    

    <!-- Jakarta Taglibs JSP定制标签库  -->
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>

    <!-- 各种集合类和集合工具类 -->
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.1</version>
    </dependency>

    <!-- Spring Begin -->

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
        <type>jar</type>
        <scope>compile</scope>
    </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-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>${spring.version}</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</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-oxm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-messaging</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jms</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-test</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <!-- Spring End -->

    <!-- Maven Compiler Plugins -->
    <!--
    <dependency>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.5.1</version>
      <type>maven-plugin</type>
    </dependency>
     -->
  </dependencies>    

  <build>
      <plugins>

      <!-- maven 编译插件 -->
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>

            <!-- 源代码使用的开发版本 -->
            <source>1.8</source>
            <!-- 需要生成的目标class文件的编译版本 -->
            <target>1.8</target>
            <!--
            一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行
            (对于低版本目标jdk,源代码中需要没有使用低版本jdk中不支持的语法),会存在target不同于
            source的情况
            -->
            <!-- 默认字符集编码 -->
            <encoding>UTF-8</encoding>

            <!-- 这下面的是可选项 -->
            <meminitial>128m</meminitial>
            <maxmem>512m</maxmem>
            <fork>true</fork> <!-- fork is enable,用于明确表示编译版本配置的可用 -->
            <compilerVersion>1.3</compilerVersion>

            <!-- 这个选项用来传递编译器自身不包含但是却支持的参数选项 -->
            <compilerArgument>-verbose -bootclasspath ${java.home}\lib\rt.jar</compilerArgument>

        </configuration>
      </plugin>
      </plugins>

      <!-- 最终的项目名称 -->
    <finalName>maven.springmvc.web</finalName>
  </build>
</project>

3. 修改 web.xml ,加入 spring servlet 。

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <!-- Spring MVC Config Begin -->

  <servlet>
    <servlet-name>springServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/configs/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>springServlet</servlet-name>
    <!-- mvc-dispathcer 拦截 html 访问请求 -->
    <!--
    <url-pattern>*.html</url-pattern>
    -->
    <!-- mvc-dispathcer 拦截所有的请求 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!-- Spring MVC Config End -->

  <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>default.html</welcome-file>
      <welcome-file>default.htm</welcome-file>
      <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

</web-app>

在 WEB-INF 下新建 configs 目录,建立 spring-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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-3.0.xsd
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" >

    <!--开启注解处理器-->
    <context:annotation-config /> 

    <!-- 开启组件扫描 -->
    <!-- 只搜索 @Controller 标注的类,不搜索其它标注的类 -->
    <!-- base-package: 我们将来扫描的包名(后面会建立) -->
    <context:component-scan base-package="yxd.maven.springmvc.web">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>   

    <!-- 让dispertcher servlet 启用基于 annotation 的 HandlerMapping -->
    <mvc:annotation-driven />

    <!-- 指定使用 JstlView 来获取 View -->
    <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="3">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="contentType" value="text/html"/>
        <!-- spring mvc 指定存放 jsp 的目录 -->
        <property name="prefix" value="/WEB-INF/jsps/"/>
        <!-- 后缀名为 .jsp -->
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

在 WEB-INF 下建立文件夹 jsps,用来存放 spring mvc 中用来显示 view 的 jsp文件。

现在我们的项目变成了这样:

在我们的项目上右键,在弹出菜单中点击 "Run As" -> "Maven install",让 Maven 来初始化所有依赖库,这个时候如果某个库不存在,会自动下载。

如果执行成功,会在 Console 显示如下信息:

如果失败, 请确认环境变量(%JAVA_HOME%)设置是否正确,然后检查Eclipse设置("Preferences"\"Java"\"Installed JREs")与项目Java Build Path 中 Libraries 里面所指定的 JRE System Library 是不是一致,参考maven环境建立的文章。

如果提示下载失败,可以在 maven 的配置中指定镜像站。

如果出现类似下面的错误,一般是maven-compiler-plugin配置有问题。

如果出现类似下面的错误,检测环境变量,这种一般就是上面说的 jre 不一致造成。

[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project maven.demo: Compilation failure
[ERROR] Unable to locate the Javac Compiler in:
[ERROR] C:\Program Files\Java\jre1.8.0_101\..\lib\tools.jar
[ERROR] Please ensure you are using JDK 1.4 or above and
[ERROR] not a JRE (the com.sun.tools.javac.Main class is required).
[ERROR] In most cases you can change the location of your Java
[ERROR] installation by setting the JAVA_HOME environment variable.
[ERROR] -> [Help 1]

如果出现类似下面的错误,直接将manen仓库中的 (.m2\repository\) 下对应目录删除(比如我直接将 .m2\repository\org 目录删除了),用 Alt + F5,更新工程 (Manen -> Update Project),然后重新 "Run As" -> "Maven install" 。

[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project maven.demo: Compilation failure
[ERROR] Failure executing javac, but could not parse the error:
[ERROR] 错误: 读取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\springframework\spring-context-support\4.3.3.RELEASE\spring-context-support-4.3.3.RELEASE.jar时出错; invalid LOC header (bad signature)
[ERROR] 错误: 读取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\springframework\spring-aspects\4.3.3.RELEASE\spring-aspects-4.3.3.RELEASE.jar时出错; invalid LOC header (bad signature)
[ERROR] 错误: 读取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\aspectj\aspectjweaver\1.8.9\aspectjweaver-1.8.9.jar时出错; invalid LOC header (bad signature)
[ERROR] 错误: 读取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\springframework\spring-oxm\4.3.3.RELEASE\spring-oxm-4.3.3.RELEASE.jar时出错; invalid LOC header (bad signature)
[ERROR] 错误: 读取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\springframework\spring-jms\4.3.3.RELEASE\spring-jms-4.3.3.RELEASE.jar时出错; invalid LOC header (bad signature)
[ERROR] 错误: 读取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\springframework\spring-messaging\4.3.3.RELEASE\spring-messaging-4.3.3.RELEASE.jar时出错; invalid CEN header (bad signature)
[ERROR] 6 个错误
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

在 "Maven install" 成功后,我们可以试着启动一下 Tomcat 服务器。

如果出现类似下面的错误,请检查 <url-pattern> 是否少了 "/"。如果都正常,还是会出错,直接重新建立一个项目吧。

4. 建立第一个 Spring MVC 控制器

package yxd.maven.springmvc.web;

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

@Controller
public class MyFirstSpringMvcController {

    @RequestMapping("mvc")
    public String HelloSpringMvc() {
        return "home"; // 返回 jsp 文件名称
    }
}

在 jsps 目录中新建一个 home.jsp 文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
HelloSpringMvc
</body>
</html>

重启 Tomcat 服务器,在浏览器中输入 http://localhost:8080/maven.springmvc.web/mvc ,可以看到成功的显示了 home.jsp 的内容。

感谢: 上上千up、小布布、小不点

时间: 2024-10-10 18:23:44

[Java] Maven 建立 Spring MVC 工程的相关文章

使用maven,spring mvc框架结构 java jq等技术开发的

http://zhidao.baidu.com/link?url=zPPLZ8yo-UUaclBCxVwzmh8mlfPIxeM7Jl-Xb7gmI5tz8lm8tN_DDx7PrGAF-cfOPy_EGG-VFDTaCTIAQvtu0a 使用maven,spring mvc框架结构 java jq等技术开发的,码迷,mamicode.com

使用IDEA创建Spring mvc工程及简要分析

需要使用IDEA ultimate版本,才会有Web支持. 0.创建工程 File->New->Project- 一路向下,最后创建一个tomcat server,mac上下载解压即可,非常简单,不详细描述. 完成后,idea会自动下载Spring相关lib,同时创建一个示例工程,下面看看idea到底自动做了哪些配置.对了解整个工程结构,web服务和框架的启动流程非常有用. 1.maven 根据配置的lib版本,会配置一个maven配置文件pom.xml,工程使用maven来进行项目管理,我们

如何在Spring MVC工程中进行单元测试

直接以代码方式演示如何在Spring MVC工程中进行单元测试: package net.chinaedu.projects.dubhe; import java.util.List; import net.chinaedu.projects.dubhe.publisher.IPublisherService; import net.chinaedu.projects.venus.domain.Publisher; import org.junit.Test; import org.junit.

java 使用框架Spring MVC批量上传图片

java 使用框架Spring MVC批量上传图片 运行环境:jdk1.8.0_17+tomcat 8 + spring:4.3.4+mybatis:3.2.7+ eclipse ide 2018+maven管理 最近写项目时候用到上传图片文件等功能之前写过没有总结,以及记录等,今天总结下写的批量上传图片功能 前段只需要把所有的选择的图片提交上来即可,后台会逐个处理,并且会在服务器或者当前电脑自己新建一个存放图片的文件夹,在application.properties配置里面你可以指定你所存放图

maven新建Spring MVC + MyBatis + Oracle的Web项目中pom.xml文件

<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&

maven建spring mvc 项目访问不到uri 解决:

用maven 测试一下spring+springmvc+hibernate时,springmvc按以前本地jar建的web项目测试来配置,可怎么也访问不了uri,新建了几个项目,一直找不到,或报错! 搞了大半天,终于解决了!主要是mvc的配置如下: 其他配置照旧! <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sche

SI 系列入门 之 手把手构建 Spring MVC 工程

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. SI 前文有述,Spring MVC + MyBatis 的简称,因为 Spring MVC 内部已有注入功能,故不考虑其是否是利用了 Sprin

eclipse使用maven搭建spring mvc

1. 环境配置 a)         Java 1.7 b)         Eclipse luna c)         Maven3.2.5 d)         Spring 4.1.4 2. 创建maven工程 a)         打开eclipse,file->new->project->Maven->Maven Project b)         下一步 c)         选择创建的工程为webapp,下一步 d)         填写项目的group id和

Eclipse Maven构建Spring MVC项目

工作中项目开发使用Maven管理项目的构建.打包.编译,框架采用的是Spring MVC框架,并且实现了多模块.多项目的管理.自己也简单的参与了架构的设计.对于初学者来说,使用Maven构建项目并不是一件容易的事情,本文的目的就是引导新手使用maven构建springmvc项目. 准本工作 1.Eclipse 尽量选用较高版本的Eclispse,因为eclipse对于maven的支持比较晚. 2.Maven 安装maven,至于其安装方式这里也就不再多提了,请自行google. 3.Eclips