您的位置:首页 > 编程语言 > Java开发

struts2学习---struts2常用标签(上)

2016-05-05 16:41 537 查看
首先给大家介绍一下用到的文件目录如下:



struts.xml文件内容:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- http://struts.apache.org/dtds/struts-2.3.dtd定义了这个xml文件需要提示的语法内容 -->
<struts>
<!-- 设置为开发模式-->
<constant name="struts.devMode" value="false" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
<!-- 设置字符集 -->
<package name="tags" namespace="/" extends="struts-default">

<action name="tags" class="com.mayday.struts.tags.TagsAction"  >
<result  >/tags.jsp</result>
</action>
</package>
</struts>


TagsAction.java文件:

package com.mayday.struts.tags;

import com.opensymphony.xwork2.ActionSupport;

public class TagsAction extends ActionSupport {

private String password;
private String username;
public TagsAction() {
super();
}
public TagsAction(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getPassword() {
return password;
}
public String getUsername() {
return username;
}
public void setPassword(String password) {
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}

public String excute(){
return SUCCESS;
}
}


Dog.java文件

package com.mayday.struts.tags;

public class Dog {

private String nameString;

public String getNameString() {
return nameString;
}

public void setNameString(String nameString) {
this.nameString = nameString;
}

public Dog(String nameString) {
super();
this.nameString = nameString;
}
public Dog() {
super();

}

public String toString( ){
return "Dog:"+nameString;

}
}


index.jsp内容:

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
访问属性:<a href="TagsAction?username=kangjing&password=123456">Tags</a>
</body>
</html>


tags.jsp内容:

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags"  prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<ol>
<li><b>property标签</b></li>
<li>property(访问ognl表达式里面的值 username="kangjing"):<s:property value="username"/>
<li>property:访问字符串(username字符串本身):<s:property value="'username'"/>
<!-- 标签的属性有的是ognl表达式,有些为字符串,容易混淆,property的value的类型是object,
默认将字符串 解析为ognl表达式,如果想要字符串本身,则需要双引号里面加单引号,如下:-->
<li>property:设置默认的值(值栈中是没有admin这个值的,当设置了默认值之后,如果value为空,则取默认值):<s:property value="admin" default="管理员"/>
<li>property:设置HTML<s:property value="'<hr/>'" escape="true"/>
<!-- 默认escape="false" 输出为横线,当设置为true则输出<hr/>  -->
<hr/>

<!-- set标签在需要换名的情况下用的比较多 -->
<li><b>set标签</b></li>
<li>set设置adminname(默认取值的域为ActionContext和request):<s:set var="adminname" value="username"/></li>
<!-- 这句话的意思是:它会把设置的变量adminname即放到request里面又会放到actionContext里面,它的值为username的值-->
<li>从request取值:<s:property value="#request.adminname"/>  </li>
<li>从ActionContext取值:<s:property value="#adminname"/>  </li>

<li>set设置范围(默认范围为request、ActionContext):<s:set name="adminpassword" value="password" scope="page" /></li>
<li>从相应范围取值(从page取值):<%=pageContext.getAttribute("adminpassword") %></li>

<li> set设定 var,范围为ActionContext<s:set  var="adminpassword" value="password"/> </li>
<li> set设置var 范围为session <s:set var="adminpassword"  value="password" scope="session" /></li>
<li>从相应为范围取值:<s:property value="#adminpassword"/>
<hr/>
<li><b>bean标签</b></li>
<li> bean定义bean ,使用param来设置新的属性值
<s:bean name="com.mayday.struts.tags.Dog" var="mydog">
<s:param name="nameString" value="'oudy'"></s:param>
<s:property value="#mydog"/>
</s:bean>
<!-- 只有定义了var才能在actionContext里面看见mydog对象 -->
</li>
<hr/>
<li><b>include标签</b></li>

<li> include  包含静态英文文件(include1.html):
<s:include value="/include1.html"/></li>

<li> include  包含静态中文文件(include2.html):
<s:include value="/include2.html"/></li>

<li>使用include标签 包含 include1.html文件,说明%的用法</li>
<s:set var="inCpage" value="include2.html"></s:set>
<s:include value="#inCpage"></s:include>
<!-- include标签的value类型为string类型,如果用上面的方式访问则是找#inCpage 文件,
把它当做字符串处理了,则需要下面的方法访问:-->
<s:include value="%{#inCpage}"></s:include>

<s:debug></s:debug>
</body>
</html>


总结:

(一)、property标签

property标签 作用简介: property标签用于取得value的属性值。

1.显示Action中的属性值:
<s:property value="属性名" />


实例如下:

<li>property(访问ognl表达式里面的值 username="kangjing"):<s:property value="username"/>


2.显示字符串,使用单引号:
<s:property value="'字符串'" />


例:

<li>property:访问字符串(username字符串本身):<s:property value="'username'"/>


3.显示默认值,Action中找不到指定的属性时,显示default属性的值:
<s:property value="属性名" default="默认值" />


例:

<li>property:设置默认的值(值栈中是没有admin这个值的,当设置了默认值之后,如果value为空,则取默认值):
<s:property value="admin" default="管理员"/>


4.解析HTML字符串,escape默认值为true,直接输出字符串,escape设为false时,

解析HTML字符串。

实例如下:

<li>property:设置HTML<s:property value="'<hr/>'" escape="true"/>
<!-- 默认escape="false" 输出为横线,当设置为true则输出字符串<hr/>  -->


(二)、 set标签

简介:set标签用于赋予变量一个特定范围的值( 常常在需要改变变量名称时使用)

1.set的属性:

a. var:设置变量的名称,string类型,不推荐使用id和name设置变量的名称;

b. value:设置变量的值;object类型

c. scope:作用范围,可以设置page,request,session,application,action;

2.不设置scope时,变量默认保存在request和ActionContext中。

实例如下:

<li>set设置adminname(默认取值的域为ActionContext和request):
<s:set var="adminname" value="username"/></li>
<!-- 这句话的意思是:它会把设置的变量adminname即放到request里面又     会放到actionContext里面,它的值为username的值-->
<li>从request取值:<s:property value="#request.adminname"/>  </li>
<li>从ActionContext取值:<s:property value="#adminname"/>  </li>

<li>set设置范围(默认范围为request、ActionContext):<s:set name="adminpassword" value="password" scope="page" /></li>
<li>从相应范围取值(从page取值):<%=pageContext.getAttribute("adminpassword") %></li>

<li> set设定 var,范围为ActionContext<s:set  var="adminpassword" value="password"/> </li>
<li> set设置var 范围为session <s:set var="adminpassword"  value="password" scope="session" /></li>
<li>从相应为范围取值:<s:property value="#adminpassword"/>


(三)、bean标签

简介:bean标签用于设置JavaBean的值

1.bean标签的属性:

a. name:JavaBean的类名,不推荐使用id;

b. var:JavaBean对象名,可以通过“#”访问。

2.在bean标签中,使用标签设置JavaBean对象的属性值,

其中value的值为OGNL表达式,字符串应使用单引号;

3.如果不设置“var”属性,JavaBean对象只在bean标签中有效,在bean标签外部无法访问。

实例如下:

<li> bean定义bean ,使用param来设置新的属性值
<s:bean name="com.mayday.struts.tags.Dog" var="mydog">
<s:param name="nameString" value="'oudy'"></s:param>
<s:property value="#mydog"/>
</s:bean>
<!-- 只有定义了var才能在actionContext里面看见mydog对象 -->
</li>


(四)、include标签

简介:用于包含指定的页面

1.include标签的属性:

value:被包含页面的地址,字符串类型,如果是OGNL表达式,则要使用以下形式:%{OGNL表达式};

实例如下:

<li>使用include标签 包含 include1.html文件,说明%的用法</li>
<s:set var="inCpage" value="include2.html"></s:set>
<s:include value="#inCpage"></s:include>
<!-- include标签的value类型为string类型,如果用上面的方式访问则  是找#inCpage 文件,把它当做字符串处理了,则需要下面的方法访问:-->
<s:include value="%{#inCpage}"></s:include>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: