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>