Spring MVC hello world示例

目录 

用于本文的工具包括:

  • 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>更新项目

然后

这应该可以解决您的问题。