1 / 44

Struts 常用标签

Struts 常用标签. 中科软培训中心. 回顾. 什么是 MVC? Struts 是怎么去实现 MVC 的 ? Struts 基本组件有那些 ? 基本组件之间有什么关系 ?. 重点. 了解 Struts 标签的运行机制 ; 学会使用 html 系列标签 ; 学会使用 bean 系列标签 ; 学会使用 logic 系列标签 ; 了解 Nested 系列标签 ;. 回顾一下自定义标签. 写一个实现 Tag 接口的 Java 类 ; 在 java 类中处理一些业务逻辑 , 如果要输出到页面就通过 out 对象输出 ; 写一个 tld 的配置文件 ;

binta
Download Presentation

Struts 常用标签

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Struts常用标签 中科软培训中心

  2. 回顾 • 什么是MVC? • Struts是怎么去实现MVC的? • Struts基本组件有那些? • 基本组件之间有什么关系?

  3. 重点 • 了解Struts标签的运行机制; • 学会使用html系列标签; • 学会使用bean系列标签; • 学会使用logic系列标签; • 了解Nested系列标签;

  4. 回顾一下自定义标签 • 写一个实现Tag接口的Java类; • 在java类中处理一些业务逻辑,如果要输出到页面就通过out对象输出; • 写一个tld的配置文件; • 在JSP页面导入tld文件并使用;

  5. Struts标签 • 方便用户,提高代码效率; • Struts标签和HTML标签效果完全相同; • 使View和Struts的其它组件更好的结合在一起;

  6. Struts标签分类 • HTML标签库 • Bean标签库 • Logic标签库 • Nested标签库

  7. HTML标签库 HTML标签分类 • 用于生成基本的HTML元素的标签; • 用于生成表单的标签; • 显示错误或正常消息的标签;

  8. 用于生成基本的HTML元素的标签 • <html:html>:生成HTML<html>元素. • <html:base>:生成HTML<base>元素. • <html:link>:生成HTML<a>元素. • <html:rewrite>:生成用户请求的URL. • <html:img>:生成HTML<img>元素.

  9. 例子:Struts-02/HTML.jsp <body> <div align="center"> <html:rewrite page="/HTML.jsp" /> <br> <html:link href="http://www.baidu.com">百渡</html:link> <br> <html:img src="imge/123.jpg" /> <br> <html:link forward="index">返回首页</html:link> </div> </body>

  10. 用于生成表单的标签 所有的表单标签的property属性必须要跟FormBean中的属性中对应!action,formBean和property根据struts-config.xml中具体配置有着对应关系; • <html:form>:生成HTML<form>元素; • <html:text>:生成HTML<input type=text>元素 • <html:password>:生成HTML<input type=password>元素 • <html:hidden>:生成HTML<input type=hidden>元素 • <html:submit>:生成HTML<input type=submit>元素 • <html:cancel>:生成HTML<input type=cancel>元素 • <html:reset>:生成HTML<input type=reset>元素

  11. 检查框和单选按钮标签 • <html:checkbox>:生成HTML<input type=checkbox>元素 • <html:multibox>:在表单上生成复选框元素 • <html:radio>:生成HTML<input type=radio>元素

  12. 下拉列表和多选列表标签 • <html:select>:生成HTML<select>元素 • <html:option>:生成HTML<option>元素 • <html:options>:生成一组HTML<option>元素 • <html:optionsCollection>:生成一组HTML<option>元素

  13. 例:Struts-02/FORM.jsp <div align="center"> <html:form action="/disp" method="post"> <bean:message bundle="FORM" key="FORM.jsp.form.userName" /> <html:text property="userName"></html:text> <html:errors property="userName" bundle="ERRORS" /> <br> <bean:message bundle="FORM" key="FORM.jsp.form.userPwd" /> <html:password property="userPwd"></html:password> <br> <html:hidden property="hidden" value="这是一个隐匿值" /> <br> <hr> <bean:message bundle="FORM" key="FORM.jsp.form.sex" /> <html:radio property="sex" value="男"> <bean:message bundle="FORM" key="FORM.jsp.form.sex.man" /> </html:radio> <html:radio property="sex" value="女"> <bean:message bundle="FORM" key="FORM.jsp.form.sex.woman" /> </html:radio> <br> <bean:message bundle="FORM" key="FORM.jsp.form.married" /> <html:checkbox property="married"></html:checkbox> <br> <bean:message bundle="FORM" key="FORM.jsp.form.loves" /> <html:multibox property="loves">上网</html:multibox> <bean:message bundle="FORM" key="FORM.jsp.form.loves.items.online" /> <html:multibox property="loves">游戏</html:multibox> <bean:message bundle="FORM" key="FORM.jsp.form.loves.items.palyGame" /> <html:multibox property="loves">购物</html:multibox> <bean:message bundle="FORM" key="FORM.jsp.form.loves.items.shopping" /> <html:multibox property="loves">电影</html:multibox> <bean:message bundle="FORM" key="FORM.jsp.form.loves.items.movie" /> <br> <bean:message bundle="FORM" key="FORM.jsp.form.birthday" /> <html:select property="year"> <c:forEach begin="1940" end="2005" var="y"> <html:option value="${y}">${y}</html:option> </c:forEach> </html:select> <bean:message bundle="FORM" key="FORM.jsp.form.birthday.items.year" /> <html:select property="month"> <c:forEach begin="1" end="12" var="m"> <html:option value="${m}">${m}</html:option> </c:forEach> <bean:message bundle="FORM" key="FORM.jsp.form.birthday.items.month" /> <br> </html:select> <br> <bean:message bundle="FORM" key="FORM.jsp.form.department" /> <html:select property="department"> <html:options collection="department" property="value" labelProperty="label" /> </html:select> <br> <hr> <html:submit> <bean:message bundle="FORM" key="FORM.jsp.form.button.submit" /> </html:submit> <html:reset> <bean:message bundle="FORM" key="FORM.jsp.form.button.reset" /> </html:reset> <html:cancel> <bean:message bundle="FORM" key="FORM.jsp.form.button.cancel" /> </html:cancel> </html:form> </div>

  14. 表单中的文件标签 • <html:file>生成HTML<input type=file>元素 在Frombean中对应此标签的数据类型是org.apache.struts.upload.FormFile对象;

  15. 例:Struts-02/FileFORM.jsp <html:form action="/dofile" enctype="multipart/form-data"> <bean:message bundle="FORM" key="FileFORM.jsp.form.fileName" /> <html:file property="file"></html:file> <html:submit> <bean:message bundle="FORM" key="FileFORM.jsp.form.button.sumbit" /> </html:submit> </html:form>

  16. <html:errors/>标签 • 用于显示request和session做用域对象中的ActionMessages(或其字类)对象中的文本; • <bean:message/>作用是一样的,不过.我们多数是用<html:errors/>标签来完成错误输出,而<bean:message/>标签用来完成资源文件输出; 例:<html:errors property="sex"> </html:errors>

  17. Bean标签库 Bean标签分类 • 用于访问HTTP请求信息或JSP隐含对象的bean标签; • 用户访问Web应用资源的Bean标签; • 用于定义或输出JavaBean的Bean标签;

  18. 用于访问HTTP请求信息或JSP隐含对象的bean标签 • <bean:cookie>:访问Cookie信息 • <bean:header>:访问HTTP请求中的header信息 • <bean:parameter>:访问请求参数; • <bean:page>:访问JSP隐含对象;

  19. <bean:cookie>--访问Cookie信息 作用:可以检索保存在浏览器中的cookie; 属性: • Id:定义一个javax.servlet.http.Cookie的变量,并把他放到page范围内; • Name:指定cookie的名字; • Value:指定cookie的默认值,如果name不存在,就指定value的默认值

  20. <bean:header>--访问HTTP请求中的header信息 作用:用于检索HTTP请求中的Header信息; 属性: • Id:定义一个java.lang.String的对象.并放到page范围内; • Name:指定要检索的Header信息;

  21. <bean:parameter>--访问请求参数 作用:用于检索HTTP中的请求参数; 属性: • id:定义一个java.lang.String类型的变量,并放到page范围中; • Name:指定请求参数名; • Value:指定请求参数的默认值;

  22. <bean:page>--访问JSP隐含对象 作用:用于检索JSP隐含对象,如session,request和response等; 属性: • Id:定义一个引用的隐含对象的变量,并放到page中; • Property:指定隐含对象的名称,可选项有:application,config,request,response,session;

  23. 用户访问Web应用资源的Bean标签 • <bean:message>:显示ResourceBundle中的消息; • <bean:resource>:把Web资源加载到一个JavaBean中; • <bean:struts>:访问Struts内在配置对象; • <bean:include>:包含一个Web资源;

  24. <bean:message>--显示Resource-Bundle中的消息 作用:用于输出Resource Bundle文件中的资源信息; 属性: • Bundle: 指定Resource Bundle文件,配合struts-config.xml中的<message-resources/>标签的key属性使用; • Key:指定Resource Bundle文件中的key; • Name:定义一个java.lang.String类型的变量,值等于Resource Bundle文件中key所对应的值; • Property:配合Name属性使用; • Arg0到arg4:配合Resource Bundle文件中值的{0}…{4}占位符使用,用来替换占位符的值;

  25. <bean:resource>--把Web资源加载到一个JavaBean中 作用:用于检索Web资源的内容; 属性: • Id:定义一个Web资源的变量; • Name:指定Web资源的路径; • Input:如果没有设置input属性,则ID属性定义的变量为字符串类型,如果给input属性设置了值,则id属性定义的变量为java.io.InputStream类型;

  26. <bean:struts>--访问Struts内在配置对象 作用:用于检索Struts框架内在的对象; 属性: • Id:定义一个page范围类的变量; • Formbean:指定actionFormBean对象; • Forward:指定actionForward对象; • mapping:指定actionMapping对象; FormBean/Forward/Mapping属性的值分别与struts-config.xml文件中的对象所匹配;

  27. <bean:include>--包含一个Web资源 作用:用来包含其他Web资源的内容,跟标准标签<jsp:include>用法一样; 属性: Forward:指定全局转发路径,关联struts-config.xml文件使用; Page:指定相对于当前应用的URL以’’/’’开头; Href:指定完整的URL;

  28. 用于定义或输出JavaBean的Bean标签 • <bean:define>:定义一个变量; • <bean:write>:显示一个变量的值; • <bean:size>:获得一个集合的长度;

  29. <bean:define>--定义一个变量 作用:用于定义一个变量; 属性: • Id:定义变量名字; • toScope:指定这个变量存放范围,缺省为page; • Value:直接给变量赋值; • Name和property:将存在作用域中的对象的属性值赋给变量;

  30. <bean:write>--显示一个变量的值 作用:用于在网页上输出某个Bean或它的属性的内容; 属性: • Name:存在作用域对象中的属性名; • property:配合name属性一起使用,输出对象的属性; • Format:按指定格式输了; • Filter:只否把html标签原样输出;

  31. <bean:size>--获得一个集合的长度 作用:用于获得Map,Collection或数组的长度; 属性: • Id:定义一个变量存在长度; • Name:集合名称;

  32. 例:Struts-02/BEAN.jsp <body> <h2> 用户访问Web应用资源的Bean标签 </h2> <hr> <b>这是从资源文件时面读出来的:</b> <bean:message key="BEAN.jsp.message" /> <br> <b>得到并输出一个资源对象:</b> <bean:resource id="res1" name="/include.jsp" /> <bean:write name="res1" /> <br> <b>首页的路径:</b> <bean:struts id="index1" forward="index" /> <bean:write name="index1" property="path" /> <br> <b>被包含进来的页面:</b> <bean:include id="page1" page="/include.jsp" /> <bean:write name="page1" filter="false" /> <hr> <h2> 用于定义或输出JavaBean的Bean标签 </h2> <hr> <b>定义并输出一个字符串:</b> <bean:define id="str1" value="中科软培训中心"></bean:define> <bean:write name="str1" /> <br> <% List list = new ArrayList(); list.add("red"); list.add("bule"); list.add("green"); pageContext.setAttribute("list", list); %> <b>输出数组<bean:write name="list" /> 的长度:</b> <bean:size id="listLength" name="list" /> <bean:write name="listLength" /> <hr> <p align="center"> <html:link forward="index">返回首页</html:link> </p> </body>

  33. Logic标签库 Struts Logic标签库可以根据特定的逻辑条件来控制输出网页内容; 主要学习: • 进行字符串匹配的Logic标签; • 进行循环遍历的Logic标签; • 进行请求转发或者是重定向的Logic标签;

  34. 进行字符串匹配的Logic标签 比较运算: • <logic:equal>:判断是否等于; • <logic:notEqual>:判断是否不等于; • <logic:greaterEqual>:判断是否大于或等于; • <logic:greaterThan>:判断是否大于; • <logic:lessEqual>:判断是否小于或等于; • <logic:lessThan>:判断是否小于; 比较标签只能做变量和常量之间的比较,不能做变量和变量或常量和常量之间的比较; 属性: • Nama:指定要做比较的并存在于作用域中的变量名; • Value:指定常量值

  35. 进行字符串匹配的Logic标签 • <logic:match>:包含特定字符串; • <logic:notMatch>:不包含特定字符串; 作用:判断指定变量中是否包含指定常量; 属性: Name:存在作用域范围内的变量名; Value:常量值; Location:可选值只是start(判断指定变量是否以常开头)和end(判断指定变量是否以常结束);

  36. 进行字符串匹配的Logic标签 • <logic:empty>:是否为空或””; • <logic:notEmpty>是否不为空或””; 属性: Name:要判断的变量名;

  37. 进行循环遍历的Logic标签 <logic:iterate> 作用:是Logic标签库中最复杂的标签,也是用途最广的标签,他可以循环遍历数组,Collection,Enumeration,Iterator或Map中的所有元素; 属性: • Name:指定要进行遍历的集合对象; • Id:每次从集合中检索出一个元素,把他放到page范围中,并以id命名;

  38. <logic:iterate>的属性 • indexId:定义一个代表当前被遍历元素序号的变量,存放在page范围内; • length:定义需要遍历的元素的数日; • Offset:指定开始遍历的起始位置;

  39. 进行请求转发或者是重定向的Logic标签 • <logic:forward>:进行请求转发; • <logic:redirect>:进行请求重定向;

  40. <logic:forward>--进行请求转发 作用:用于转发一个请求; 属性 Name:指定struts-config.xml配置文件中的actionForward对象;

  41. <logic:redirect>--进行请求重定向 作用:用于重定向请求; 属性 • Forward:指定配置文件里的actionForward对象; • Page:根据当前的相对URL路径; • Href:URL的绝对路径;

  42. 例:struts-02/LOGIC.jsp <body> <h2> 比较运算: </h2> <hr> <bean:define id="i" value="33"></bean:define> <logic:equal value="33" name="i"> i=33;<br> </logic:equal> <logic:lessThan value="34" name="i"> i&lt;34<br> </logic:lessThan> <logic:greaterThan value="32" name="i"> i&gt;32<br> </logic:greaterThan> i的值: <bean:write name="i" /> <br> <hr> <h2> 进行字符串匹配的Logic标签 </h2> <hr> <bean:define id="str" value="sinosoft.com.cn"></bean:define> <logic:match name="str" value="sinosoft"> <bean:write name="str" />中包含了字符串"sinosoft".<br> </logic:match> <logic:notMatch value="www" name="str"> <bean:write name="str" />中不包含字符串"www".<br> </logic:notMatch> <logic:notEmpty name="str"> <bean:write name="str" />不为null或""; </logic:notEmpty> <hr> <h2> 进行循环遍历的Logic标签 </h2> <% List list = new ArrayList(); list.add("red"); list.add("bule"); list.add("green"); pageContext.setAttribute("list", list); %> 我们有一个List对象: <bean:write name="list" /> <br> 遍历结果: <br> <logic:iterate id="element" name="list" indexId="id"> <bean:write name="id" />---<bean:write name="element" /> <br> </logic:iterate> <br> <br> <br> 从第二个元素开始遍历,遍历两个元素: <br> <logic:iterate id="element" name="list" indexId="id" offset="1" length="2"> <bean:write name="id" />---<bean:write name="element" /> <br> </logic:iterate> <br> <br> <br> 如果是嵌套List,我们也可以通过嵌套iterate进行遍历: <% list = new ArrayList(); list.add(new String[] { "a", "b", "c", "e", "f" }); list.add(new String[] { "1", "2", "3", "4", "5" }); pageContext.setAttribute("list", list); %> <br> 下面我们有一个嵌套List为: <bean:write name="list" /> ,我们的遍历结果为: <br> <logic:iterate id="cur" name="list" indexId="listId"> <bean:write name="listId" />---><bean:write name="cur" /> <br> <logic:iterate id="cur1" name="cur" indexId="stringId"> <bean:write name="listId" />---> <bean:write name="stringId" />---> <bean:write name="cur1" /> <br> </logic:iterate> </logic:iterate> <br> <br> <br> 如果我们要对一个Map对象进行遍历,我们可以通过bean:write的name和property属性来完成: <br> <% Map stus= new HashMap(); stus.put("0001","Jack"); stus.put("0203","Marry"); stus.put("0171","Jesson"); stus.put("8021","DoubleJ"); pageContext.setAttribute("stus",stus); %> 现在我们有一个Stus的Map对象: <bean:write name="stus" /> <br> 遍历结果: <br> <logic:iterate id="element" name="stus"> <bean:write name="element" property="key" />---><bean:write name="element" property="value" /> <br> </logic:iterate> <hr>

  43. Nested标签库 Struts Nested标签库主要是表达JavaBean之间的嵌套关系,使用率不高,有需要自学一下!

  44. 总结 • Struts的标签库分那几类? • 每一类有那些标签? 作业: 把上课所有标签的作用和属性回家在JSP页面中作用一遍!

More Related