学习目的:使用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:接收表单数据相关推荐

  1. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)...

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  2. java run里面定义变量_Java程序员50多道最热门的多线程和并发面试题(答案解析)...

    下面是Java程序员相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器 ...

  3. java oracle 视图不存在_java – 获取异常ORA-00942:表或视图不存在 – 插入现有表时...

    当尝试将一批行插入现有表时,我正在获得下面的异常 ORA-00942: table or view does not exist 我可以确认该表存在于db中,我可以使用oracle将数据插入该表 sq ...

  4. 基于java 工单管理_java毕业设计_springboot框架的工单管理

    今天介绍一个java毕设题目, 题目内容为springboot框架的工单管理, 是一个采用b/s结构的javaweb项目, 采用java语言编写开发工具eclipse, 项目框架jsp+springb ...

  5. java工单管理系统_java毕业设计_springboot框架的工单管理系统

    这是一个基于java的毕业设计项目,毕设课题为springboot框架的工单管理系统, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+spri ...

  6. java 可能尚未初始化变量_Java:错误:变量可能尚未初始化

    Java:错误:变量可能尚未初始化 我正在学习Java,我收到了这个错误.我知道这已被问过几次(很多次),但没有一个答案似乎回答了我的问题.代码的主体是:String[] number = {&quo ...

  7. java两个数据库连表查询语句_Java如何连接多个表并查询表中的数据内容?

    在Java编程中,如何连接多个表并显示表中的数据内容?假定数据库名称是:testdb,其中有两张表:employee和dept,employee表中有4条记录,dept表中有2条记录. 创建数据库表的 ...

  8. 单变量线性回归模型_了解如何为单变量模型选择效果最好的线性回归

    单变量线性回归模型 by Björn Hartmann 比约恩·哈特曼(BjörnHartmann) 找出哪种线性回归模型最适合您的数据 (Find out which linear regressi ...

  9. java socket发送定长报文_java使用Socket类接收和发送数据

    网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类.通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据.在本文及后面的数篇文章中将详细讨论 ...

最新文章

  1. Android数据存储(三)——SQLite
  2. 最新综述 | 基于深度学习的立体视觉深度估计
  3. 用计算机处理信息可以分为四个过程,大学计算机基础期末考试样题3
  4. silverlight ListBox 多列图片效果
  5. 人脸测温门禁 传感器_湖南人脸测温门禁如何选择
  6. CoreText入门
  7. [html] 写一个密码默认星号,但可以查看密码的输入框
  8. 哈希表,哈希算法(C语言)
  9. 设置TDSAuthenticationManager属性对DataSnap服务端的接口授权
  10. Theory and tools for the conversion of analog to spiking convolutional neural networks
  11. 连接Android与ASP.NET Core Web API的完整教程
  12. Java中junit单元测试
  13. coupled quasi-harmonic bases
  14. 图层重命名快捷键_玩转CAD快捷键(大全),一篇文章就够了
  15. 你看那个人他像一条狗
  16. matlab vav终端控制器编程,基于TRNSYS与VAV控制系统与仿真.pdf
  17. 很遗憾,该服务器不支持 jmail 组件!,jmail组件注册以及权限设置问题
  18. 金融货币学笔记(米什金)第三章 什么是货币 带原书总结
  19. Linux安装DBLE
  20. Ubuntu日常使用命令记录

热门文章

  1. python标准库之logging
  2. Python中的@property Decorator:其用例,优点和语法
  3. git 删除本地和远程分支_如何在本地和远程删除Git分支
  4. cad中等线体_如何撰写人们会实际阅读的中等故事
  5. 快来学习怎么可视化监控你的Python爬虫
  6. Python函数你真的都学会了吗?来看看这篇Python高阶函数!
  7. python队列及其实现
  8. windows 导入表(动态调用)
  9. Python协程之greenlet
  10. 在ASP.NET 3.5中使用新的ListView控件(3)