数据绑定,正如其名称本身一样,是一个不言自明的词。在数据绑定中,我们要做的是捕获或存储数据,以便我们可以根据需要将该数据与另一个资源绑定(例如在前端部分显示数据),或者我们也可以从一个变量并根据我们的要求显示它。例如,有一个谷歌表单,用户在该表单中输入所有详细信息,我们必须捕获/存储数据并根据我们的要求将其与前端部分绑定。在Spring中使用数据绑定概念,我们可以完成以下两个任务
- 我们可以从变量中读取
- 我们可以写入一个变量
所以双向数据绑定意味着我们可以执行读和写操作。我们讨论了如何写入变量任务,在本文中,我们主要关注从变量读取任务。
示例项目
设置项目
我们将在该项目中使用 Spring Tool Suite 4 IDE。请参考这篇文章在本地机器上安装STS如何下载并安装Spring Tool Suite(Spring Tools 4 for Eclipse)IDE?转到 STS IDE,然后创建一个新的 Maven 项目,文件 > 新建 > Maven 项目,然后选择以下原型,如下图所示:
将以下 Maven 依赖项和插件添加到您的pom.xml文件中。
pom.xml
org.springframework
spring-webmvc
5.3.18
javax.servlet
javax.servlet-api
4.0.1
provided
org.apache.maven.plugins
maven-war-plugin
2.6
false
以下是添加这些依赖项后 pom.xml 文件的完整代码。
文件:pom.xml
4.0.0
com.geeksforgeeks
simple-calculator
war
0.0.1-SNAPSHOT
simple-calculator Maven Webapp
http://maven.apache.org
junit
junit
3.8.1
test
org.springframework
spring-webmvc
5.3.18
javax.servlet
javax.servlet-api
4.0.1
provided
simple-calculator
org.apache.maven.plugins
maven-war-plugin
2.6
false
配置调度程序 Servlet
在进入编码部分之前,让我们看一下下图中的文件结构。
因此,首先创建一个src/main/java文件夹,并在该文件夹中创建一个名为CalculatorAppIntilizer的类,并将其放入com.geeksforgeeks.calculator.config包中,并扩展AbstractAnnotationConfigDispatcherServletInitializer类。请参阅下图。
每当您扩展此类时,它都有一些我们需要提供实现的预抽象方法。现在在这个类中,我们只需编写两行代码来配置 Dispatcher Servlet。在此之前,我们必须为 Spring 配置文件创建另一个类。因此,转到src/main/java 文件夹,并在该文件夹内创建一个名为CalculatorAppConfig的类,并将其放入com.geeksforgeeks.calculator.config包中。以下是CalculatorAppConfig.java文件的代码。
文件:CalculatorAppConfig.java
package com.geeksforgeeks.calculator.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class CalculatorAppIntilizer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return null;
}
// Registering the Spring config file
@Override
protected Class>[] getServletConfigClasses() {
Class aClass[] = { CalculatorAppConfig.class };
return aClass;
}
// Add mapping url
@Override
protected String[] getServletMappings() {
String arr[] = { "/geeksforgeeks.org/*" };
return arr;
}
}
设置ViewResolver
Spring MVC 是一个用于构建 Web 应用程序的 Web MVC 框架。一般来说,所有 MVC 框架都提供了一种使用视图的方法。Spring 通过 ViewResolvers 来实现这一点,它使您能够在浏览器中渲染模型,而无需将实现与特定的视图技术绑定。在这里阅读更多内容:Spring MVC 中的 ViewResolver。因此,为了设置 ViewResolver,请转到CalculatorAppConfig.java文件并写下代码如下
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
下面是编写设置 ViewResolver 的代码后CalculatorAppConfig.java文件的更新代码。
文件:更新的CalculatorAppConfig.java
package com.geeksforgeeks.calculator.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@EnableWebMvc
@Configuration
@ComponentSca服务器托管网n(basePackages = "com.geeksforgeeks.calculator.controllers")
public class CalculatorAppConfig {
// setup ViewResolver
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
双向数据绑定(从变量读取)
首先,我们必须创建一个 DTO 类。因此,转到src/main/java文件夹,并在该文件夹内创建一个名为NameInfoDTO的类,并将其放入com.geeksforgeeks.calculator.dto包中。以下是NameInfoDTO.java文件的代码。代码中添加了注释,以便更详细地理解代码。
文件:NameInfoDTO.java
package com.geeksforgeeks.calculator.dto;
public class NameInfoDTO {
// Provided some static服务器托管网 values
// inside the variable
// And we are going to read these values
private String firstName = "Anshul";
private String lastName = "Aggarwal";
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "NameInfoDTO [firstName=" + firstName + ", lastName=" + lastName + "]";
}
}
创建控制器
转到src/main/java文件夹,并在该文件夹内创建一个名为AppController的类,并将其放入com.geeksforgeeks.calculator.controllers包中。以下是AppController.java文件的代码。
文件:AppController.java 文件
package com.geeksforgeeks.calculator.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class AppController {
@RequestMapping("/home")
public String showHomePage() {
return "welcome-page";
}
}
因此,在此文件中,我们必须编写代码,通过从 DTO 获取现有属性来读取它。我们可以编写这样的代码
@RequestMapping("/home")
public String showHomePage(Model model) {
// Read the existing property by
// fetching it from the DTO
NameInfoDTO nameInfoDTO = new NameInfoDTO();
model.addAttribute("nameInfo", nameInfoDTO);
return "welcome-page";
}
下面是AppController.java文件的更新代码。
文件:更新的 AppController.java 文件
package com.geeksforgeeks.calculator.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.geeksforgeeks.calculator.dto.NameInfoDTO;
@Controller
public class AppController {
@RequestMapping("/home")
public String showHomePage(Model model) {
// Read the existing property by
// fetching it from the DTO
NameInfoDTO nameInfoDTO = new NameInfoDTO();
model.addAttribute("nameInfo", nameInfoDTO);
return "welcome-page";
}
}
创建视图
现在我们必须在WEB-INF/view文件夹中创建一个名为“welcome-page”的视图,扩展名为.jsp。因此,转到src > main > webapp > WEB-INF并创建一个文件夹视图,并在该文件夹内创建一个名为welcome-page的jsp 文件。下面是welcome-page.jsp文件的代码。
文件:welcome-page.jsp
Two-Way Data Binding in Spring MVC with Example
现在我们已经完成了编码部分。让我们运行并测试我们的应用程序。
运行您的应用程序
要运行我们的 Spring MVC 应用程序,请右键单击您的项目 > 运行方式 > 在服务器上运行。并如下图所示运行您的应用程序,如下图所示:
之后使用以下 URL 运行您的控制器
http://localhost:8080/simple-calculator/geeksforgeeks.org/home
输出:
因此,在输出中,无论何时点击 URL,您都可以看到值已经存在,这意味着 spring 成功从变量读取了值。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: [AndroidTips]Android中系统自带的锁:WalkLock、KeyguardLock
WalkLock – 顾名思义 唤醒锁 点亮屏幕用的 KeyguardLock – 顾名思义 键盘锁 解锁键盘用的 详细介绍: 1: WalkLock 唤醒锁 – WalkLock真的能点亮屏幕吗? 答案是肯定的。 可是有时候为什么不点亮屏幕,这个就…