本来想学OGNL上下文和值栈的,看了半天没怎么看懂,这个就先放一放吧,为了不挂科,先把”框架怎么用”学会。
Struts2中的标签要在JSP页面中使用,需要在JSP页面开始的时候用taglib指令引入进来:
<%@taglib prefix="s" uri="/struts-tags" %>
bean标签
用来实例化一个JavaBean。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!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=UTF-8">
<title>bean标签</title>
</head>
<body>
<%--指出实现类--%>
<s:bean name="myBean.UserTable">
<%--用param标签向其setter传递值 --%>
<s:param name="id" value="1"/>
<s:param name="username" value="'刘知昊'"/>
<s:param name="password" value="123"/>
<%--用property标签获取值,value为bean的name --%>
ID:<s:property value="id"/><br/>
姓名:<s:property value="username"/><br/>
密码:<s:property value="password"/>
</s:bean>
</body>
</html>
include标签
用来包含其它页面,可以传递参数地包含。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!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=UTF-8">
<title>include标签</title>
</head>
<body>
<%--包含error.jsp页面--%>
<s:include value="error.jsp"/>
</body>
</html>
param标签
用来给某些标签传递参数,就像学XML时候可以用属性也可以用子元素一样,这个标签的使用也是这样灵活的。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!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=UTF-8">
<title>include标签</title>
</head>
<body>
<%--这里的var指明了这个实例化的JavaBean在OGNL表达式里的变量名 --%>
<s:bean name="myBean.UserTable" var="user1">
<s:param name="id" value="1"/>
ID:<s:property value="id"/><br/>
<s:param name="username">刘知昊</s:param>
姓名:<s:property value="username"/><br/>
<s:param name="password" value="1234"/>
密码:<s:property value="#user1.password"/>
</s:bean>
</body>
</html>
set标签
set标签的value属性里可以用OGNL表达式,表达式总是以%{
开头以}
结尾,它还有个scope属性可以设定作用域,不指定时是在OGNL上下文中。
书上的例子完全没有展示set的用途,以后用到了再学吧。
url标签
表示一个URL,它有很多很复杂的属性用到再看。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!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=UTF-8">
<title>include标签</title>
</head>
<body>
[1]value属性指定生成URL的地址值<br/>
<s:url value="main.action">
<%--param也可以在这里传参数 --%>
<s:param name="param" value="'okk'"/>
</s:url>
<br/><br/>
[2]action属性指定生成URL的地址是哪个action<br/>
这时候可以知道这个action的实现类在哪,所以能显示全部路径<br/>
<s:url action="main">
<s:param name="param" value="'okk'"/>
</s:url>
<br/><br/>
[3]两个属性都指定时,会显示value的URL,不然value就没用了<br/>
<s:url action="main" value="main.action">
<s:param name="param" value="'okk'"/>
</s:url>
<br/><br/>
[4]两个属性都不指定时,这个URL直接表示当前页面<br/>
<s:url>
<s:param name="param" value="'okk'"/>
</s:url>
<br/><br/>不管用的是哪个URL,param给的参数总是会跟在后面的
</body>
</html>