创建Maven项目,首先得安装好Maven环境。如未安装好环境,可参考文章:Maven的安装和配置。
下面是创建的详细步骤:
1、新建项目
2、解决项目报错(没有报错则跳过此步骤)
新建了项目后,我发现项目中报了以下的错。
现解决一下。如果没有报错的话,就忽略此步骤。
解决方法:
(1)右击项目名 -> Buid Path -> Configure Build Path,
(2)选择Libraries选项卡,点击Add Library -> Server Runtime ,
(3)选择一个已建好的tomcat,没有建立tomcat的,请先配置好tomcat。
(4)点击 finish, 可看到如下截图。
点击Apply之后,正常情况下,可以看到项目的红叉已消失。
然后切换到Order and Export 选项:
点击上图的OK之后,可以看到,缺失的资源文件src/main/java和src/test/java已经有了。
注意:作为Maven项目必须包含以下4个资源文件夹,如果没有,需要手动创建。
新建资源文件夹的步骤:
4个资源文件建好之后,还需设置正确的Output folder。
3、更改配置文件pom.xml
这是Maven的主要配置文件,可以在里面配置项目所需要的jar包。
- <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.hello</groupId>
- <artifactId>HelloSpringMVC</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>HelloSpringMVC Maven Webapp</name>
- <url>http://maven.apache.org</url>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>${springVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>${springVersion}</version>
- </dependency>
- </dependencies>
- <build>
- <finalName>HelloSpringMVC</finalName>
- </build>
- <properties>
- <springVersion>4.2.3.RELEASE</springVersion>
- </properties>
- </project>
5、新建前端控制器配置文件
- <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_3_0.xsd"
- version="3.0">
- <display-name>HelloSpringMVC</display-name>
- <!-- 前端控制器 -->
- <servlet>
- <servlet-name>spring-mvc</servlet-name> <!-- 名称,真实的文件名需要在这个名字后面加上-servlet后缀 -->
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- DispatcherServlet路径,照写 -->
- <!-- 这里可以设置前端控制器的路径,如果这一步注释掉,则默认前端控制器的路径为:/WEB-INF/[servlet-name]-servlet.xml
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/configs/spring-mvc-servlet.xml</param-value> 这里配置前端控制器的路径
- </init-param>
- -->
- <load-on-startup>1</load-on-startup>
- </servlet>
- <!-- 拦截所有请求 -->
- <servlet-mapping>
- <servlet-name>spring-mvc</servlet-name> <!-- 这里的名字要和上面的servlet-name统一 -->
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- </web-app>
因为这里使用的是默认的路径,所以只需要在WEB-INF目录下创建前端控制器文件。
又因为在web.xml中配置的名称是spring-mvc,所以新建的文件名是spring-mvc-servlet。
6、添加spring-mvc-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:mvc="http://www.springframework.org/schema/mvc"
- xmlns:task="http://www.springframework.org/schema/task"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-4.2.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
- http://www.springframework.org/schema/task
- http://www.springframework.org/schema/task/spring-task-4.2.xsd">
- <!-- 扫描路径 -->
- <context:component-scan base-package="com.springmvc.controller" >
- <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
- </context:component-scan>
- <!-- 配置根视图 -->
- <mvc:view-controller path="/" view-name="index"/>
- <!-- 激活基于注解的配置 @RequestMapping, @ExceptionHandler,数据绑定 ,@NumberFormat ,
- @DateTimeFormat ,@Controller ,@Valid ,@RequestBody ,@ResponseBody等 -->
- <mvc:annotation-driven />
- <!-- 静态资源配置 -->
- <mvc:resources location="/assets/" mapping="/assets/**"></mvc:resources>
- <!-- 视图层配置 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/view/"/>
- <property name="suffix" value=".jsp"/>
- </bean>
- </beans>
7、添加Controller类
书写HelloController.java的内容
- package com.springmvc.controller;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- //url: http://localhost:8080/HelloSpringMVC/hello/mvc
- //告诉DispatcherServlet相关的容器, 这是一个Controller,
- @Controller
- //类级别的RequestMapping,告诉DispatcherServlet由这个类负责处理URL。
- //HandlerMapping依靠这个标签来工作
- @RequestMapping(value="/hello")
- public class HelloController {
- //方法级别的RequestMapping, 限制并缩小了URL路径匹配,同类级别的标签协同工作,最终确定拦截到的URL由那个方法处理
- //并指定访问方法为GET
- @RequestMapping(value="/mvc",method=RequestMethod.GET)
- public String HelloWorld(Model model){
- model.addAttribute("message","Hello Spring MVC!!!"); //传参数给前端
- //视图渲染,/WEB-INF/view/HelloWorld.jsp
- return "HelloWorld"; //页面的名称,根据此字符串会去寻找名为HelloWorld.jsp的页面
- }
- }
8、添加页面
新建视图文件夹
新建页面
注意加.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>HelloSpringMVC</title>
- </head>
- <body>
- <h1>message:${message}</h1>
- <h1>this is my spring mvc</h1>
- </body>
- </html>
9、解决错误(无错的可以跳过此步骤)
可以看到,自从添加了pom.xml的内容以后,项目是一直有红叉的,现在基本上Spring MVC的配置已经完成了,那么就来解决一下。
(1)右击项目名->Properties(在最下方) ->拖动左侧栏,找到Deployment Assembly ->移除多余部分。
注意:这里一定要确保Maven Dependencies在 Web Deployment Assembly 中,否则无法访问controller中的url。
(2)将Maven Dependencies从Build Path中移除。
(3)进入Configure Build Path,重新添加Maven Dependencies这个Library
正常情况下,项目已经没有不报错了。
10、运行项目
上面的这个controller对应的页面如下:
至此,基于Maven+Spring MVC的HelloWord项目已创建完毕。