java处理表单变量_Java自学之SpringMVC:接收表单数据
学习目的:使用SpringMVC接收表单数据。
Part 1
新建一个pojo。
package pojo;
public class Product {
private int id;
private String name;
private float price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
}
Part 2
在WebContent下,新建一个添加商品的addProduct.jsp。
pageEncoding="UTF-8" import="java.util.*" isELIgnored="false"%>
产品名称 :
产品价格:
Part 3
准备ProductController控制器。
注:addProduct.jsp提交的name和price会自动注入到参数 product里。
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import pojo.Product;
@Controller
public class ProductController {
@RequestMapping("/addProduct")
public ModelAndView add(Product product) {
ModelAndView amv = new ModelAndView("showProduct");
return amv;
}
}
Part 4
在/WEB-INF/page新建showProduct.jsp,用来显示添加的商品信息。
pageEncoding="UTF-8" isELIgnored="false"%>
产品名称: ${product.name}
产品价格: ${product.price}
Part 5
配置springmvc-servlet.xml。
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd">
Part 6
输入信息之后点击增加商品
成功显示新增的信息,SpringMVC成功接收到表单数据,学习目的完成。
Part 7
流程理解
输入完表单请求的数据后,提交。来到DispatcherServlet中,处理器映射器根据提交的路径,找到了相匹配的处理器Controller(已注解了路径)。接下来到了我认为的难点:在Controller的方法中,通过参数绑定,表单中的数据直接注入到了形参(Product product)中,前提是表单中的属性和Bean:Product中的属性是相匹配的,这样Spring才能找到。(此处各种类型参数绑定的链接详解:[Spring MVC] - SpringMVC的各种参数绑定方式www.cnblogs.com
SpringMVC中的参数绑定总结_spring mvc,数据_hugh 的博客-CSDN博客blog.csdn.net
)然后进入方法,在方法中创建了一个ModelAndView,并且通过这个构造方法制定了返回的View,与Springmvc-servlet中的配置配合后,showProject+.jsp就变成了最后返回视图的路径。
疑问解答:
Q:地址访问不是会根据web.xml中的配置 所有的访问都会经过DispatcherServlet,然后到配置文件springmvc-servlet.xml 里查找,然后现在因为设置成了注解方式,所以直接查找所有控制器,找到路径所对应的方法,执行相关代码嘛。那直接访问jsp文件的时候不是经过以上步骤么???
A:地址访问都是从web.xml开始的,/这个叫默认匹配,优先级最低,这里只配置了默认匹配,所以首先所有请求都是由DispatcherServlet转发的,DispatcherServlet会根据handler mapping去找相应请求的处理器,这个handler mapping就是映射关系,这些映射关系或者从配置文件里读取,或者配置文件里有会从注解中获取,这些都是在初始化的时候完成的,初始化后这些映射关系统一变成handler mapping,至于访问jsp文件,jsp文件路径在映射关系中找不到,这时spring会调用tomcat的defaultServletDispatcher,这个转发器就是web容器加载静态资源的转发器,就是直接根据路径找文件。
java处理表单变量_Java自学之SpringMVC:接收表单数据相关推荐
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)...
Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...
- java run里面定义变量_Java程序员50多道最热门的多线程和并发面试题(答案解析)...
下面是Java程序员相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器 ...
- java oracle 视图不存在_java – 获取异常ORA-00942:表或视图不存在 – 插入现有表时...
当尝试将一批行插入现有表时,我正在获得下面的异常 ORA-00942: table or view does not exist 我可以确认该表存在于db中,我可以使用oracle将数据插入该表 sq ...
- 基于java 工单管理_java毕业设计_springboot框架的工单管理
今天介绍一个java毕设题目, 题目内容为springboot框架的工单管理, 是一个采用b/s结构的javaweb项目, 采用java语言编写开发工具eclipse, 项目框架jsp+springb ...
- java工单管理系统_java毕业设计_springboot框架的工单管理系统
这是一个基于java的毕业设计项目,毕设课题为springboot框架的工单管理系统, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+spri ...
- java 可能尚未初始化变量_Java:错误:变量可能尚未初始化
Java:错误:变量可能尚未初始化 我正在学习Java,我收到了这个错误.我知道这已被问过几次(很多次),但没有一个答案似乎回答了我的问题.代码的主体是:String[] number = {&quo ...
- java两个数据库连表查询语句_Java如何连接多个表并查询表中的数据内容?
在Java编程中,如何连接多个表并显示表中的数据内容?假定数据库名称是:testdb,其中有两张表:employee和dept,employee表中有4条记录,dept表中有2条记录. 创建数据库表的 ...
- 单变量线性回归模型_了解如何为单变量模型选择效果最好的线性回归
单变量线性回归模型 by Björn Hartmann 比约恩·哈特曼(BjörnHartmann) 找出哪种线性回归模型最适合您的数据 (Find out which linear regressi ...
- java socket发送定长报文_java使用Socket类接收和发送数据
网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类.通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据.在本文及后面的数篇文章中将详细讨论 ...
最新文章
- Android数据存储(三)——SQLite
- 最新综述 | 基于深度学习的立体视觉深度估计
- 用计算机处理信息可以分为四个过程,大学计算机基础期末考试样题3
- silverlight ListBox 多列图片效果
- 人脸测温门禁 传感器_湖南人脸测温门禁如何选择
- CoreText入门
- [html] 写一个密码默认星号,但可以查看密码的输入框
- 哈希表,哈希算法(C语言)
- 设置TDSAuthenticationManager属性对DataSnap服务端的接口授权
- Theory and tools for the conversion of analog to spiking convolutional neural networks
- 连接Android与ASP.NET Core Web API的完整教程
- Java中junit单元测试
- coupled quasi-harmonic bases
- 图层重命名快捷键_玩转CAD快捷键(大全),一篇文章就够了
- 你看那个人他像一条狗
- matlab vav终端控制器编程,基于TRNSYS与VAV控制系统与仿真.pdf
- 很遗憾,该服务器不支持 jmail 组件!,jmail组件注册以及权限设置问题
- 金融货币学笔记(米什金)第三章 什么是货币 带原书总结
- Linux安装DBLE
- Ubuntu日常使用命令记录