回忆

之前看了看自己出现的代码问题,为什么会出现span标签?原来是因为我在添加代码的时候更改了代码的样式,这样的问题以后会在意的。在上一篇中介绍了SSH学习之Struts2中的Action,现在就介绍一下如何从前台获取表单数据。

为什么需要讲解

在学习Servlet阶段,我们知道是使用原始的Servlet语句通过HtttpServletRequest对象获取前台表单数据。但是如果我们需要获取的表单数据太多的话,使用request对象就显得代码多余。所以,Struts2的框架中提供了自己获取表单数据的方法:属性封装和模型驱动。目的是为了减少开发人员的代码量。

属性封装

属性封装主要的特点是提供get方法,不过最好也提供set方法。这是不需要我们自己写代码获取表单数据的,而是Struts2自身带有的一种机制。其底层代码也是原始的Servlet代码,只是Struts2将其进行了封装而已。注意name属性值和Action中的字段要相同,否则会抓取失败。
前台:
<form action="${pageContext.request.contextPath }/testAttribute.action" method="post"><label>用户名:</label><input type="text" name="username"><br><label>密码:</label><input type="password" name="password"><br><input type="submit" value="提交">
</form>

后台:

public class TestAttributeAction extends ActionSupport {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;}@Overridepublic String execute() throws Exception {System.out.println(this.getUsername()+","+this.getPassword());return NONE;}
}

模型驱动ModelDriven(推荐使用)

模型驱动说的也是封装的,他出现的主要目的就是为了减少属性封装中出现的问题,也就是减少Action的代码量,使分层更加清楚。最主要的特点是有一个纯实体类以及实现拦截器。具体步骤:
实体类:
public class User implements Serializable {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;}
}

Action类:必须要实现ModelDriven接口,必须要实例化实体类(new命令),必须返回user对象。

public class TestModelAction extends ActionSupport implements ModelDriven<User> {private User user = new User();@Overridepublic User getModel() {// TODO Auto-generated method stubreturn user;}@Overridepublic String execute() throws Exception {System.out.println(user.getUsername() + "," + user.getPassword());return SUCCESS;}
}

问题

但是在实际开发中,我们经常遇见确认密码、验证码等功能,那么这些功能怎么实现呢?这就需要验证的概念了。验证下一篇再笔记吧。

多余的话

这是我的理解,多多见谅

SSH学习之Struts2获取表单数据相关推荐

  1. PHP获取表单数据的方法有几种,如何实现PHP获取表单数据与HTML嵌入PHP脚本

    如何实现PHP获取表单数据与HTML嵌入PHP脚本 导语:如何实现PHP获取表单数据与HTML嵌入PHP脚本,下面是小编给大家提供的操作讲解,大家可以参考阅读,更多详情请关注应届毕业生考试网. 常用的 ...

  2. react如何获取表单数据

    react如何获取表单数据? 分为两种情况:第一种是每次输入都会更新状态第二种是只有用到的时候才获取(会用大量的ref,不推荐) 这里主要介绍第一种 //这是我们要操作的数据state = {resu ...

  3. python获取表单数据的代码_使用flask和python从html表单获取表单数据

    我正在尝试在按下submit时从文本字段中获取表单数据,以便将其放入json格式并作为另一个页面访问json数据,该页面将是localhost:5000/info.每次我试图用request.form ...

  4. 观看慕课老师milanlover视频Tomcat装在Servlet的三种情况+Servlet获取表单数据+Servlet相对路径

    在src新建TestServlet1: package servlet;import java.io.IOException; import java.io.PrintWriter;import ja ...

  5. 微信小程序之获取表单数据

    前言:微信小程序中很多地方运用到了表单,很多时候我们需要把表单中的内容提取出来返回给后台,这里我随便写了一点 注意点: 1.所有的input  textarea button全部包含在form表单元素 ...

  6. servlet获取表单数据

    1.sevlet获取表单数据 在很多的情况下,我们需要在浏览器,Web服务器和后台程序之间传递数据.浏览器使用两种方法可将这些信息传递到Web服务器,分别为Get方法和Post方法. 2.Get方法, ...

  7. JSP简单练习-获取表单数据

    在JSP中,服务器端程序与客户端交互最常用的方法就是采用表单提交数据.表单提交的方法主要有两种,一种是get方法,另一种是post方法,两者最大的区别:使用get方法提交的数据会显示在浏览器的地址栏中 ...

  8. 服务器端获取表单数据

    一.单个值 单个值的表单标签有:文本框.密码框.文本域.下拉列表.单选 项目如下: 获取单个值: 代码如下: <html><head><meta http-equiv=& ...

  9. 微信小程序表单数据提交服务器,微信小程序防走弯路之:提交表单获取表单数据...

    1.简历一个简单的表单,点击'提交'按钮时,提交表单内容 2. 以姓名框为例 .wxml #调用formSubmit函数                               提交 class为 ...

  10. JSP简单练习-EL获取表单数据

    输入用户名和密码的界面: <%@ page language="java" contentType="text/html;charset=gb2312" ...

最新文章

  1. Attention!注意力机制可解释吗?
  2. python装饰器原理-看完这篇文章还不懂Python装饰器?
  3. C++--day06
  4. js实现新闻滚动-单行滚动或者多行滚动
  5. rust 局域网联机_分享自己用 Rust 写的可以直接利用 SOCKS 代理的游戏加速器
  6. Android入门(10)| Fragment碎片详解
  7. 浅谈python MRO与Mixin模式
  8. jeecg json返回值显示失败or成功 j.setSuccess(false/*true*/)
  9. 零基础应该先学习 java、php、前端 还是 python?
  10. Android学习之布局管理器嵌套
  11. FAILED Execution Error, return code 2 from org
  12. 自动拼图android github,GitHub - zero0011/Puzzle: 拼图游戏 , 可自动实现 拼图操作
  13. OAuth2资源服务器
  14. cba比赛比分预测_昨日预测CBA一红一黑,今日继续给大家带来CBA全部比赛4场
  15. Python列表解析式-生成器
  16. Git 版本回退方法
  17. 工作中“偷懒”的窍门?这些技巧请你收下!
  18. 3.Trie树(题:最大异或对)
  19. 启动报错:Caused by: org.apache.ibatis.binding.BindingException汇总解决
  20. 和阿文一起学H5——H5工具、素材

热门文章

  1. VC Redist Installer 1.6下载
  2. Cognos常见错误解决办法
  3. Html5下载功能实现
  4. Ubuntu安装JDK教程
  5. Python 之 字典(dict)的创建、字典生成式、复制添加更新删除、查询遍历比较等
  6. 16款私藏多年的PC端效率小软件推荐
  7. 金算盘加密狗维护信息
  8. ----发现一款可以代替双手的软件 “按键精灵”
  9. Fatal error in launcher: Unable to create process using ‘“c:\python27\python.exe“ “C:\Python27\Scri
  10. Android面试简历