轉----JAVA前端與后端參數傳遞方法小結


1,從Action中傳值到JSP頁面的方法

     ①在Action中定義一個成員變量,然后對這個成員變量提供get/set方法,在JSP頁面就可以取到這個變量的值了。

  1)在Action中定義成員變量

 //定義一個成員變量
private String message;
	
//提供get/set方法
public String getMessage() {
	return message;
}
public void setMessage(String message) {
	this.message = message;
}

  2)在JSP頁面中取值

${message}
或者
<s:property value="message"/>

     ②使用一些Servlet API進行值的存取操作:HttpServletRequest、HttpSession和ServletContext。Struts2對這個三個對象用Map進行了封裝,我們就可以使用Map對象來存取數據了。

  1)在Action中存值

ActionContext actionContext = ActionContext.getContext();
		
//get HttpServletRequest
Map<String,Object> request = (Map) actionContext.get("request");
request.put("a", "a is in request");
		
//get HttpSession
//Map<String,Object> session = (Map) actionContext.get("session");
Map<String,Object> session = actionContext.getSession();
session.put("b", "b is in session");
		
//get ServletContext
//Map<String,Object> application  = (Map) actionContext.get("application");
Map<String,Object> application  = actionContext.getApplication();
application.put("c", "c is in application");

//get ServletActionContext.request
HttpServletRequest request=ServletActionContext.getRequest()
request.setAttribute("c2", "test5");
request.put("c3","test6")
//或者直接放入上下文中
ActionContext.getContext().put("d","d is in application"); 


  2)在JSP頁面上取值(使用EL表達式)

${a}
${b}
${c}
${d}
${c2}
${c3}
 or				
${requestScope.a}
${sessionScope.b}
${applicationScope.c}
${actionContext.d}
${requestScope.c2}
${requestScope.c3}
or<%=request.getAttribute("d")%>  //使用ActionContext.getContext().put("d","d is an application")的情況

附加:ServletContext,ActionContext,ServletActionContext的區別   

在ActionContext.getContext().put("a", "   test3")后頁面上用${a}或<s:property value="#a"/>獲得test3的值

#相當於ActionContext. getContext() ,#session.b表達式相當於ActionContext.getContext().getSession(). getAttribute(”b”)

③對於傳遞list的值,可以使用 actionContext的valueStack來傳遞值棧

    1) 在后台使用Hibernate查詢 ,EntityManager 通過createQuery()來getResultList()獲得List,將list放入valueStack中

ActionContext.getContext().getValueStack().push(model);

    2)在頁面上通過<s:iterator>標簽遍歷list的每條值顯示在table上。

[html]  view plain  copy
 
  1. <table class="tablelist" >  
  2.                 <thead>  
  3.                     <tr>  
  4.                         <th width="100px;">編號</th>  
  5.                         <th>影片類型</th>  
  6.                         <th>影片名稱</th>  
  7.                         <th>發布人</th>  
  8.                         <th>發布時間</th>  
  9.                         <th>審核狀態</th>  
  10.                         <th>操作</th>  
  11.                     </tr>  
  12.                 </thead>  
  13.   
  14.                 <tbody>  
  15.                  <s:iterator value="recordList" var="o" status="i">  
  16.                     <tr>  
  17.                         <td>${o.id}</td>  
  18.                         <td>${o.name }</td>  
  19.                         <td>${o.type}</td>  
  20.                         <td>${o.updateMember.memberName }</td>  
  21.                     </tr>  
  22.                  </s:iterator>  
  23.                 </tbody>  
  24.   
  25.             </table>  


2,從前台向后台傳遞參數

   ①通過表單傳遞參數

     1)在前端jsp頁面設置form表單,確定需要傳遞的參數name讓用戶在input中輸入,通過點擊按鈕后submit()提交到后台

[html]  view plain  copy
 
  1. <s:form method="post" action="ActivityAction_toUI.action">  
  2.   <table class="serTable">  
  3.         <tbody>  
  4.             <tr>  
  5.                 <td>  
  6.                     <label>活動名稱</label>  
  7.                 </td>  
  8.                 <td>  
  9.                     <input type="text" class="serput" name="activityName" placeholder="輸入文本"/>  
  10.                 </td>  
  11.                 <td>  
  12.                     <s:submit cssClass="btn1" value="搜索" onclick="submit();" />  
  13.                 </td>  
  14.             </tr>  
  15.         </tbody>  
  16.      </table>  
  17.  </s:form>  

    2)點擊搜索后activityName會放到HttpServletRequest 中

[java]  view plain  copy
 
  1. HttpServletRequest httpReq = ServletActionContext.getRequest();  
  2. String s = httpReq.getParameter("activityName");  

    另外,在后台也可以通過extends ActionSupport 並構建get/set方法在后台獲得其值

[java]  view plain  copy
 
  1.         private String activityName;  
  2.       
  3.         public String getActivityName() {  
  4.               return activityName;  
  5.          }  
  6.   
  7.         public void setActivityName(String activityName) {  
  8.                this.activityName = activityName;  
  9.         }  
  10.           
  11.         public String list(){  
  12.                  System.out.println(activityName);  
  13.         }  



②通過超鏈接傳遞參數

     1)前台通過超鏈接跳轉時將參數加到方法的后面

<s:a cssClass="acolor" target="mainBody" theme="simple"  action="ActivityAction_info.action?Id=%{Id}&pageNum=%{pageNum}&infot=\"mylittlepony\"" ><img
                                    src="${pageContext.request.contextPath}/images/info.png"
                                    title="查看" /></s:a>

     2)后台通過HttpServletRequest 獲得超鏈接后面參數所對應的值

[java]  view plain  copy
 
  1. HttpServletRequest httpReq = ServletActionContext.getRequest();  
  2. <pre name="code" class="java">Long id= Long.parseLong(httpReq.getParameter("Id"));  

String s = httpReq.getParameter("infot");
Long pageNum = Long.parseLong(httpReq.getParameter("pageNum"));

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM