目录
- Spring MVC 教程:
用于本文的工具包括:
- Eclipse
- Maven plugin(m2eclipse)
- JDK 1.7
- Apache tomcat 8
创建Spring MVC的步骤 hello world示例。
1)在eclipse中安装插件m2eclipse。
http://download.eclipse.org/technology/m2e/releases
2)转到新建->项目->Maven 项目,然后单击下一步
3)您将看到下面的屏幕,再次单击下一步
4)我们需要在这里选择原型的类型。由于我们在这里创建Web应用程序,请将以下文本放入过滤器中:maven-archetype-webapp
5)我们需要在这里放置组ID和工件ID。
让我告诉您有关组 ID 和项目 ID 的更多信息。
Group id : 它可以在所有项目中唯一标识您的项目。所以它可能是像公司名称这样的东西
artifact ID:它是没有版本的jar或war的名称。它可能是类似于项目的东西,所以在这里我们把artifact ID作为mavenWebApp
版本: 版本用于对项目 ID 进行版本控制。如果分发此项目,则可以增量方式创建它的不同版本。
当您按照上述步骤操作时,您的项目结构将如下所示:
如您所见,我们在index.jsp中收到一个错误(“The superclass “javax.servlet.http.HttpServlet” was found in java build path”)。
要解决此问题,请按照下列步骤操作:
您需要将目标运行时间设置为Apache tomcat。为此,请右键单击项目 -> 属性 -> 目标运行时
添加Spring MVC 依赖项
6)在pom.xml中添加spring依赖。我们在这里需要spring core和spring mvc依赖性。
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>com.arpit.code8cn</groupId>
<artifactId>SpringMVCHelloWorldExample</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>SpringMVCHelloWorldExample 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>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
<build>
<finalName>SpringMVCHelloWorldExample</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<spring.version>4.2.1.RELEASE</spring.version>
<jdk.version>1.7</jdk.version>
</properties>
</project>
创建控制器Controller和视图view
7)创建一个名为“org.arpit.code8cn.springmvc.controller”
的软件包创建一个名为“HelloWorldController.java”的控制器类
package org.arpit.code8cn.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloWorldController {
@RequestMapping("/helloworld")
public ModelAndView hello() {
String helloWorldMessage = "Hello world from code8cn!";
return new ModelAndView("hello", "message", helloWorldMessage);
}
}
当请求首先转到调度程序Servlet时,它会重定向到控制器类。这里@Controller描述了这是我们的控制器类,@RequestMapper用于将传入的http请求映射到上面的控制器中的处理程序方法(hello())。所以HelloWorldController.java将处理来自调度程序的GET请求。因此,当我们有网址时
http://localhost:8080/SpringMVCHelloWorldExample/helloworld or
http://localhost:8080/SpringMVCHelloWorldExample/helloworld.html
上述方法将被调用。
如您所见,模型和视图对象正在以 hello() 方法返回。它将调用模型和视图类的以下构造函数。
8) 修改index.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>HelloWorld</title>
</head>
<body>
<a href="helloworld.html">Click here to read hello message </a>
</body>
</html>
在 /WEB-INF/ 文件夹中创建hello.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>Hello</title>
</head>
<body>
${message}
</body>
</html>
配置spring mvc 应用程序
9)现在我们需要配置两个文件“web.xml”和“springmvc-dispatcher-servlet.xml”我们需要在web.xml中为Spring MVC声明DispatcherServlet。当DispatcherServlet初始化时,spring 会尝试从 [servlet name]-servet.xml文件加载应用程序上下文。因此,在这种情况下,将尝试加载springmvc-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_3_0.xsd"
version="3.0">
<display-name>Archetype Created Web Application</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>springmvc-dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
10) 在 /WEB-INF 文件夹中创建名为“springmvc-dispatcher-servlet.xml”的 xml 文件,如下所示。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" 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-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:component-scan base-package="org.arpit.code8cn.springmvc.controller" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<mvc:annotation-driven/>
</beans>
context:component-scan允许spring加载其类和子类。如您所见,我们在这里提供了控制器包,因此它将加载HelloWorldController.class.
InternalResourceViewResolver是资源视图解析器 Bean,它将解析视图,前缀和后缀将添加到 ModelView 对象中使用的视图。正如我们在模型和视图对象中使用“hello”作为视图名称一样。它将在 /WEB-INF/hello.jsp 中搜索视图。
11)是时候做maven构建了。
右键单击项目 -> 运行方式 -> Maven 生成
12)提供目标作为全新安装(在下面给出),然后单击运行
运行应用程序
13) 右键单击项目 ->作为 -> 在服务器上运行
选择apache tomcat,然后单击完成
14)您将看到以下屏幕:
当您单击上面的链接时,您将获得下面的屏幕
下载:
https://github.com/arpitmandliya/SpringMVCHelloWorldExample/archive/master.zip
项目结构
如果您在执行上述步骤时收到404错误,则可能需要执行以下步骤:
1)如果您将此警告发送到Tomcat启动控制台日志中,则可能导致此问题
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.j2ee.server:SpringMVCHelloWorldExample’ did not find a matching property.
这个特定的警告基本上意味着Tomcat服务器中的server..xml包含未知的属性源,并且Tomcat不知道如何处理此属性,因此将忽略它。
要在 eclipse 中解决此问题,
请从服务器视图中从服务器中删除项目。右键单击服务器 ->添加和删除
然后从服务器配置中删除项目。
然后在同一台服务器上运行该项目。警告
现在应该被删除,或者如果警告仍然存在,那么
- 转到服务器视图
- 双击您的tomcat server。它将打开服务器配置。
- 在服务器选项下,选中“Publish module contents to separate XML files”复选框。
- 重新启动服务器。这一次,您的页面将没有任何问题。
2)尝试更新Maven项目。
右键单击项目 ->Maven>更新项目
然后
这应该可以解决您的问题。