03.0 使用Spring标签创建表单
开发环境参见: 01.0 SpringMVC4 的开发环境搭建
例:jsp页面向控制器提交(submit方式)数据----实现登录功能的part1
本例实现, Spring标签创建表单, 表单页面向控制器提交数据, 后台得到这些数据, 并打印.
访问http://localhost:8080/springmvc-3/login, 填入用户名密码, 点提交跳到index页面.
1. 定义bean类"com.wzr.model.User"
package com.wzr.model;
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
2. 新建登录页面login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>login</title>
</head>
<body>
<sf:form modelAttribute="loginUser" method="post">
<table width="30" >
<tr>
<td colspan="2">登录窗口</td>
</tr>
<tr>
<td>用户名</td>
<td><sf:input path="username" size="15" /></td>
</tr>
<tr>
<td>密  码</td>
<td><sf:password path="password" size="15" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="登录"></td>
</tr>
</table>
</sf:form>
</body>
</html>
说明:
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %> , 此句表示当前页面引用Spring标签, 标签前缀为"sf".
<sf:form modelAttribute="loginUser" method="post">, 此句表示要新建一个form表单, 提交方式为post. modelAttribute="loginUser"表示页面要回显的对象名, 与(下面要建立的)controller中model.addAttribute(键名,值)对应, "loginUser"代表键名.
观察上面的"com.wzr.model.User"类, 其中包括2个属性username;password; 再观察jsp页面上控件的path属性也是"username","password", 二者为一一对应关系(实际应用中类定义的属性可以多于页面上的字段).
3. 控制器LoginController代码:
package com.wzr.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.wzr.model.User;
@Controller
public class LoginController {
// 当由url地址访问(相当于Get方式提交),被此方法捕获
@RequestMapping(value="/login", method=RequestMethod.GET)
public String Login(Model model){
model.addAttribute("loginUser",new User());
return "login"; // 转到登录界面
}
// 由登录窗口提交表单访问(POST方式提交),被此方法捕获
@RequestMapping(value="/login", method=RequestMethod.POST)
public String Login(User user, Model model){ // 获取了页面上传来(经过spring组装)的User对象
model.addAttribute("loginUser",user); // 把User对象放入requestScope
System.out.println(user.getUsername());
System.out.println(user.getPassword());
return "index"; // 转到登录成功页面
}
}
代码说明:
method=RequestMethod.GET只接收GET方式提交的数据
method=RequestMethod.POST只接收POST方式提交的数据
需要注意的是, 在一个页面上如果使用了POST方式提交, 之后无论是F5刷新, 或是地址栏回车, 都仍然是POST方式提交.
4. index.jsp页面用EL表达式显示用户名略(参见02.0节)
总结:
与<1.0 SpringMVC4 的开发环境搭建>过程类似, 点submit提交后消息路由为: Tomcat-->web.xml-->spring-->spring1-servlet.xml(自定义的xml文件)-->com.wzr.controller.LoginController,由于设置了method="post", 将定位到"public String Login(User user)", 之前login.jsp页面已经根据modelAttribute找到了"com.wzr.model.User"类, 产生了对象, 并用页面上的数据填充了此对象的属性, 这时把此对象放到Login方法的参数中(也就是这里的user).
相关推荐
标签"B116 B116XAN03.0 LCD"强调了这个话题的核心,即B116系列的LCD显示屏,特别是B116XAN03.0型号。"B116"可能代表屏幕的尺寸,可能是11.6英寸,而".0"可能表示这是该系列的一个特定版本或修订版。"LCD"是" Liquid ...
CRE03.0的D700破解文件,一键破解。
OIF_CEI_03.0标准是一项面向40Gbps和100Gbps数据速率的国际标准,由国际非盈利组织光学互连网络论坛(Optical Internetworking Forum,简称OIF)制定。OIF拥有超过90个会员公司,涵盖了全球领先的运营商和供应商。该...
software engineering ppt
OIF-CEI-03.0 – Common Electrical I/O (CEI) – Electrical and Jitter Interoperability agreements for 6G+ bps, 11G+ bps, 25G+ bps I/O (September 2011) OIF-CEI-P-02.0 – Common Electrical I/O – ...
通常情况下,我们会使用for循环来送数据,一次发送16列数据,然后通过延时指令使LED能够依次点亮,形成稳定的图像。为了达到文字滚动效果,会引入字幕计数器的概念。每当LED旋转一圈,字幕计数器增加,指向下一列,...
【B156HAK03.0】液晶屏规格书是AU Optronics Corporation(友达光电)发布的产品详细规范文档,旨在提供该特定型号LCD面板的技术参数、性能指标和应用指南。友达光电是一家全球领先的液晶显示技术制造商,为LCD、PDP...
9. **持续集成与自动化部署**:理解使用Ant、Maven或Jenkins进行自动化构建和部署的流程,以及使用WSAdmin脚本进行服务器管理和配置。 10. **故障排查**:学习日志分析技巧,使用TraceFacility进行问题诊断,以及...
**Djangocas** 和 **DjangoPython** 是与这个主题相关的标签,前者特指Django与CAS的结合,后者表示使用Python语言进行Django开发。 在**django-cas-ng-master** 文件中,你可能找到该库的源代码,包括Python模块、...
例如,命令可能为`./dpdk-devbind.py --bind=vfio-pci 0000:00:03.0`,其中`0000:00:03.0`是网卡的PCI地址。 解绑过程与绑定相反: 1. **恢复网卡**: 当需要将网卡重新放回内核驱动管理时,使用`dpdk-devbind.py`...
"标签"中提到的"AMI Firmware Update Utility 5.14.03.0039"是对该工具的简要概述,强调了它专为AMI的固件更新设计,并且对应的具体版本号与标题一致。 在压缩包内的文件名称列表中,我们看到有以下几个文件: 1. ...
lspci -v -s 00:03.0 ``` 这将显示出物理机上的GPU设备信息,包括设备号、设备名称、设备类型等信息。 三、脱离GPU设备 在虚拟机中,需要将GPU设备从物理机上脱离出来,以便将其分配给虚拟机。可以使用virsh ...
通过使用WinTarget技术,可以创建一个混合型的存储系统,该系统不仅成本低廉,而且易于维护,同时还具备强大的数据保护功能。 ##### 2.1 解决方案概述 在无盘教学网中,工作站通常不配备本地硬盘,这导致了用户...
在这个阶段,网站更多地扮演着信息发布的角色,用户只能被动地接受这些信息,无法参与到内容的创建和互动中。 **特点总结:** - **单向信息传递**:信息主要由网站发布者向用户单向传输。 - **静态内容**:网站上的...
用另一种语言阅读: 除英语以外的其他语言的翻译是... 本文将帮助您做出选择(如果尚未选择)指数01.0-内存使用02.0-隐私03.0-ChromeBooks 03.0.1-面向所有人03.0.2-对于开发人员03.0.3-BSD 04.0-广告屏蔽05.0-安培06.
具体步骤涉及进入并配置BIOS的基本操作(如修改密码、检查阵列卡型号)、调整启动和强制模式、配置高级控制器属性(如Boot Mode和Coercion Mode),最后指导用户完成虚拟磁盘的创建及其相关设置(如Write Policy、...
matlab 2012b 钥匙 激活文件
然后,使用`echo [num] > [文件路径]/sriov_numvfs`命令启用VF,其中`[num]`是你想要创建的VF数量。例如,启用8个VF,命令是`echo 8 > /sys/devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:03.0/0000:1a:...
《TM035KDH03规格书》是上海天马微电子公司的一款3.5英寸液晶显示屏的产品手册,详细介绍了该显示屏的各项技术参数、功能特性和使用注意事项。以下是手册中的主要内容: 1. **基本信息**:手册开头声明了文档的...
2. **基本查询和访问数据(03.0.accessing.md)** `sql.DB.Query()`和`sql.DB.QueryRow()`用于执行SQL查询。前者返回一个`sql.Rows`迭代器,可以遍历多行结果;后者用于期望只有一行结果的情况,如果有多行返回则会...