struts2使用OGNL表达式
2017-01-22 00:00
387 查看
摘要: struts2使用OGNL表达式
Product.java
Test.java
node.txt
struts.xml
details.jsp
input.jsp
web.xml
index.jsp
效果
Product.java
package com.huangliusong.entities; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.ValueStack; public class Product { private Integer productId; private String productname; private String productdesc; private Double productprice; @Override public String toString() { return "Product [productId=" + productId + ", productname=" + productname + ", productdesc=" + productdesc + ", productprice=" + productprice + "]"; } public Product() { super(); // TODO Auto-generated constructor stub } public Integer getProductId() { return productId; } public void setProductId(Integer productId) { this.productId = productId; } public String getProductname() { return productname; } public void setProductname(String productname) { this.productname = productname; } public String getProductdesc() { return productdesc; } public void setProductdesc(String productdesc) { this.productdesc = productdesc; } public Double getProductprice() { return productprice; } public void setProductprice(Double productprice) { this.productprice = productprice; } public String save() { System.err.println("details" + this); // 获取值栈对象 ValueStack valueStack = ActionContext.getContext().getValueStack(); // 创建Test对象 并且为属性赋值 Test test = new Test(); test.setProductdesc("cpp-desc"); test.setProductname("cpp"); // 把 Test对象压栈 到值栈的栈顶 valueStack.push(test); return "details"; } }
Test.java
package com.huangliusong.entities; public class Test { public String getProductname() { return productname; } public void setProductname(String productname) { this.productname = productname; } public String getProductdesc() { return productdesc; } public void setProductdesc(String productdesc) { this.productdesc = productdesc; } private String productname; private String productdesc; }
node.txt
1.关于值栈 1)${productName}值 并不在request域中 而是在值栈中 获取的 2)valueStack I 可以从actionContext中取值栈的对象 II值栈可以分为两个逻辑部分 >MAP栈 实际上是OgnlContext 类型 里面保存着各种map requestMap sessionMap parameterMap attribute >对象map 实际上是Componen类型 是一个使用ArrayList定义的栈 里面保存和 当前Action实例相关的对象 是一个数据结构意义的栈 使用s:property标签和OGNL表达式来读取值栈中属性值 1.值栈中的属性值: >对于对象栈:对象栈中某一个对象的属性值。 >map栈request,session,application 的一个属性值或者一个请求参数的值。 2.读取对象栈中对象的属性可以采用object.propertyName object['propertyName'] object["propertyName"] 可以通过加下标的方式进行读取:[0].message读取0对象的message属性 从第0个对象进行搜索 可以结合s:property 标签s:property value="[0]message" 等同于 <s:property value="message"> action对象会被struts2自动的放到值栈里面的栈顶
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="default" namespace="/" extends="struts-default"> <action name="Product_input" > <result>/WEB-INF/pages/input.jsp</result> </action> <action name="pruduct_save" class="com.huangliusong.entities.Product" method="save"> <result name="details">/WEB-INF/pages/details.jsp</result> </action> </package> </struts>
details.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!-- 导入标签struts2 --> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>商品的详细信息</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"> </head> <s:debug></s:debug> <body> ID:${productId } <br> 名字:${productname } <br> 描述:${productdesc } <br> 价格:${productprice } <br> <!-- 使用ognl读取属性 --> 使用ognl读取属性 <br> ID: <s:property value="[0].productId" /> <br> 名字: <s:property value="[0].productname" /> <br> 描述: <s:property value="[0].productdesc" /> <br> 价格: <s:property value="[0].productprice" /> <br> </body> </html>
input.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>页面输入也</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> <form action="pruduct_save.action" method="post"> 产品名字<input type="text" name="productname"><br> 产品描述<input type="text" name="productdesc"><br> 产品价格<input type="text" name="productprice"><br> <input type="submit" value="提交"> </form> </body> </html>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>strust2-6</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% 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 'index.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> <h1> <a href="Product_input.action">Product_input</a> </h1> </body> </html>
效果
相关文章推荐
- 使用Struts2开发Java Web应用程序(目录)
- 为何不使用spring、struts2、easyjweb等开源框架
- 在Struts2中使用SiteMesh插件
- 为何不使用spring、struts2、easyjweb等开源框架
- 为何不使用spring、struts2、easyjweb等开源框架
- 为何不使用spring、struts2、easyjweb等开源框架
- 为何不使用spring、struts2、easyjweb等开源框架
- 为何不使用spring、struts2、easyjweb等开源框架
- 为何不使用spring、struts2、easyjweb等开源框架
- 使用myeclipse 应用struts2 + spring + hibernate 实现CRUD
- 使用struts2中的文件上传
- 使用Spring插件完成Spring和Struts2的整合
- 使用Struts2开发Java Web应用程序
- 第四部分 开发实例 使用Struts2开发TeamWare
- 使用struts2表单数据校验功能
- 使用myeclipse 应用struts2 + spring + hibernate 实现CRUD
- Struts2的select使用及默认值的测试
- 为何不使用spring、struts2、easyjweb等开源框架
- struts2的s:param标签使用
- 使用Lomboz3生成Struts2项目后运行Tomcat出现Unable to load bean错误的解决