本教程中,我们将教给大家如何创建一个基于Spring MVC 的 Maven Web Project。

用到的技术/工具:

1、Eclipse 4.9

2、Maven 3.6.2

3、Tomcat 8.5.34

4、JDK 1.8

5、Spring 4.3.14.RELEASE

2.1   新建Maven Project

打开Eclipse IDE,新建Maven Project,步骤:File->Project->Maven->Maven Project

在此不要勾选“Create a simple project(skip archetype selection)”,勾选了将会跳过模板选择,框架结构就需要自己手动去建了,不要勾选。接下来选择一下项目工程的路径

我们给项目命名“maven_webapp”,如果这个目录不存在,可以自己创建一个,选择这个文件目录

选择模板“maven-archetype-webapp”:

配置:Group Id一般指项目所属的组织机构,Artifact Id指项目名称,Package会根据前面的两项自动生成,接着下一步完成,一个Maven的Web项目就创建完毕了。

创建完成后,可以看一下项目的目录结构:

上图发现了两个问题:

1、  项目目录出现了错误红叉

2、  而且目录结构缺少java和test的结构目录

原因:打开index.jsp文件后,鼠标移到左边的红叉上,提示没有找到javax.servlet.http.HttpServlet ,这是没有Java Build Path 中没有引入Tomcat Server的原因。

2.2    添加Tomcat Server

两种方式:

1、右键->项目名称->Build Path->Configure Build Path->Java Build Path

2、菜单:Project->Properties->Java Build Path

Libraries中并没有Tomcat,所以需要“Add Library...”来添加

现在Libraries中已经添加了Tomcat。再来看一下项目的结构目录中不但红叉的错误消失了,而且增加了java和test的结构目录,让项目结构完整了。

2.3    配置pom.xml

引入依赖包:spring-web、spring-webmvc、commons-logging、servlet、jsp.jstl、taglibs

<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>com.gg</groupId>
<artifactId>maven_webapp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>maven_webapp Maven Webapp</name>
<url>http://maven.apache.org</url> <!-- 公共属性,方便控制,可通过类似于表达式EL一样引用 -->
<properties>
<spring.version>4.3.14.RELEASE</spring.version>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency> <!-- 搭建Springmvc框架只需要引用spring-web,spring-webmvc两个包即可Maven会自动引用他们的依赖包 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<!-- Maven中通过类似与EL表达式一样可以引用上方配置公共属性 -->
<version>${spring.version}</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency> <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency> <dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency> <dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency> <dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency> </dependencies>
<build>
<finalName>maven_webapp</finalName>
</build>
</project>

2.4    配置web.xml

设置spring-mvc的配置文件路径/WEB-INF/mvc-dispatcher-servlet.xml,mvc-dispatcher-servlet.xml文件可以在后面创建。

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>Archetype Created Web Application</display-name>
<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param>
<!-- 配置springmvc配置文件的加载位置,如果不配置的话默认加载WEB-INF目录下的
[servlet-name]-servlet.xml
这里没配置的话将加载目录下的springDispatcherServlet-servlet.xml
-->
<param-name>contextConfigLocation</param-name>
<!-- 这里需要注意项目中的classpath并不是/src目录下,而是存放编译后的代码的地方,
通常默认为/classes目录下
-->
<!--<param-value>classpath:springmvc-servlet.xml</param-value>-->
<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</init-param> <load-on-startup>1</load-on-startup>
</servlet> <!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<!-- 配置DispatcherServlet需要拦截配置,共有 *.[xx], /*, /, /xx/* 几种方式
这里我们配置为/ 即为拦截所有的资源,后面我们会在springmvc配置文件中单独配置
静态资源让其不拦截
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

2.5   spring-mvc配置

根据上一步web.xml中的spring-mvc的文件路径配置,需要在WEB-INF目录下手动创建一个名字为mvc-dispatcher-servlet.xml的文件,添加配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
> <!-- 开启springmvc的注解 下面就不需要手动注册注解类型的处理器映射器与处理器适配器 -->
<mvc:annotation-driven/> <!-- 扫描注解,配置到需要扫描的包即可 -->
<context:component-scan base-package="com.gg.maven_webapp"></context:component-scan> <!-- 设置静态资源路径,这样就不会被前端控制器拦截处理 -->
<mvc:resources location="/resources/" mapping="/resources/**"></mvc:resources> <!-- 注册视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- jsp中会使用到jstl,所以设置为jstlView -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <!-- 视图路径前缀 -->
<property name="prefix" value="/resources/jsp/" /> <!-- 视图后缀 -->
<property name="suffix" value=".jsp" />
</bean>
</beans>

2.6    创建spring mvc的控制器类

创建一个spring mcv控制器类BaseController:

源代码:BaseController.java

package com.gg.maven_webapp;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView;
import org.springframework.ui.Model;
@Controller
@RequestMapping("/say")
public class BaseController {
@RequestMapping("/hello")
public String hello(ModelAndView modelAndView,Model model,HttpServletRequest request) {
String context = " say hello"; modelAndView.addObject("modelview", "modelview"+context);
model.addAttribute("model", "model"+context);
request.setAttribute("request", "request"+context); System.out.println(context);
return "result";
}
}

代码中的return “result”表示对应的视图result.jsp文件,根据mvc-dispatcher-servlet.xml文件中的配置,视图的文件放置在/webapp/resources/jsp/,对应文件result.jsp。

稍后通过  http://localhost:8080/maven_webapp/say/hello  访问。

2.7    创建jsp视图文件

在对应目录下创建result.jsp视图文件

html源代码:

<html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <body>
<h2>Hello World!</h2>
<body>
<p>modelAndView结果${modelview}</p>
<p>model结果${model }</p>
<p>request结果${request }</p>
</body>
</body>
</html>

2.8    Tomcat运行项目

如果项目中已经添加了Tomcat Server的话,可以 右键->Add And Remove…,将项目添加到启动配置中。

启动运行tomcat,打开浏览器访问:http://127.0.0.1:8080/maven_webapp/say/hello

第二章 Maven 构建 Java Web项目的更多相关文章

  1. 使用IntelliJ IDEA和Maven构建Java web项目并打包部署

    爱编程爱分享,原创文章,转载请注明出处,谢谢! http://www.cnblogs.com/fozero/p/6120375.html 一.背景 现在越来越多的人使用IntelliJ IDEA工具进 ...

  2. Myeclipse 10 Maven 构建 Java Web 项目

    主要介绍如何使用 Myeclipse 10 构建 Maven Web 项目,关于 Maven 的介绍就略过了. 工具/原料 myeclipse apache-maven-3.1.0 方法/步骤 1 下 ...

  3. 使用Maven构建Java Web项目时,关于jsp中引入js、css文件路径问题。

    今天有点闲,自己动手搭建一个Java Web项目,遇到jsp中引入js.css文件时路径不正确的问题,于是在网上查阅了很多资料,最终都无法解决问题,于是,上stackoverflow找到了解决方法,这 ...

  4. Eclipse的maven构建一个web项目,以构建SpringMVC项目为例

    http://www.cnblogs.com/javaTest/archive/2012/04/28/2589574.html springmvc demo实例教程源代码下载:http://zuida ...

  5. [原]Jenkins(七)---jenkins项目编译测试发布由maven构建的web项目

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...

  6. 解决使用maven的java web项目导入后出现的有关问题 -cannot be read or is not a valid ZIP file

    解决使用maven的java web项目导入后出现的有关问题 -cannot be read or is not a valid ZIP file   错误问题:虽然查找repository目录下是有 ...

  7. 使用maven构建一个web项目

                          使用maven构建一个web项目     首先建立一个maven项目(关于环境配置上节有详细过程): 1)-->右键new,-->project ...

  8. maven 构建一个web项目

    maven已经大型的Java项目的管理工具,其功能非常强大,这里简单总结一下maven构建web项目的过程.本文介绍的是集成环境下的maven构建web项目. 一.准备 1.安装maven. 2.把m ...

  9. IntelliJ IDEA + Maven创建Java Web项目

    1. Maven简介 相对于传统的项目,Maven 下管理和构建的项目真的非常好用和简单,所以这里也强调下,尽量使用此类工具进行项目构建, 它可以管理项目的整个生命周期. 可以通过其命令做所有相关的工 ...

随机推荐

  1. C#8.0接口默认实现特性

    文章:[译]C#8.0中一个使接口更加灵活的新特性-默认接口实现 原文示例代码: public interface IBook { void AddBook(string bookName, stri ...

  2. 目标检测论文解读3——Fast R-CNN

    背景 deep ConvNet兴起,VGG16应用在图像分类任务上表现良好,本文用VGG16来解决检测任务.SPP NET存在CNN层不能fine tuning的缺点,且之前的方法训练都是分为多个阶段 ...

  3. 关系型数据库 RDS(Relational Database Service),知识点

    资料 网址 官方介绍 https://help.aliyun.com/document_detail/26092.html?spm=5176.2020520104.0.0.2b4b1450yqd1gg ...

  4. 【java异常】Building workspace has encountered a problem. Error

    可能是workspace设置错误,检查一下 或者把项目重新下一下,或者重新maven导入

  5. 【oracle】select into from 和 insert into select 的用法和区别

    select into from 和 insert into select都是用来复制表,两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建.insert ...

  6. springCloud学习1

    传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N个子系统,多个子系 ...

  7. 知识点6 C++数据类型转换 string

    一.int转string 1.c++11标准增加了全局函数std::to_string: string to_string (int val); string to_string (long val) ...

  8. zzulioj - 2617 体检

    题目链接: http://acm.zzuli.edu.cn/problem.php?id=2617 题目描述: VX玩了这么多游戏以后,感觉自己身体素质和智商都有所下降,所以决定去医院体检一下.已知V ...

  9. Linux提高工作效率的命令

    find ./ -name 'laun*'|xargs grep 8881 在laun开头的文件内查找8881 find ./ -name 'laun*' find . -type f -mtime ...

  10. vue中异步请求渲染问题(swiper不轮播)(在开发过程中遇到过什么问题、踩过的坑)

    问题描述: 用vue封装一个swiper组件的时候,发现轮播图不能轮播了. 原因: 异步请求的时间远大于生命周期执行的时间,mounted初始化DOM时数据未返回,渲染数据是空数组,导致轮播图的容器层 ...