`
asjava
  • 浏览: 137905 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

03.0 使用Spring标签创建表单

 
阅读更多

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>密&nbsp&nbsp码</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).

分享到:
评论

相关推荐

    B116XAN03.0-AUO_B116_B116XAN03.0_LCD_

    标签"B116 B116XAN03.0 LCD"强调了这个话题的核心,即B116系列的LCD显示屏,特别是B116XAN03.0型号。"B116"可能代表屏幕的尺寸,可能是11.6英寸,而".0"可能表示这是该系列的一个特定版本或修订版。"LCD"是" Liquid ...

    CRE03.0的D700破解文件

    CRE03.0的D700破解文件,一键破解。

    OIF_CEI_03.0 标准

    OIF_CEI_03.0标准是一项面向40Gbps和100Gbps数据速率的国际标准,由国际非盈利组织光学互连网络论坛(Optical Internetworking Forum,简称OIF)制定。OIF拥有超过90个会员公司,涵盖了全球领先的运营商和供应商。该...

    E03.0 elements structure

    software engineering ppt

    OIF_CEI_03.0.pdf

    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 – ...

    XZ03.0旋转LED显示原理介绍.doc

    通常情况下,我们会使用for循环来送数据,一次发送16列数据,然后通过延时指令使LED能够依次点亮,形成稳定的图像。为了达到文字滚动效果,会引入字幕计数器的概念。每当LED旋转一圈,字幕计数器增加,指向下一列,...

    B156HAK03.0_HW2A_Ver1.0_20170801_201903299279.pdf

    【B156HAK03.0】液晶屏规格书是AU Optronics Corporation(友达光电)发布的产品详细规范文档,旨在提供该特定型号LCD面板的技术参数、性能指标和应用指南。友达光电是一家全球领先的液晶显示技术制造商,为LCD、PDP...

    IBM WebSphere Application Server实用大全

    9. **持续集成与自动化部署**:理解使用Ant、Maven或Jenkins进行自动化构建和部署的流程,以及使用WSAdmin脚本进行服务器管理和配置。 10. **故障排查**:学习日志分析技巧,使用TraceFacility进行问题诊断,以及...

    django-cas-ng:Django CAS 1.02.03.0客户端身份验证库,支持Django 2.0、2.1、2.2、3.0和Python 3.5+

    **Djangocas** 和 **DjangoPython** 是与这个主题相关的标签,前者特指Django与CAS的结合,后者表示使用Python语言进行Django开发。 在**django-cas-ng-master** 文件中,你可能找到该库的源代码,包括Python模块、...

    DPDK绑定和解绑网卡脚本

    例如,命令可能为`./dpdk-devbind.py --bind=vfio-pci 0000:00:03.0`,其中`0000:00:03.0`是网卡的PCI地址。 解绑过程与绑定相反: 1. **恢复网卡**: 当需要将网卡重新放回内核驱动管理时,使用`dpdk-devbind.py`...

    Aptio_V_AMI_Firmware_Update_Utility_V5.14.03.0039.zip

    "标签"中提到的"AMI Firmware Update Utility 5.14.03.0039"是对该工具的简要概述,强调了它专为AMI的固件更新设计,并且对应的具体版本号与标题一致。 在压缩包内的文件名称列表中,我们看到有以下几个文件: 1. ...

    linux-KVM虚拟机GPU透传操作步骤.docx

    lspci -v -s 00:03.0 ``` 这将显示出物理机上的GPU设备信息,包括设备号、设备名称、设备类型等信息。 三、脱离GPU设备 在虚拟机中,需要将GPU设备从物理机上脱离出来,以便将其分配给虚拟机。可以使用virsh ...

    基于iSCSI的WinTarget技术在无盘教学网中的应用

    通过使用WinTarget技术,可以创建一个混合型的存储系统,该系统不仅成本低廉,而且易于维护,同时还具备强大的数据保护功能。 ##### 2.1 解决方案概述 在无盘教学网中,工作站通常不配备本地硬盘,这导致了用户...

    web1.0和web2.0和web3.0

    在这个阶段,网站更多地扮演着信息发布的角色,用户只能被动地接受这些信息,无法参与到内容的创建和互动中。 **特点总结:** - **单向信息传递**:信息主要由网站发布者向用户单向传输。 - **静态内容**:网站上的...

    Why-you-should-stop-using-Chrome:有关为何应停止使用Google Chrome的文章

    用另一种语言阅读: 除英语以外的其他语言的翻译是... 本文将帮助您做出选择(如果尚未选择)指数01.0-内存使用02.0-隐私03.0-ChromeBooks 03.0.1-面向所有人03.0.2-对于开发人员03.0.3-BSD 04.0-广告屏蔽05.0-安培06.

    RAID设置流程解析 - SAS9460-8i 阵列卡的BIOS配置步骤

    具体步骤涉及进入并配置BIOS的基本操作(如修改密码、检查阵列卡型号)、调整启动和强制模式、配置高级控制器属性(如Boot Mode和Coercion Mode),最后指导用户完成虚拟磁盘的创建及其相关设置(如Write Policy、...

    各种软件crack

    matlab 2012b 钥匙 激活文件

    Linux下配置端口SR-IOV

    然后,使用`echo [num] &gt; [文件路径]/sriov_numvfs`命令启用VF,其中`[num]`是你想要创建的VF数量。例如,启用8个VF,命令是`echo 8 &gt; /sys/devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:03.0/0000:1a:...

    TM035KDH03_V1.3.pdf

    《TM035KDH03规格书》是上海天马微电子公司的一款3.5英寸液晶显示屏的产品手册,详细介绍了该显示屏的各项技术参数、功能特性和使用注意事项。以下是手册中的主要内容: 1. **基本信息**:手册开头声明了文档的...

    go-database-sql-tutorial-translation

    2. **基本查询和访问数据(03.0.accessing.md)** `sql.DB.Query()`和`sql.DB.QueryRow()`用于执行SQL查询。前者返回一个`sql.Rows`迭代器,可以遍历多行结果;后者用于期望只有一行结果的情况,如果有多行返回则会...

Global site tag (gtag.js) - Google Analytics