• request带着参数来,aciton对其进行处理。在学习action之前,使用的是servlet对request进行处理。request请求时会带有参数,所以我们要对这些参数进行封装。
1. 为什么要使用数据的封装呢?
* 作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中
* 封装数据为开发提供了很多方便
* Struts2框架提供了很强大的数据封装的功能,不再需要使用Servlet的API完成手动封装了!! 2. Struts2中提供了两类数据封装的方式?
* 第一种方式:属性驱动(有两种方式:封装参数,另外一个是将参数封装到javaBean中)
A. 提供对应属性的set方法进行数据的封装。(封装参数)(属性驱动中用的最多的是封装参数,而不是封装javaBean)
* 表单的哪些属性需要封装数据,那么在对应的Action类中提供该属性的set方法即可。
* 表单中的数据提交,最终找到Action类中的setXxx的方法,最后赋值给全局变量。
            * 注意0:Struts2的框架采用的拦截器完成数据的封装。
* 注意1:这种方式不是特别好:因为属性特别多,提供特别多的set方法,而且还需要手动将数据存入到对象中.
* 注意2:这种情况下,Action类就相当于一个JavaBean,就没有体现出MVC的思想,Action类又封装数据,又接收请求处理,耦合性较高。
      1.书写index.jsp表单:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body> <h3>属性驱动封装数据</h3>
<form action="${ pageContext.request.contextPath }/regist1Action.action" method="post">
姓名<input type="text" name="username"/><br/>
密码<input type="text" name="password"/><br/>
<input type="submit" value="注册"> </form>
</body>
</html>

      2.写对应的RegistAction类:

package com.huida.action1;

import com.opensymphony.xwork2.ActionSupport;

public class Regist1Action extends ActionSupport{

    private String username;
private String password; public void setUsername(String username) {
this.username = username;
} public void setPassword(String password) {
this.password = password;
}
//以前封装数据是先通过get方法获取参数然后再进行封装。
//现在struts已经给我们封装好了,我们只需要按照他的规则写就ok了:定义变量,对应的set方法就可以了
@Override
public String execute() throws Exception { System.out.println(username+"..."+password);
return NONE;
}
}

      3.对书写的action进行配置,注意这里action标签中name的值应该与jsp页面中写的跳转地址相同,否则会报错:

<package name="demo" namespace="/" extends="struts-default">
<action name="regist1Action" class="com.huida.action1.Regist1Action"></action>
</package>

      4.运行index.jsp文件,在表单中输入姓名和密码,点击注册,在控制台输出:

      
 

Struts2框架的数据封装一之属性封装(属性封装的第一种方式:对参数进行封装)的更多相关文章

  1. Struts2框架的数据封装一之属性封装(属性封装的第二种方式:封装成javaBean)

    Struts2中提供了两类数据封装的方式? 第一种方式:属性驱动(有两种方式:一个对属性,另外一个是将参数封装到javaBean中) B. 在页面上,使用OGNL表达式进行数据封装.(将参数封装到ja ...

  2. Spring整合Struts2框架的第一种方式(Action由Struts2框架来创建)。在我的上一篇博文中介绍的通过web工厂的方式获取servcie的方法因为太麻烦,所以开发的时候不会使用。

    1. spring整合struts的基本操作见我的上一篇博文:https://www.cnblogs.com/wyhluckdog/p/10140588.html,这里面将spring与struts2 ...

  3. 通过属性 Cesium的FBO主要支持两种方式

    角色其实就是一类权限的分组,所以给用户分配角色其实也是在给用户分配权限.在oracle中有三个比较常用的角色.对于一般不是很严格的系统可以授予开发用户CONNECT.RESOURCE角色权限即可. 其 ...

  4. 《连载 | 物联网框架ServerSuperIO教程》- 10.持续传输大块数据流的两种方式(如:文件)

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  5. 解决mybatis中 数据库column 和 类的属性名property 不一致的两种方式

    解决方式way1:resultMap (1)studentMapper.xml <!-- 当数据库的字段名 和 类的属性名 不一致的时候的解决方式:2种 way1--> <selec ...

  6. flask框架(二)——flask4剑客、flask配置文件的4种方式

    之前学习的Django有必备三板斧:render,HttpResponse,redirect,JsonResponse 在flask也有,但是有些不同 一.Flask4剑客 1.直接返回字符串(ret ...

  7. 7.Struts2框架封装数据

    Struts2框架提供了很强大的数据封装的功能,不再需要使用Servlet的API完成手动封装了!! 第一种方式:属性驱动 > 提供对应属性的set方法进行数据的封装.--经常使用 * 表单的哪 ...

  8. struts2框架学习笔记4:获取参数

    第一种参数获取方式: 编写一个前端页面,提交表单,做示例: <form action="${pageContext.request.contextPath}/Demo1Action&q ...

  9. (jquery+ajax)省市区三级联动(封装和不封装两种方式)-----2017-05-14

    首先,要实现如下图效果, 1.要理清思路: 先做出三个下拉菜单----根据第一个下拉菜单的value值获取第二个下拉列表的内容,第三个同理. 2.用到的数据库表:Chinastates表 规律:根据国 ...

随机推荐

  1. shell字符串基本操作

    shell脚本中一切变量皆字符串,所以必须掌握字符串的常用处理方法.比如获取字符串长度.获取字符串指定位置字符.替换字符串中的指定字符或者删除某些字符等操作. 1.字符串操作列表 (1)var=val ...

  2. 检测浏览器是否支持cookie功能

    <script> if(navigator.cookieEnabled) { document.write("你的浏览器支持cookie功能!"); } else{ d ...

  3. Android Debug Bridge命令介绍[转]

    Android Debug Bridge命令介绍 Android Debug Bridge的一些基本命令.这个工具直译过来就是Android调试桥的意思.它提供了强大的特性,例如复制文件到设备或从设备 ...

  4. 吴裕雄 python 爬虫(3)

    import hashlib md5 = hashlib.md5() md5.update(b'Test String') print(md5.hexdigest()) import hashlib ...

  5. 吴裕雄 11-MySQL查询数据

    以下为在MySQL数据库中查询数据通用的 SELECT 语法:SELECT column_name,column_nameFROM table_name[WHERE Clause][LIMIT N][ ...

  6. 启动 idea 编译报错 kotlin

    怀疑是插件问题. 重新删除了.  C:\Users\user  里面inteliJIdea2018.3 缓存 ,解决

  7. array_column 低版本兼容

    function i_array_column($input, $columnKey, $indexKey=null){ if(!function_exists('array_column')){ $ ...

  8. target=_blank攻击

    [target=_blank攻击] 在<a>标签中加入 rel="noopener noreferrer" 来避免. 参考:https://mathiasbynens. ...

  9. SpringMVC参考

    史上最简单的 Spring MVC http://blog.csdn.net/column/details/14594.html

  10. 调试JS代码的神器

    1.火狐浏览器的 “Web开发者” 可以打断点,实时查看当前值 2.谷歌浏览器的“开发者工具” 可以打断点,实时查看当前值