本教程中,我们将教给大家如何创建一个基于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

最新文章

  1. three.js笔记
  2. javascript自定义滚动条插件,几行代码的事儿
  3. IDEA之web项目(maven项目)创建
  4. BZOJ1483——[HNOI2009]梦幻布丁
  5. ElasticSearch 2 (10) - 在ElasticSearch之下(深入理解Shard和Lucene Index)
  6. bfs A strange lift
  7. C#日期格式精确到毫秒以及上下午
  8. effective c++ 条款06 不想自动生成函数,就明确拒绝
  9. jsp获取一个对象和list对象
  10. JavaScript原生数组函数
  11. 【linux】 vsftpd自动
  12. shell中关于sort的-o选项
  13. django 前端模板继承显示model中使用choices的字段
  14. 2.2使用urllib的简单传输
  15. NOIp模拟赛 现实(DP 拓扑)
  16. Python图形编程探索系列-05-用控制变量构建对话程序
  17. JS--script标签注意细节
  18. 2月9日 Time and Date(Ruby基础) \n 2月10日 ,使用Proc,block对象化。
  19. 5.Javascript 原型链之原型对象、实例和构造函数三者之间的关系
  20. 修改wamp apache 默认端口

热门文章

  1. scikit-learn 中的 KMeans
  2. ELK安装过程中一些注意的地方
  3. 《always run团队》第六次作业:团队项目系统设计改进与详细设计
  4. KITTI数据集
  5. VS 代码过长自动换行
  6. opencv4.0.0+cmake编译(含contrib)
  7. 10-day03-注释
  8. [PHP] Laravel使用redis保存SESSION
  9. [PHP] Laravel 5.5 图片上传功能
  10. priority_queue(优先队列)使用方法