在这篇文章中,我们将看到使用 maven 的 Spring MVC hello world 示例。
这篇文章使用的工具是
1) 在eclipse中为maven插件安装m2eclipse。
2) 转到新 -> 项目-> Maven 项目,然后单击下一步
3) 你会看到下面的屏幕,再次点击下一步
4) 我们需要在这里选择原型类型。当我们在这里创建网络应用程序时,请在过滤器中输入以下文本:maven-archetype-webapp
5) 我们需要在此处放置组 ID 和工件 ID。
让我告诉你更多关于组 ID 和工件 ID 的信息。
Group id : 它在所有项目中唯一标识您的项目。所以它可能类似于 com.companyname
Artifact id :它是没有版本的 jar 或 war 的名称。它可能类似于项目,所以在这里我们将工件 id 设置为 mavenWebApp
版本: 版本用于工件 id 的版本控制。如果您分发此项目,您可能会逐步创建它的不同版本。
当您按照上述步骤操作时,您的项目结构将如下所示:
如您所见,我们在 index.jsp 中收到错误(“在 java 构建路径中找到超类“javax.servlet.http.HttpServlet””)。
要解决此问题,请执行以下步骤:
您需要将目标运行时间设置为 Apache Tomcat。为此,请右键单击项目 -> 属性 -> 目标运行时
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.java2blog</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>
7)创建一个名为“org.arpit.java2blog.springmvc.controller”的包创建一个名为“HelloWorldController.java” 的控制器类
package org.arpit.java2blog.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 java2blog!"; return new ModelAndView("hello", "message", helloWorldMessage); } }
当请求首先到达 dispatcherServlet 并重定向到控制器类。这里@Controller 描述了这是我们的控制器类。@RequestMapper 用于将传入的 http 请求映射到处理程序方法(上面控制器中的 hello())。所以 HelloWorldController.java 的 hello() 方法将处理来自调度程序的 GET 请求。所以当我们有
http://localhost:8080/SpringMVCHelloWorldExample/helloworld or http://localhost:8080/SpringMVCHelloWorldExample/helloworld.html
上面的方法将被调用。
如您所见,ModelAndView 对象在 hello() 方法中返回。它将调用 ModelAndView 类的下面的构造函数。 ModelAndView(String viewName, String modelName, Object modelObject) 下图就清楚了
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>
9)现在我们需要配置两个文件“web.xml”和“springmvc-dispatcher-servlet.xml”我们需要在web.xml中为spring MVC声明DispatcherServlet。当 DisplatcherServlet 初始化时,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.java2blog.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,它将解析视图,前缀和后缀将添加到 ModelViewObject 中使用的视图。因为我们在 ModelAndView 对象中使用了“hello”作为 viewName。它将在/WEB-INF/hello.jsp 中搜索视图。
11) 是时候做 Maven 构建了。
右键单击项目-> 运行方式-> Maven 构建
12)提供干净安装的目标(如下所示)并单击运行
13)右键单击项目->运行为->在服务器上运行
选择apache tomcat并点击finish
14)您将看到以下屏幕:
当您单击上面的链接时,您将进入以下屏幕
我们完成了 Spring MVC hello 示例。如果您仍然遇到任何问题,请发表评论。
下载
**1)** 如果您在 Tomcat 启动控制台日志中收到此警告,则可能会导致问题
警告:[SetPropertiesRule]{Server/Service/Engine/Host/Context} 将属性“源”设置为“org.eclipse.jst.j2ee.server:SpringMVCHelloWorldExample”未找到匹配的属性。
这个特定的警告基本上意味着 Tomcat 的 server.xml 中的元素包含未知的属性源,并且 Tomcat 不知道如何处理该属性,因此将忽略它。 要在 Eclipse 中解决此问题, 请从服务器视图中删除服务器中的项目。右键单击服务器->添加和删除
然后从服务器配置中删除项目。
然后在同一台服务器下运行项目。现在应该删除 警告或者如果警告仍然存在那么
2)尝试更新Maven项目。 右键项目->Maven->更新项目
然后
这应该可以解决您的问题。
原文链接:https://codingdict.com/