struts2 标签库

tag-reference.html 就是 struts2标签规范

一、 通用标签库 的学习

<s:property> 解析ognl表达式,设置默认值,设置内容是否HTML转义

<s:set> 向四个数据范围保存数据

<s:iterator> 遍历值栈中数据

<s:if> <s:elseif> <s:else> 进行条件判断 -------- elseif可以有多个

<s:url> 进行URL重写(追踪Session) ,结合s:param进行参数编码

<s:url action="download" namespace="/" var="myurl">

<s:param name="filename" value="%{'MIME协议简介.txt'}"></s:param>

</s:url>

<s:property value="#myurl"/>

<s:a> 对一个链接 进行参数编码

<s:a action="download" namespace="/" >下载MIME协议简介.txt

<s:param name="filename" value="%{'MIME协议简介.txt'}"></s:param>

</s:a>

OGNL 了解部分 : 支持赋值操作和表达式串联 、 操作集合对象

1) 在值栈中保存一个对象

<s:property value="price=1000,name='冰箱',getPrice()"/> 自动查找值栈中price 和name 属性 为其赋值

2) ognl操作集合

<s:property value="products[0].name"/> 访问集合第一个元素name属性

<s:property value="map['name']"/> 访问map中key为name的值

{} 直接构造List元素、 #{}直接构造 Map元素

<s:iterator value="{'aaa','bbb'}" var="s">

<s:property value="#s"/>

</s:iterator>

<s:iterator value="#{'ccc':'111','ddd':'222' }" var="entry">

<s:property value="#entry.key"/>

</s:iterator>

二、 UI标签库的学习 (Form标签)

使用struts2 form标签 好处 : 支持数据回显 , 布局排班(基于Freemarker模板定义 )

1、struts2 表单标签 value属性。 必须写%{} 进行设值

使用struts2表单标签前, 必须配置StrutsPrepareAndExecuteFilter

The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag

<s:form> 表单标签

<s:form action="regist" namespace="/" method="post" theme="xhtml"> --- theme="xhtml"默认布局样式

<s:textfield> 生成 <input type="text" >

<s:password > 生成 <input type="password" >

<s:submit type="submit" value="注册"/>生成 <input type="submit" >

<s:reset type="reset" value="重置" />生成 <input type="reset" >

<s:textarea> 生成 <textarea>多行文本框

<s:checkboxlist> 生成一组checkbox

2、使用ognl构造Map (看到值和提交值 不同时)

<s:checkboxlist list="#{'sport':'体育','read':'读书','music':'音乐' }" name="hobby"></s:checkboxlist>

<s:radio> 生成一组radio

3、使用 ognl构造List (看到内容和提交值 相同时)

<s:radio list="{'男','女'}" name="gender"></s:radio>

<s:select> 生成一个<select>

<s:select list="{'北京','上海','南京','广州'}" name="city"></s:select>

4、struts2 开发 密码框 默认不回显

<s:password name="password" id="password" showPassword="true"/>

5、 页面元素主题设置

default.properties ---- struts.ui.theme=xhtml 设置struts2 页面元素使用默认主题

struts.ui.templateSuffix=ftl 默认模板引擎 Freemarker

修改主题

方式一 :<s:textfield name="username" label="用户名“theme="simple"></s:textfield> 只对当前元素有效

方式二 :<s:form action="" method="post" namespace="/ui“ theme="simple">对form中所有元素有效

方式三 : struts.xml

<constant name="struts.ui.theme" value="simple"></constant> 修改默认主题样式,页面所有元素都有效

优先级 :方式一 > 方式二 >方式三

三、防止表单重复提交原理

表单防止重复提交

表单重复提交 危害:刷票、 重复注册、带来服务器访问压力(拒绝服务)

1、 在jsp通过 <s:token />生成令牌号

生成表单隐藏域

将令牌号保存到Session

2、 通过struts2提供 tokenIntercetor拦截器 完成请求中令牌号 和 session中令牌号 比较

<interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/><action name="token" class="cn.itcast.struts2.TokenAction"><result>/index.jsp</result><!-- 重新定义拦截器 --><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="token"></interceptor-ref></action>

3、 当表单重复提交时,token拦截器自动跳转result name="invalid.token"

通过 <s:actionError/> 显示错误信息

覆盖重复提交信息 struts.messages.invalid.token=您已经重复提交表单,请刷新后重试

四、Struts2 内置json插件

知识点 :struts2的 Ajax开发

Ajax开发客户端 和 服务器交互数据格式 --------------- json

json 是最轻量级,体积最小

服务器将程序处理结果,转换为json格式发送给 客户端

json-lib 、 flexjson 工具类库

struts2-json-plugin-2.3.7.jar

案例一: 输入用户名,鼠标点击密码(触发用户名元素离焦事件),使用Ajax 将用户名发送到服务器 判断是否存在

jquery 1.4 、 1.6新特性比较多 (企业主流 1.4)

使用struts2 json插件

要点1 : <package> extends 继承json-default

要点2 : <result> type 类型写json

struts2 json插件 ,默认将值栈root顶端对象 所有属性返回(get方法)

不想将company属性返回 ,在get方法上@JSON(serialize=false)

案例二 :服务器将商品对象 List列表返回

如果Action 实现ModelDriven, model对象就是值栈栈顶对象,struts2 json插件默认 将model返回

通过设置root属性,修改插件返回 根对象

* <param name="root">action</param> 将Action作为根对象返回

只想要每个商品的 name 属性

方案一: 在pnum、price的get方法上 添加@JSON(serialize=false) =========只要@JSON注解,属性将永远不能参与json返回

方案二: 设置 includeProperties属性

 <param name="includeProperties">products\[\d+\]\.name</param>

struts2教程(10)相关推荐

  1. [译][Tkinter 教程10] Text 控件

    已获原作者授权. 原系列地址: Python Tkinter 简介及简例 Text 控件用来显示多行文本. Tkinter 的 Text 控件很强大, 很灵活, 可以实现很多功能. 虽然这个控件的主要 ...

  2. 黑马lavarel教程---10、lavarel模型关联

    黑马lavarel教程---10.lavarel模型关联 一.总结 一句话总结: 1.模型关联比较方便,一次定义,后面都可以使用 2.关联关系 使用动态属性进行调用 1.一对多,多对多实例? 一对多: ...

  3. 国二vb计算机过的办法,国二计算机VB教程10.ppt

    国二计算机VB教程10 第10章 键盘与鼠标事件过程 本章内容: 10.1 KeyPress事件 10.2 KeyDown和KeyUp事件 10.3 鼠标事件 10.4 鼠标光标的形状 10.5 拖放 ...

  4. STM32 进阶教程 10 - RAM中调试程序

    前言 在stm32开发过程中,程序调试是一个比较耗时且又重要的问题,特别是在固件代码达到一定的复杂度后,程序下载过程就一个比较耗时过程,同时STM32芯片有FLASH烧写次数有限,像103系列手册中标 ...

  5. STM32 基础系列教程 10 - 单线串口(半双工)

    前言 在工程应用中,很多时间为了方便走线会采用单线串口方案,本节将学习stm32 usart单线串口的使用,学会用使用单线串口收发数据. 示例详解 基于硬件平台: STM32F10C8T6最小系统板, ...

  6. wcf简单教程(10) ajax调用,wcf简单教程(10) ajax调用

    wcf简单教程(10) ajax调用 [2021-02-11 16:23:59]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&q ...

  7. 【iVX 初级工程师培训教程 10篇文拿证】01 了解 iVX 完成新年贺卡

    目录 [iVX 初级工程师培训教程 10篇文拿证]01 了解 iVX 完成新年贺卡 [iVX 初级工程师培训教程 10篇文拿证]02 数值绑定及自适应网站制作 [iVX 初级工程师培训教程 10篇文拿 ...

  8. 【iVX 初级工程师培训教程 10篇文拿证】02 数值绑定及自适应网站制作

    目录 [iVX 初级工程师培训教程 10篇文拿证]01 了解 iVX 完成新年贺卡 [iVX 初级工程师培训教程 10篇文拿证]02 数值绑定及自适应网站制作 [iVX 初级工程师培训教程 10篇文拿 ...

  9. 【iVX 初级工程师培训教程 10篇文拿证】03 事件及猜数字小游戏

    目录 [iVX 初级工程师培训教程 10篇文拿证]01 了解 iVX 完成新年贺卡 [iVX 初级工程师培训教程 10篇文拿证]02 数值绑定及自适应网站制作 [iVX 初级工程师培训教程 10篇文拿 ...

  10. 【iVX 初级工程师培训教程 10篇文拿证】04 画布及我和 iVX 合照

    目录 [iVX 初级工程师培训教程 10篇文拿证]01 了解 iVX 完成新年贺卡 [iVX 初级工程师培训教程 10篇文拿证]02 数值绑定及自适应网站制作 [iVX 初级工程师培训教程 10篇文拿 ...

最新文章

  1. 优胜劣汰有利于整个团购行业服务的提升
  2. linux静态分配设备号,Linux驱动开发之静态申请设备号
  3. 图像分割评估指标——表面距离计算库
  4. 推荐linux输入法,linux中文输入法 【搞定技巧】
  5. 畅聊Java异步编程
  6. Token是什么 Token登录认证
  7. R语言 伯努利试验和二项分布
  8. COLING 2018 accepted paper
  9. 计算机word上下左右边距,Word页边距调整设置(上下左右边距,2003-2013)
  10. 你应该怎么样活着才有意思
  11. Android逆向之分析某锁机恶意软件
  12. Docker六大优势,云中部署模式、以及视频demo
  13. 旧电脑又卡有慢,一招设置电脑最佳性能
  14. celeste mod如何安装
  15. OneNote重装或升级版本后如何同步之前的在线笔记?
  16. 解决Authorization not available. Check if polkit service...问题
  17. oracle迁移mysql自增序列问题
  18. NodeJs - for循环的几种遍历方式
  19. 文件操作和IO --- 文件操作
  20. fastadmin 子账号看不到菜单,菜单没有查看,编辑等选项

热门文章

  1. STM32_DMA 标准初始化设置解释
  2. C++ Primer 5th笔记(chap 16 模板和泛型编程) 类模板的成员函数
  3. 区块链与边缘计算(1)基本概念
  4. Hyperledger Fabric 管道(2) 管道的操作
  5. 广东省老龄化预测及影响因素分析
  6. 密码技术应用--SM4文件加解密
  7. Web安全之命令执行漏洞
  8. 一致性算法 - Raft
  9. 如何防止android软件被反编译,破解盗版
  10. 2020-11-27(下标寻址和指针寻址)