一.<s:url> <s:a><s:param>常见用法javascript
<s:url action="" var=""/>用于产生一个地址css
action 产生出一个地址,能够连接到某个action上html
var 自定义的变量名,将产生的地址放入OGNL Context中java
1.<%@ taglib prefix="s" uri="/struts-tags" %>web
此句表示导入struts标签,并以s为前缀。即以s为前缀的标签均来自struts标签库。编程
2.<link href="<s:url value="/css/tutorial.css"/>" rel="stylesheet" type="text/css"/>session
此句表示利用url标签导入一个路径,连接到一个文件,注意此路径为项目下的绝对路径。app
3.<s:url action="" var="" includeParams="get/none/all">jsp
* all 表示自动将请求本页面的参数,加与本url以后post
* none 表示没有此功能
* get 表示仅get请求本页面的参数,加于本url以后
4. struts2的s:param标签主要有两个属性name与value,
若想在value属性中输入直接量,则能够这样写:<s:param name="tableTitle" value="%{'user'}"/>,
也能够这样写:<s:param name="tableTitle">user</s:param>,这个表达式tableTitle变量的值为user字符串,而不是user变量;
若想取user对象的值,则能够这样写<s:param name="tableTitle" value="user"/>,
<s:param name="age" value="23"> value值计算不出ognl表达式的结果,原样输出.
5. <s:url action="userAction!toReg" namespace="/user" var="url">
<s:param name="参数名称">参数内容</s:param>
</s:url>
id属性已经丢弃,被var所取代,var是在OGNL Context中的名字
(1)<a href="<s:property value="url"/>">注册</a>
(2)<s:a href="%{url}">注册</s:a> struts2标签中用%
(3) <a href="${url}">注册</s:a> 用EL表达式
(4)<a href="<s:url action="userAction!toReg" namespace="/user"/>">注册</a>
<s:url>与<s:param>联合起来使用
直接使用<a href="user/userAction!toReg" >注册</a> 简洁方便,
struts2标签,取其精华。
二.<s:action/> struts2包含请求到一个action
通俗点说,从当前jsp页面(main.jsp)中向action发送请求,把数据显示到相应页面(category.jsp) ,若是设置executeResult=true,
能够把category.jsp信息包含到main.jsp中
举一个例子
struts.xml中
main.jsp页面中
action标签的属性:
id: 可选属性,该属性将会做为该Action的引用ID
name: 必填属性,指定该标签调用哪一个Action
namespace: 可选,指定该标签调用的Action所在的namespace.
executeResult: 可选,指定是否要将Action的处理结果页面包含到本页面。默认是false,即不包含。
ignoreContextParams: 可选,它指定该页面中的请求参数是否须要传入调用的Action、默认是false。
注意<s:action>与<%@include% file="">的区别,后者能够包含一个静态jsp页面
<%@include file="recommend.jsp" %>
拓展:属性var: 若是咱们写了var="***"属性,就会把Action放入OGNL Context中,若是不写默认不放
举一个小例子
项目结构
struts.xml
OneAction
TwoAction
tag.jsp
结果
<s:debug>显示
三.<s:form>, <s:select>,<s:textfield><s:password>常见用法
举一个例子,该例子主要是实现网站商品按照分类排序,主要功能有
当点击选项列表的 按上架时间 降序 选项,该模块商品从新排序。
jsp页面
注意:theme属性:表示主题,可选项有xhtml和simple;若是不写,默认为xhtml。若是为simple,label不起做用了
*labelposition属性 能够在有主题(theme)的前提下,指定label的位置
*required属性 表示"只是必须的",会在label后加一个"*"号
*tooltip属性 提示信息
*tooltipIconPath属性 提示图片的路径 功能:当鼠标放在图片上时,会显示tooltp的值"aaa"
*maxlength属性 maxlength="15"最多输入15个字符
*readOnly属性 readOnly="true"文本框的内容是只读的,不能改
*size属性 size="30"文本框最多显示30个字符 结果
除了struts2标记库自定义的属性,其余全部html的属性均可以使用,好比name value等,可是,有两个属性名字作了改动
class属性 在struts中为cssClass
style属性 在struts中为cssStyle
拓展:<from></from>与<s:form></s:form>比较
1.<from>不提供绝对路径 使用普通html标签 select input </from>
2.<s:form> 自动添加绝对路径 <s:select></s:form>
struts2标签不能嵌套,struts2标签能够实现Action数据回显到页面form表单
四.<s:property >
<s:property value="message" escape="true" default=""/>
*value:从ognl表达式中取出数据
*escape:表示value中从"message"取出的数据是不是转义的,默认是转义的
*default:若是ognl表达式中取不到值,就显示default的值
五.<s:token>
1. 令牌方式,防止重复提交
2.若是发现重复提交,再也不向后继续执行其余拦截器和Action方法, 向前返回字符串 "invalid.token" (result名称)
3.不在默认拦截器组内,必须手动添加
使用步骤:
1) 表单内: <s:token />
2) <action> 配置:
<intercepter-ref name="token" />
<intercepter-ref name="defaultStack" />
3) 添加result名称:invalid.token
<result name="invalid.token">/xxxx.jsp</result>
当咱们在struts.xml采用动态方法的调用,即一个Action请求中包含许多方法,则还须要添加<param name="includeMethods">submitOrder</param>
具体代码以下
struts.xml中
六.<s:set/>
<s:set var="" value="" scope=""/>
从valueStack中取出数据,放入4个范围中
* scope 指定4个范围之一(pageContext,request,session,application)
*value Ognl表达式
举一个例子
七.<s:textarea>
<s:form action="submit" namespace="/user" method="post" theme="xhtml">
<s:textarea label="Textarea" name="content" cols="8" rols="3" />
<s:submit/>
</s:form>
表示8列,3行的文本域
八.<s:checkbox>
当提交按钮,发送的请求会提交.....aaa.action?ok=true
点击提交按钮,发送的请求中会提交One_1.action?ok=false
而普通的<input type="checkbox" name="ok" value="true"/>ok?
若是不勾选,是不会提交One_1.action?ok=false
当使用多个checkbox的时候
在Action 类中定义private List<Integer> sports;
动态生成checkbox
Action类
由于HashMap中的排序是按照hashCode排序的,因此如上显示 ,若是咱们用List,这样更好
九<s:iterator>
count属性 计数从1开始
index属性 下标,技术从0开始
first属性 是否为第一个元素
modulus(n) count除以n后取余
十<s:date>
Action类中
jsp页面
咱们还能够不用标签来表示时间
在BaseAction中 添加format方法
Action类中