框架学习之Struts2(二)---基本配置和封装表单数据
一、结果页面配置
1.局部结果页面配置
<!-- 局部结果页面配置-->
<package name = "demo" extends = "struts-default" namespace = "/">
<action name = "action1" class = "xxx.xxx.AAction">
<result name = "ok" >/hello.jsp</result>
</action>
<action name = "action2" class = "xxx.xxx.BAction">
<result name = "ok">/hello.jsp</result>
</action>
<package>
2.全局结果页面
当多个action中的方法返回值相同,并且所到的页面也是一样的,这个时候可以进行全局结果页面配置
<!--全局结果页面配置-->
<package name = "demo2" extends = "struts-default" namespace = "/">
<global-results>
<result name = "ok">/hello.jsp</result>
</global-results>
<action name = "action1" class= "xxx.xxx.AAction"></action>
<action name = "action2" class = "xxx.xxx.BAction></action>
</package>
3.当全局和局部都配置了时访问局部结果页面!
二、result标签中的type属性
该属性是用来配置到路径中的方式(转发or重定向)
1.dispatcher 默认值 转发
2.redirect 重定向(此时配置路径时跟转发一样 无需加上项目名)
3.chain:转发到action,但是一般不用,因为会有缓存问题
4.redirectAction 重定向到acion(路径直接配置action的访问名即可)
三、Action获取表单数据
Action中没有request不能直接使用request来获取表单数据,我们可以有三种方式来获取
1.使用ActionContext类
使用该类创建对象,然后通过一系列方法来进行操作如下图:

2.使用ServletActionContext类
该类都是静态方法 获取request对象后就可以获取表单数据了 具体操作和servelet中一样
3.通过特定接口访问

四、封装表单数据
1.原始方法封装:先获去request对象 然后逐个获取表单数据进行封装。
2.属性封装:在action成员变量为位置定义变量,变量名称要和表单输入项的name属性值相同然后生成他们的set方法后执行,这些属性就会被赋值,而后就可以封装了。

3.模型驱动封装:要求action类中创建实体类对象实现ModelDriven借口 和接口中的getModel方法返回创建的对象。


4.表达式封装:在在action中声明实体类然后生成set,get方法,然后在表单属项的name属性中写表达式


5.封装到集合中
1.封装到list集合中:在action中声明list集合,然后生成(get可以不用),set方法,最后再在表单输入项中写表达式。


2.封装到map集合:在action中声明map集合 并生成set,get方法,最后再在表单输入项中写表达式


注:模型驱动封装和表达式的封装主要在于模型驱动封装一次只能封装一种实体类对象而表达式封装可以封装多个。
当模型驱动封装和属性封装同时使用时,只执行模型驱动封装。
框架学习之Struts2(二)---基本配置和封装表单数据的更多相关文章
- Yii框架学习笔记(二)将html前端模板整合到框架中
选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...
- Spring框架学习之IOC(二)
Spring框架学习之IOC(二) 接着上一篇的内容,下面开始IOC基于注解装配相关的内容 在 classpath 中扫描组件 <context:component-scan> 特定组件包 ...
- Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查
本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...
- 基于Flask框架搭建视频网站的学习日志(三)之原始web表单
基于Flask框架搭建视频网站的学习日志(三)1.原始Web 表单 本节主要用于体验一下前端后端直接数据的交互,样例不是太完善,下一节会加入Flash处理,稍微完善一下页面 (备注:建议先阅读廖雪峰老 ...
- Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点)
Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点) 一丶Django的静态文件配置 #we ...
- struts2中token防止重复提交表单
struts2中token防止重复提交表单 >>>>>>>>>>>>>>>>>>>&g ...
- 第二十二章 Django会话与表单验证
第二十二章 Django会话与表单验证 第一课 模板回顾 1.基本操作 def func(req): return render(req,'index.html',{'val':[1,2,3...]} ...
- php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中
php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...
- amazeui学习笔记--css(HTML元素3)--表单Form
amazeui学习笔记--css(HTML元素3)--表单Form 一.总结 1.form样式使用:在容器上添加 .am-form class,容器里的子元素才会应用 Amaze UI 定义的样式. ...
随机推荐
- 前端的UI设计与交互之数据录入篇
数据录入是获取对象信息的重要交互方式,用户会频繁的增加.修改或删除信息.多种多样的文本录入和选择录入方式帮助用户更加清晰和高效的完成这项体验.设计者应当注意这几点:为初级用户/偶尔访问的用户提供简单易 ...
- 桶排序/基数排序(Radix Sort)
说基数排序之前,我们先说桶排序: 基本思想:是将阵列分到有限数量的桶子里.每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序).桶排序是鸽巢排序的一种归纳结果.当要被排序 ...
- 【Python】 list & dict & str
list & dict & str 这三种类型是python中最常用的几种数据类型.他们都是序列的一种 ■ 序列通用操作 1. 分片 s[a:b] 返回序列s中从s[a]到s[b- ...
- 后端Nodejs利用node-xlsx模块读取excel
后端Nodejs(利用node-xlsx模块) /** * Created by zh on 16-9-14. */ var xlsx = require("node-xlsx") ...
- 设计模式之迭代器模式详解(foreach的精髓)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 各位好,很久没以LZ的身份和 ...
- Linux下的指令:find,which
1. 在Linux系统下,使用find来查找文件: find [path] [condition] [operation] path指定了在哪个目录查找,condition限定了查找条件,operat ...
- linux dd使用记录
dd if=/dev/sda of=/dev/sdb bs=10M Linux下显示dd命令的进度: dd if=/dev/zero of=/tmp/zero.img bs=10M count=100 ...
- C#/AutoCAD 2018/ObjectArx/二次开发添加图形对象步骤和添加直线的例子(三)
1.创建一个图形对象的步骤如下(1)得到创建对象的图形数据库:(2)在内存中创建实体类的一个对象:(3)定义一个指向当前数据库的事务处理:(4)打开图形数据库的块表:(5)打开一个存储实体的块表记录( ...
- 【java并发系列】Fork/Join任务(转)
原文链接 当我们需要执行大量的小任务时,有经验的Java开发人员都会采用线程池来高效执行这些小任务.然而,有一种任务,例如,对超过1000万个元素的数组进行排序,这种任务本身可以并发执行,但如何拆解成 ...
- 从Firefox升级说学习方法
今天早上,打开PortableAPPs时,它提示我升级FireFox,跟往常一样我没考虑就升级了. 打开Firefox 57神速,很是惊喜,打开后发现悲剧了,自己(通过下载插件)定制的功能都不能使用了 ...