struts标签库.docx
《struts标签库.docx》由会员分享,可在线阅读,更多相关《struts标签库.docx(18页珍藏版)》请在冰豆网上搜索。
struts标签库
struts1标签库
1、Bean标签库
Bean标签库中标签可以访问已经存在的JavaBean以及它们的属性,还可以
定义新的Bean,把它存放在用户指定的任何范围内,供网页或者其它元素访问,
Bean标签库分为以下三类:
1)用于访问HTTP请求信息或者JSP隐含对象的Bean标签
a)cookie>
用于检索发送到服务器端的Cookie,包括以下属性:
id:
定义一个Cookie类型的变量,这个变量又是作为将信息
存放在page范围内的key。
name:
指定Cookie的名字
value:
指定Cookie的默认值,如果name指定的Cookie不存在,
就使用value指定的属性值。
例如:
cookieid="cookie"name="cookieName"
value="defaultValue"/>
先检索名为"cookieName"的Cookie是否存在,如果
存在,就把它的值赋给cookie变量的value值,如果
不存在,cookie变量的值就采用默认值"defaultValue"。
b)header>
用于检索HTTP请求中的Header信息,包括以下属性:
id:
定义一个存放信息的字符串变量,这个变量又是作为
将信息存放在page范围内的key。
name:
指定要检索的Header中的字段名字
例如:
headerid="lang"name="Accept-Language"/>
等于
Stringvalue=
(HttpServletRequest)request.getHeader("Accept-Language");
Stringlang=value;
pageContext.setAttribute("lang",value);
c)parameter>
用于检索HTTP的请求参数,包括以下属性:
id:
定义一个存放信息的字符串变量,这个变量又是作为
将信息存放在page范围内的key。
name:
指定请求的参数名
value:
指定请求参数的默认值
例如1:
parameterid="arg1"name="testarg"
value="noarg"/>
等于
Stringtemp=request.getParameter("testarg");
if(temp!
=null){
Stringarg1=temp;
pageContext.setAttribute("arg1",temp);
}else{
Stringarg1="noarg";
pageContext.setAttribute("arg1","noarg");
}
例如2:
parameterid="arg2"multiple="yes"
name="testarg"value="noarg"/>
arg2是一个存放所有request请求中参数值的字符串数组。
输出所有的参数值:
<%
for(inti=0;iout.write(arg2[i]+"
");
}
%>
d)page>
用于检索JSP隐含对象(如request、session、response)包括
以下属性:
id:
定义一个引用隐含对象的变量,这个变量又是作为
将信息存放在page范围中的key。
property:
指定隐含对象的名字,可选值包括application、
config、request、response和session。
例如:
pageid="this_session"property="session"/>
writename="this_session"property="creationTime"/>
表示定义了一个"this_session"变量,它引用JSP中
的session隐含对象,接着输出该变量中属性
createTime的值(其实是session中属性createTime的值)。
2)用于访问Web应用资源的Bean标签
a)message>
用于输出资源配置文件中的一条信息,message>标签的bundle
属性指定资源配置文件,它和Struts配置文件中的
元素的key属性匹配。
如果没有设置bundle属性,就采用默认的资源配置文件。
Struts配置文件中配置了两个资源配置文件:
第一个资源配置文件没有指定key属性,因此是默认的资源配置文件,
它的资源文件为ApplicationResources.properties。
第二个资源配置文件指定key属性为"special",它的资源文件
为SpecialResources.properties。
内容:
hello=Hello,ereryone!
message>标签三种使用方式:
a1)messagebundle="special"key="hello"/>
bundle-->中的key
key-->SpecialResources.properties中的hello
注意:
如果message>中设置了属性bundle,那么
中一定要设置属性key,否则运行
时会报错的。
a2)message>标签中的属性name指定一个scope中的key,value为
资源配置文件中的key。
例如:
<%request.setAttribute("stringBean","hello")%>
messagebundle="special"name="stringBean"/>
hello-->SpecialResources.properties中的hello
a3)同时指定message>标签的name和property,name指定
一个JavaBean,property指定JavaBean中的一个get方法,get方法
的返回值就是资源配置文件中的key。
例如:
<%
SomeBeanbean=newSomeBean();
bean.setName("hello");
request.setAttribute("someBean",bean);
%>
messagebundle="special"name="someBean"
property="name"/>
bundle-->中的key
name-->request中的key(someBean)
property-->bean的getName()
getName()返回值(hello)-->资源配置文件中key(hello)
b)resource>
用于检索Web资源的内容,包括以下属性:
id:
定义一个代表Web资源的变量
name:
指定Web资源的路径
input:
如果没有设置input属性,则id属性定义的变量为字符串
类型;如果给input设置了值(可以是任意字符串),则id
属性定义的变量为InputStream类型。
例如:
resourceid="resource"name="/testpage1.jsp"/>
resource变量代表"/testpage1.jsp"资源,由于没有设置input
属性,因此resource变量为字符串类型,它的值为testpage1.jsp
的源文件内容。
c)struts>
用于检索Struts框架内在的对象,如ActionFormBean、ActionForward和
ActionMapping。
包括以下属性:
id:
定义一个page范围内的变量,用来引用Struts框架内的对象。
formbean:
指定ActionFormBean对象,和Struts配置文件中的
元素匹配。
forward:
指定ActionForward对象,和Struts配置文件中的
元素的子元素匹配。
mapping:
指定ActionMapping对象,和Struts配置文件中的
元素匹配。
注意:
属性id必须和下面三个属性中的一个匹配
例如:
strutsid="forward"forward="BeanResources"/>
writename="forward"property="path"/>
以上代码的用属性id定义了一个"forward"变量,它引用
一个名为"BeanResources"的ActionForward对象,在Struts
文件中,与之匹配的元素为:
...
write>标签输出ActionForward对象的path属性值
d)include>
和标准的JSP标签include>很相似,都可以用来包含其他Web资源
的内容,区别在于include>标签把其它Web资源的内容存放在一
个变量中,而不是直接显示在页面上。
包括以下属性:
id:
定义一个代表其它Web资源的位置
forward:
指定全局转发的路径,和Struts配置文件中的
元素中的子元素匹配。
page:
指定相对于当前应用的URL,以"/"开头。
href:
指定完整的URL
例如:
includeid="p1"page="/page.jsp"/>
includeid="p2"forward="success"/>
writename="p1"filter="false"/>
writename="p2"filter="false"/>
3)用于定义或者输出JavaBean的Bean标签
a)define>
用于定义一个变量,属性id指定变量存放在scope中的key,toScope属性指定这个
变量存放的范围,如果没有设置toScope属性,则这个变量存放在page
范围内。
给id属性定义的变量赋值有三种方式:
a1)设置value属性例如:
defineid="age"value="25"/>
a2)同时设置name和property属性。
name属性指定一个已经存在的
Bean,property指定已经存在的Bean的某个属性,id作为key或者变量。
例如:
<%request.setAttribute("sessionBean",session);%>
defineid="contextBean"name="sessionBean"
property="servletContext"/>
ServletContextName:
writename="contextBean"
property="servletContextName"/>
contextBean属于ServletContext类型
a3)同时设置name和type属性。
name属性指定已经存在的JavaBean
,type属性指定这个JavaBean的完整的类名。
id作为key或者变量。
例如:
defineid="loginForm_copy"name="loginForm"
type="com.briup.web.LoginForm"/>
writename="loginForm_copy"property="username"/>
该标签会依次在page、request、session和application范围
中根据key(loginForm)来查找LoginForm的对象,也可以通过
属性scope来指定一个查找的范围。
注意:
属性id定义的变量也是LoginForm的对象变量(对象引用)。
b)write>
用于在页面上输出某个Bean或者其属性的内容。
例如:
writeid="length"name="list"/>
writename="student"property="xh"/>
writeformat="#.####"name="employee"
property="salary"/>
writeformat="MM-dd-yyyyyhh:
mm:
ss"
name="now"property="time"/>
注意:
该标签自动会从page、request、session和application
范围中根据name指定的key去查找对应的对象,也可以用
scope属性来限定某个范围。
另外,属性filter:
true表示将html中的标记作为普通字符显示
false表示不会把html中的标记作为普通字符显示,默认为true。
c)size>
用于获得Map、Collection或者数组的长度。
包括以下属性:
id:
定义一个Integer类型的变量
name:
指定已经存在的Map、Collection或者数组变量
例如:
sizeid="length"name="list"/>
writename="length"/>
2、HTML标签库
该标签库可以和标准的HTML标记完成相同的功能,主要分为以下几类:
1)用于生成基本的HTML的标签
a)html>
用于在页面的开头生成HTML的元素,该标签有一个属性
lang来显示用户显示的语言。
例如:
htmllang="true"/>
如果用户的浏览器使用中文,那么该代码在运行时被解析为
b)base>
用于在页面的
部分生成元素,用于生成当前页面
的绝对URL路径。
例如:
base="http:
//localhost:
8080/jsp"/>
那么使用该base的页面已经将URL定位到应用程序jsp
的根目录下面,要从该页面再去访问其它资源,只要
使用相对路径即可。
c)link>
用于生成HTML的元素,包括以下的属性:
forward:
指定全局的转发链接,对应于Struts配置文件中
的元素
href:
指定完整的URL链接
page:
指定相对于当前应用的URL
例如:
c1)linkforward="index">
LinktoGlobalActionForward
link>
index对应于struts-config.xml中:
全局:
上述标签会自动生成HTML代码:
LinktoGlobalActionForward
c2)linkhref="http:
//localhost:
8080/app/index.jsp">
Generatean"href"link
生成的HTML代码如下:
//localhost:
8080/app/index.jsp">
Generatean"href"link
c3)linkpage="/login.do">
Arelativelink
link>
生成的HTML代码如下:
Generatean"href"link
使用该标签的优点:
b1)应许再URL中以多种方式包含请求参数
b2)在当前浏览器关闭Cookie时,会自动重写URL,把
jsessionid作为请求参数包含在URL中,用于跟踪
用户的状态(除了href属性)。
d)img>
用于在HTML中嵌入图片
例如:
d1)imgpage="/girl.gif"/>
生成HTML代码如下:
d2)imgsrc="/app/girl.gif"
paramId="orderid"paramName="3"/>
生成HTML代码如下:
orderid=3"/>
2)用于生成HTML表单的标签
a)form>
生成HTML
例如:
formaction="/login">
生成的HTML代码如下:
action="/app/login.do">
对应于struts-config.xml中部分代码:
type="com.briup.web.action.LoginAction"
name="loginForm"
scope="request"
input="/login.jsp"
validate="true">
b)text>
生成HTML元素
例如:
textproperty="age"/>
property属性指定的字段和ActionForm中的属性匹配
生成HTML代码如下:
value="ActionForm中属性age的值"/>
c)hidden>
生成HTML元素
例如:
hiddenproperty="age"/>
生成HTML代码如下:
d)submit>
生成HTML元素
例如:
submit>提交
submit>
生成HTML代码如下:
e)cancel>
在表单上生成取消按钮
例如:
cancel>Cancel
cancel>
生成HTML代码如下:
name="org.apache.struts.taglib.html.CANCEL"
value="Cancel"/>
注意:
在Action类中,应该以编程的方式来处理取消事件。
f)reset>
生成HTML元素
例如:
reset>重置
reset>
生成HTML代码如下:
g)checkbox>生成HTML元素
h)multibox>在表单上生成复选框元素
i)radio>生成HTML元素
j)select>生成HTML
k)option>生成HTML
l)options>生成一组HTML
m)optionsCollection>生成一组HTML
n)file>实现将本地文件上传到服务器端
formaction="sendFile.do"method="POST"
enctype="multipart/form-data">
fileproperty="file"/>
form>
使用注意:
n1)file>必须嵌套在form>中
n2)form>标签的method属性必须为"POST"
n3)form>标签的编码类型enctype必须设置
为"multipart/form-data"
n4)file>标签必须设置property属性,这个
属性和ActionForm中FormFile类型的属性对应。
在ActionForm中必须配置:
privateFormFilefile;
publicFormFilegetFile(){returnfile;}
publicvoidsetFile(FormFilefile){this.file=file;}
在Action中的处理:
FormFilefile=registerForm.getFile();
//获得上传文件的名字
Stringfname=file.getFileName();
//从file中获得输入流
InputStreamis=file.getInputStream();
//构造一个输出流,并指定上传文件在服务器端存放路径
OutputStreamos=newFileOutputStream(dir+"/"+fname);
//从is中读取字节流后写入到os中
注意:
上述标签要使用在form>标签中,但是在form>标签中也可以使用标准的
ht