OGNL表达式之value stack跟stack context
OGNL表达式之value stack和stack context
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>Login</title> </head> <body> <h1> Login JSP </h1> <form action="login.action"> username: <input type="text" name="username"> <br> password: <input type="text" name="password"> <br> <input type="submit"> </form> </body> </html>
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'result.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
username:<s:property value="username"/><br>
password:<s:property value="password"/><br>
<s:debug></s:debug>
</body>
</html>
最后显示的图
注意:
- parameters、request、session、application、attr等对象,存在于stack context中,访问这些对象需要用#前缀来指明。
例如:request对象:用于访问HttpServletRequest的属性。例如#request['foo']或#request.foo,用于返回调用HttpServletRequest的getAttribute('foo')方法的返回值。
- 如果需要访问ValueStack里的属性,直接通过${property}可访问,ValueStack是根对象。当系统创建了Action实例后,该Action实例已经被保存到了ValueStack中,故不用#即可访问Action属性了。