初识Struts2_常用标签

一、struts.xml

 1 <!-- 修改ui标签所用的主题 -->
 2     <constant name="struts.ui.theme" value="simple"></constant>
 3     <package name="default" namespace="/" extends="struts-default">
 4         <!-- 
 5             访问的url:
 6                 http://localhost:8080/Struts2_Tags/user?username=Tom&age=9
 7          -->
 8         <action name="user" class="cn.su.action.UserAction">
 9             <result>/tags.jsp</result>
10         </action>
11     </package>

二、Action

 1 package cn.su.action;
 2 
 3 import com.opensymphony.xwork2.ActionSupport;
 4 
 5 public class UserAction extends ActionSupport {
 6     private String username;
 7     public String execute(){
 8         this.addFieldError("name", "name is error");
 9         return SUCCESS;
10     }
11     public String getUsername() {
12         return username;
13     }
14     public void setUsername(String username) {
15         this.username = username;
16     }
17     
18 }

三、jsp页面bean标签创建对象用到的User类

package cn.su.domain;

public class User {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
}

四、include标签包含用到的文件

  01.html

  

1 <html>
2     <head>
3         <title>html</title>
4     </head>
5     <body>
6         en
7     </body>
8 </html>

 

  02.html

1 <html>
2     <head>
3         <title>html</title>
4     </head>
5     <body>
6         中文
7     </body>
8 </html>

四、jsp页面

  1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2 <%@ taglib uri="/struts-tags" prefix="s" %>
  3 <%
  4 String path = request.getContextPath();
  5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  6 %>
  7 
  8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  9 <html>
 10   <head>
 11     <base href="<%=basePath%>">
 12     
 13     <title>My JSP 'index.jsp' starting page</title>
 14     <meta http-equiv="pragma" content="no-cache">
 15     <meta http-equiv="cache-control" content="no-cache">
 16     <meta http-equiv="expires" content="0">    
 17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 18     <meta http-equiv="description" content="This is my page">
 19     <!--
 20     <link rel="stylesheet" type="text/css" href="styles.css">
 21     -->
 22   </head>
 23   
 24   <body>
 25   <%--在jsp页面中  html 注释无用 --%>
 26     <ol>
 27           <li>property:<s:property value="username"/> </li>
 28           <li>property:取值为字符串:<s:property value="'Tom'"/>  </li>
 29           <li>property:设定默认值:<s:property value="xxx" default="Tom"/>  </li>
 30           <!-- 
 31               escape 属性表示 HTML 字符串是否原样输出
 32            -->
 33           <li>property 设定HTML:<s:property value="'<hr/>'" escape="true" />  </li>
 34           <hr />
 35           <!-- 
 36               当不设置set的scope时,set的scope默认为action
 37               默认存储在:request和 ActionContext中
 38            -->
 39           <li>set:设定name值为Jack<s:set var="name" value="'Jack'" /> </li>
 40           <li>set:从request中取值 <s:property value="#request.name"/> </li>
 41           <li>set:从actionContext中取值 <s:property value="name"/> </li>
 42           <!-- 
 43               当指定set的scope为session时
 44               数据只会存储在session中
 45            -->
 46           <li>set:设定password值为123456<s:set var="password" value="'123456'" scope="session"  /> </li>
 47           <li>set:从session中取出password: <s:property value="#session.password"></s:property> | <s:property value="#password"></s:property> </li>
 48           <hr />
 49           <li>
 50               <!-- 当不指定bean标签的var属性时
 51                   到结束标签/s:bean时
 52                   这个对象已经从栈顶移除
 53                -->
 54               使用bean标签来创建对象Ross
 55               <s:bean name="cn.su.domain.User">
 56                   <s:param name="name" value="Ross"></s:param>
 57                   <s:property value="name"/>
 58               </s:bean>
 59           </li>
 60           <li>
 61               <!-- 当指定var属性时
 62                   创建的对象什么会被放置在 Actioncontext中
 63                -->
 64               使用bean标签来创建对象Mary
 65               <s:bean name="cn.su.domain.User" var="mary">
 66                   <s:param name="name" value="'Mary'"></s:param>
 67                   <s:property value="#mary.name"/>
 68               </s:bean>
 69               <s:property value="#mary.name"/>
 70           </li>
 71           <hr />
 72           <li>include标签包含文件01.html 
 73               <s:include value="01.html"></s:include>
 74           </li>
 75           <li>include标签包含文件02.html
 76               <s:include value="02.html"></s:include>
 77           </li>
 78           <li>include标签包含文件01.html
 79               <s:set var="path" value="'01.html'"></s:set>
 80               <s:include value="%{#path}"></s:include>
 81               <%-- 
 82                   ${}的作用:
 83                       本来s:include的value属性是string类型的
 84                       不会被当作ongl表达式解析,但当使用%{}时{}
 85                       里的内容就会强制被当做ognl表达式解析
 86               --%>
 87           </li>
 88           <hr/>
 89           <li>if elseif else标签的使用 
 90               <!-- 取参数age时后面一定要加[0]-->
 91               <s:set var="age" value="#parameters.age[0]"></s:set>
 92               <s:if test="#age < 0">age is error</s:if>
 93               <s:elseif test="#age < 20 ">to yang</s:elseif>
 94               <s:else>age is ok</s:else>
 95            </li>
 96            <hr/>
 97            <li>遍历集合
 98                <%--每次遍历时都会将当前元素放在栈顶
 99                    使用<s:property/>不指定value
100                    默认取出栈顶对象
101                 --%>
102                <s:iterator value="{1,2,3}">
103                    <s:property/>
104                </s:iterator>
105            </li>
106             <li>遍历集合
107                 <%--指定var时
108                     每次遍历时会将元素放在栈顶和actionContext中
109                  --%>
110                <s:iterator value="{1,2,3}" var="i">
111                    <s:property value="#i"/>
112                </s:iterator>
113            </li>
114            <li>status的使用
115                <br/>
116                <s:iterator value="{1,2,3}" status="status">
117                    元素值:<s:property/>|
118                    遍历过的元素个数:<s:property value="#status.count"/>|
119                    遍历过的元素索引:<s:property value="#status.index"/>|
120                    当前是偶数:<s:property value="#status.even"/>|
121                    当前是奇数:<s:property value="#status.odd"/>|
122                    是第一个元素?:<s:property value="#status.first"/>|
123                    是最后一个元素?:<s:property value="#status.last"/>
124                    <br/>
125                    
126                </s:iterator>
127            </li>
128            <li>遍历Map
129                <%--创建 map数组时 大括号前要加# --%>
130                <s:iterator value="#{'1':'a','2':'b','3':'c'}">
131                    <s:property value="key" /> : <s:property value="value" />,
132                </s:iterator>
133            </li>
134            <li>遍历Map
135                <%--
136                 每次遍历时
137                 除了把当前元素放在栈顶,还放在ActionContext中
138              --%>
139                <s:iterator value="#{'1':'a','2':'b','3':'c'}" var="x">
140                    <s:property value="#x.key" /> : <s:property value="#x.value" />,
141                </s:iterator>
142            </li>
143            <li>遍历Map
144                <s:iterator value="#{'1':'a','2':'b','3':'c'}">
145                    <s:property value="key" /> | <s:property value="value" />
146                </s:iterator>
147            </li>
148           <s:debug></s:debug>
149           <hr/>
150           <%--
151               当使用<s:fielderror>取值时,struts会默认加上<li>标签,
152               即使设置 theme 为 simple 也没用
153               
154            --%>
155           <li> <s:fielderror name="name"></s:fielderror></li>
156       </ol>
157   
158   </body>
159 </html>

 

posted @ 2014-04-18 01:34  XIAOHEI丨  阅读(197)  评论(0编辑  收藏  举报