Spring MVC 框架能够分离模块,即模型、视图和控制器,并无缝处理应用程序集成。这使开发人员也可以使用普通的 java 类来创建复杂的应用程序。模型对象可以使用映射在视图和控制器之间传递。在本文中,我们将了解如何在 Eclipse IDE 中设置 Spring MVC 应用程序并了解如何制作应用程序。? Spring MVC 框架由以下组件组成:? ?
- 模型:模型可以是一个对象或对象的集合,基本上包含应用程序的数据。
- 视图:视图用于以特定格式向用户显示信息。Spring 支持各种技术,如freemarker、velocity和thymeleaf。
- 控制器:它包含应用程序的逻辑部分。@Controller注解用于将该类标记为控制器。
- 前端控制器:它仍然负责管理 Web 应用程序的流程。DispatcherServlet 在 Spring MVC 中充当前端控制器。
要求 :?
- Eclipse(EE 版本)。
- Tomcat Apache 最新版本。
在 Eclipse IDE 中设置 Spring MVC 应用程序的步骤: ?
- 第 1 步:转到文件菜单并单击新建->?Maven 项目。?
?
- 第 2 步:然后在搜索栏中输入maven。单击Maven 项目,然后单击下一步。?
?
- 第 3 步:默认设置应保持不变。单击下一步。?
?
- 第 4 步:为 Web 应用程序选择maven-archetype-webapp并单击Next。?
?
- 第 5 步:提供一些Group id以及Artifact id。?
?
- 第 6 步:右键单击项目并转到Properties。?
?
- 第 7 步:单击目标运行时。选择系统中已安装的apache tomcat。单击应用->应用并关闭。?
?
- 第 8 步:?java 文件应该在src/main/java文件夹中以构建 Spring MVC 项目。转到项目中的src文件夹。右键单击主菜单,然后单击新建->文件夹。?
?
- 第 10 步:在src/main/java文件夹下的com.geesforgeeks.springmvc 中创建一个 java 类。目录结构应如下所示。?
?
- 使用基于 java 的配置实现 Spring Web MVC 应用程序的步骤:
- 第 1 步:最初,我们需要创建一个pom.xml文件。该文件包含 spring 框架的 maven 依赖项,以便在项目中使用它们。
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.geeksforgeeks</groupId>
<artifactId>SpringMVCjava</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>SpringMVCjava Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- Spring dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
</dependencies>
<build>
<finalName>SpringMVCjava</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven
defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
- 第 2 步:该项目包含一个web.xml文件,该文件接收来自客户端的所有请求。我们将使用WebInitializer.java代替 web.xml。getServletMappings()函数接收所有与'/' URL映射对应的请求。函数getServletConfigClasses()配置调度程序 servlet 并将处理程序传输到调度程序 servlet java 文件 MVCconfig.class。MVCconfig.java文件用于代替基于 java 的配置的调度程序 servlet。此类应扩展AbstractAnnotationConfigDispatcherServletInitializer 类以服务于基于 java 的配置中的 web.xml 文件的目的。该文件定义为:
package com.geeksforgeeks.web;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class[] { MVCconfig.class };
}
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[] { "/" };
}
}
- 第 3 步:现在,我们需要创建一个 MVCconfig.java 文件。该文件用于代替调度程序 servlet 文件。使用@Configuration注释一个类表明该类可以被Spring IoC 容器用作bean 定义的来源。要启用注释控制器的自动检测,需要将组件扫描添加到配置中。它还给出了需要搜索控制器文件的基本包的路径(即 com.geeksforgeeks.web) 。此类应扩展WebMvcConfigurerAdapter类以服务于调度程序 servlet。
?
package com.geeksforgeeks.web;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@ComponentScan({ "com.geeksforgeeks.web" })
public class MVCconfig extends WebMvcConfigurerAdapter {
}
- 第 4 步:现在,我们需要定义一个控制器。控制器解释用户输入并将其转换为由视图表示给用户的模型。@RequestMapping注解用于将诸如“/greet”之类的 URL 映射到整个类或特定的处理程序方法上。我们创建一个ModelAndView类的对象。setViewName()表示要调用的视图,addObject()表示要添加到该对象的动态内容。
?
package com.geeksforgeeks.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class GreetController {
@RequestMapping("/greet")
public ModelAndView showview() {
ModelAndView mv = new ModelAndView();
mv.setViewName("result.jsp");
mv.addObject("result", "GeeksForGeeks Welcomes " + "you to Spring!");
return mv;
}
}
- 第 5 步:现在,我们需要为应用程序创建一个索引页面。它是点击给定 URL 时显示的页面。因此,我们创建index.jsp文件如下:
?
<html>
<body>
<h2>Hello World!</h2>
<form action="greet">
<input type="submit" value="Press to greet">
</form>
</body>
</html>
- 第 6 步:当按下上面定义的 index.jsp 中的press to greet按钮时,会打开result.jsp页面。所以,我们需要定义 result.jsp 文件:?
?
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" isELIgnored="false"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>${result}</h1>
</body>
</html>
当 index.jsp 打开时:
按下按钮时:
|