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

Struts2中ognl中值栈

2017-03-15 23:15 309 查看
1:input.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!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>Insert title here</title>

</head>

<body>

    <form action="../productAction" method="post">

     productName:<input type="text" name="productName"/><br/><br/>

     productDesc:<input type="text" name="productDesc"/><br/><br/>

     productPrice:<input type="text" name="productPrice"/><br/><br/>

     <input type="submit" value="提交"/>

    </form>

</body>

</html>

 2: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>Struts2Env</display-name>

   <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>

  

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

</web-app>

 3: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">

<struts>

<!--打开静态方法调用的限制  -->

<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>

<constant name="struts.i18n.encoding" value="UTF-8"></constant>

<constant name="struts.custom.i18n.resources" value="globalResourceMessages"></constant>

    <package name="default" extends="struts-default" namespace="/">

     <action name="userLogin" class="com.action.UserAction" method="execute">  

            <result name="success">/success.jsp</result>   

     </action> 

     <action name="logout" class="com.action.UserAction" method="logout">  

            <result name="logout">/login.jsp</result>   

     </action> 

      <action name="testResult" class="com.action.TestResultAction" method="execute">  

            <result name="success">/success.jsp</result>   

            <result name="login">/login.jsp</result>   

     </action> 

     <action name="UserAction-*" class="com.action.UsersAction" method="{1}">  

            <result name="{1}-success">/success.jsp</result>     

     </action> 

      <action name="productAction" class="com.valueStack.Product" method="save">  

          <exception-mapping result="input" exception="java.lang.ArithmeticException"></exception-mapping>

        <result name="success">/pages/details.jsp</result>   

        <result name="input">/input.jsp</result>   

     </action> 

     </package>

</struts>

 4:Action

package com.valueStack;

public class TestValueStack {
private String productName;
  private String productDesc;
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;
}

}

5:TestAction

package com.valueStack;

import java.util.Map;

import org.apache.struts2.interceptor.RequestAware;

import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.util.ValueStack;

public class Product implements RequestAware,SessionAware{
private int productId;

   private String productName;

   private String productDesc;

   private double productPrice;

   private Map<String, Object> sessionMap;

   private Map<String, Object> requestMap;

public int getProductId() {
return productId;

}

public void setProductId(int 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;

}

@Override

public String toString() {
return "Product [productId=" + productId + ", productName=" + productName
+ ", productDesc=" + productDesc + ", productPrice=" + productPrice
+ "]";

}

   public String save()

   {
  //1:获取值栈
     ValueStack valueStack=ActionContext.getContext().getValueStack();
  //2: 创建TestvalueStack对象并为其属性赋值
     TestValueStack testvalueStack=new TestValueStack();
     testvalueStack.setProductName("硬盘");
     testvalueStack.setProductDesc("500GB存储量");
  //3:把TestvalueStack对象压人到值栈的栈顶
     valueStack.push(testvalueStack);
  sessionMap.put("product", this);
  requestMap.put("testValueStack",testvalueStack);
  //int i=10/0;
  return "success";

   }

@Override

public void setSession(Map<String, Object> session) {
sessionMap=session;

}

@Override

public void setRequest(Map<String, Object> request) {
requestMap=request;

}

}

 6:view.jsp

<%@ 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>Insert title here</title>

</head>

<body>

<!--Action对象会被Struts2自动放到值栈栈顶  -->

      <s:debug></s:debug>

     ProductId:${productId}<br/><br/>

     ProductName:${productName}<br/><br/>

     ProductDesc:${productDesc}<br/><br/>

     ProductPrice:${productPrice}<br/><br/><br/>

     <h2>Struts2中valueStack的对象栈</h2>

     <!--对象栈中保存的是:action类的对象  -->

     ProductName:<s:property value="[1].productName"/><br/><br/>

     ProductDesc:<s:property value="[1].productDesc"/><br/><br/>

     ProductPrice:<s:property value="[1].productPrice"/><br/><br/>

      ProductName:<s:property value="[0].productName"/><br/><br/>

     ProductDesc:<s:property value="[0].productDesc"/><br/><br/>

     ProductPrice:<s:property value="[0].productPrice"/><br/><br/><br/>

       <h3>JSP中的EL表达式</h3>

     ProductName:${sessionScope.product.productName}<br/><br/>

     ProductDesc:${sessionScope.product.productDesc}<br/><br/>

     ProductPrice:${sessionScope.product.productPrice}<br/><br/><br/>

     <h3>Struts2中valueStack的Map栈</h3>

     <!--Map栈中保存的是:请求的参数与属性  -->

      ProductName:<s:property value="#session.product.productName"/><br/>

      ProductDesc:<s:property value="#session.product.productDesc"/><br/>

      ProductPrice:<s:property value="#session.product.productPrice"/><br/>

</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: