📜  Spring – MVC 隐藏域

📅  最后修改于: 2022-05-13 01:55:47.552000             🧑  作者: Mango

Spring – MVC 隐藏域

Spring 是最流行的Java EE 框架之一。它是一个开源轻量级框架,允许Java EE 7 开发人员构建简单、可靠且可扩展的企业应用程序。该框架主要侧重于提供各种方法来帮助您管理业务对象。在这个例子中,我们将了解 Spring MVC 的表单隐藏字段。我们将在 Spring 工具套件 (STS) 中创建一个基本的 Spring MVC 项目,以使用form:hidden标记从用户表单中传递一个隐藏变量。

spring-form.tld

我们可以使用Java Server Pages (JSP) 作为 Spring Framework 中的视图组件。 Spring 2.0 版本提供了一套全面的数据绑定感知标签作为标签库,即spring-form.tld ,用于在使用 JSP 和 Spring Web MVC 时处理表单元素。

此标签库中的每个标签都支持其对应的 HTML 标签对应的属性集,使标签使用起来既熟悉又直观。这些标记在处理时生成一个符合 HTML 4.01/XHTML 1.0 的 HTML 标记。我们可以使用这些标签来评估错误、设置主题、格式化输入和输出国际化消息的字段。要使用 spring 库标签,我们需要在 JSP 页面中包含以下指令。

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
    --form is the tag name prefix that is used for the tags from this library.

“隐藏”标签

Spring 表单“隐藏”标记使用绑定值呈现类型为“隐藏”的 HTML“输入”标记。如果我们想提交一个未绑定的隐藏值,我们需要使用类型为“隐藏”的 HTML 输入标签。

如果我们想从用户表单提交非用户输入,我们可以使用“隐藏”输入标签。隐藏字段允许开发人员在提交表单时包含一些用户无法看到或修改的数据。它通常存储提交表单时需要更新的数据库记录。隐藏的值不会在页面内容中向用户显示,但它是可见的,并且可以使用任何浏览器的开发人员工具进行编辑。下面是表单“隐藏”标签的示例。

HTML


HTML


Java
package com.geeksforgeeks.app;
  
public class Employee {
      
    private String ename;
    private String eid;
  
    public String getEname() {
        return ename;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public String getEid() {
        return eid;
    }
    public void setEid(String eid) {
        this.eid = eid;
    }
      
}


Java
package com.geeksforgeeks.app;
  
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
  
@Controller
public class EmployeeController {
      
    @RequestMapping(value = "/")
    public String viewHome(Model model) {
  
        Employee emp = new Employee();
        model.addAttribute("emp", emp);
        return "employee";
    }
  
    @RequestMapping(value = "/submit", method = RequestMethod.POST)
    public String submit(@ModelAttribute("emp") Employee emp) {
        return "summary";
    }
  
}


HTML
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>




Welcome Page


    

Welcome to GeeksforGeeks!!

                Employee Name:                           Submit        


HTML
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>




Summary page


  
    

Your Details

                                                                                                    
Employee Name:${emp.ename}
Employee ID:${emp.eid}
  


该标签将在处理时生成一个 HTML 隐藏标签,如下所示。

HTML


“隐藏”标签中的属性

以下是“隐藏”标签中可用的属性。

Name

Description

htmlEscapeTo enable/disable HTML escaping of rendered values.
idTo specify a unique ID for the hidden field.
pathTo specify the path to the hidden field property for binding its data.
valueTo specify the value for the hidden field.

示例项目

我们将创建一个简单的 Spring MVC 应用程序,如下所示,将“Name”作为用户输入,“Id”作为隐藏字段并处理它们以获得输出。

Spring MVC 应用程序 - 隐藏标签示例

Spring MVC 应用程序 - 隐藏标签示例

创建应用程序的步骤

1)在 Spring Tool Suite 中创建一个 Spring MVC 项目。

2)在STS中,根据开发者选择创建项目时,会下载所有需要的maven依赖,*.jar,lib文件,并提供嵌入式服务器。

3)下面是Spring MVC项目创建后的最终项目结构*. Java和 *.jsp 文件。

项目结构

项目结构

执行

要创建的文件如下:

  1. 员工。 Java – Bean 类 – 定义字段属性和属性的 getter/setter 方法。
  2. 员工控制器。 Java – 控制器类 – 处理用户请求并生成输出。
  3. employee.jsp – 从用户那里获取输入的 Jsp 文件。
  4. summary.jsp – 处理输入后将输出显示到用户屏幕的 Jsp 文件。

1) 雇员。 Java文件: Java Bean 类,用于定义所有属性以及这些属性的 getter/setter 方法以获取和设置值。

Java

package com.geeksforgeeks.app;
  
public class Employee {
      
    private String ename;
    private String eid;
  
    public String getEname() {
        return ename;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public String getEid() {
        return eid;
    }
    public void setEid(String eid) {
        this.eid = eid;
    }
      
}

2) 员工控制器。 Java文件:这是控制器类,它根据请求 URL 的映射执行方法。

使用的注释:

  • @Controller ,向容器传达这个类是弹簧控制器类。要使用这个注解,我们需要导入org.springframework.stereotype.Controller包。
  • @RequestMapping ,根据提供的值将请求 URL 映射到指定的方法。要使用这个注解,我们需要导入org.springframework.web.bind.annotation.RequestMapping包。
  • @ModelAttribute ,用于将方法参数或方法返回值绑定到命名模型属性。我们需要导入org.springframework.web.bind.annotation.ModelAttribute包。

Java

package com.geeksforgeeks.app;
  
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
  
@Controller
public class EmployeeController {
      
    @RequestMapping(value = "/")
    public String viewHome(Model model) {
  
        Employee emp = new Employee();
        model.addAttribute("emp", emp);
        return "employee";
    }
  
    @RequestMapping(value = "/submit", method = RequestMethod.POST)
    public String submit(@ModelAttribute("emp") Employee emp) {
        return "summary";
    }
  
}

3)employee.jsp 文件:带有相应实现的spring 库标签的JSP 文件。

HTML

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>




Welcome Page


    

Welcome to GeeksforGeeks!!

                Employee Name:                           Submit        

4) summary.jsp 文件:这是处理用户输入请求后在浏览器中显示用户输入值的输出 JSP 页面。

HTML

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>




Summary page


  
    

Your Details

                                                                                                    
Employee Name:${emp.ename}
Employee ID:${emp.eid}
  

执行

  • 创建完所有需要的 . Java和 .jsp 文件,在服务器上运行项目。
  • 在项目上,运行方式-> 在服务器上运行。
  • 在 localhost 中选择服务器以运行应用程序。
  • 在浏览器中打开 URL: http://localhost:8080/app/以获取以下屏幕。
欢迎页面

欢迎页面

  • 在此页面上,我们将“员工姓名”作为用户的输入。
  • 我们在表单中使用的隐藏字段不会显示在屏幕上,当用户提交上述表单时,该值将在后端设置。
  • 如果我们想在浏览器端查看隐藏字段的值,可以使用开发者工具查看。
  • 在 chrome 浏览器中,按 F12 打开开发人员工具,如下所示。
开发者工具

开发者工具

  • 现在,输入名称并单击提交。
输入

输入

  • 一旦我们点击提交,表单将提交用户输入的值以及代码中提供的隐藏字段值,并生成如下所示的输出。
输出

输出

这样,如果我们想将输入字段的隐藏值提交给后端应用程序或非用户输入的数据库,我们可以使用 Spring 表单的“隐藏”标签。