struts2在action中獲取request、session、application,並傳遞數據
阿新 • • 發佈:2017-05-25
ride b2c 傳遞 sets content context 分享 https fcm
struts2.xml:
地址欄:
其它和上述不變。然後地址欄中輸入:
假設僅僅是通過request、session、application傳遞數據,則不須要獲取對應的對象也能夠傳遞數據,代碼例如以下:
ScopeAction.java:
package com.itheima.action; import com.opensymphony.xwork2.ActionContext; public class ScopeAction { public String execute() { /* * 我們這裏不通過字段(加入setXXX、getXXX方法)傳遞數據,我們想著通過域(request、session、application) * 傳遞數據。怎麽樣才幹做到呢?struts2採用低侵入式,action與servlet沒有不論什麽關聯,怎麽才幹獲取域並傳遞數據呢, * 這時就用到了ActionContext類 */ ActionContext context = ActionContext.getContext(); context.getApplication().put("application", "application域");//通過ServletContext域傳遞數據 context.getSession().put("session", "session域");//通過Session域傳遞數據 context.put("request", "request域");//通過Request域傳遞數據 return "success"; } }
<action name="scopeAction_*" class="com.itheima.action.ScopeAction" method="{1}"> <result name="success">/msg.jsp</result> </action>msg.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> ${applicationScope.application }<br/> ${sessionScope.session }<br/> ${requestScope.request }<br/> </body> </html>
=============================================================================================
上述方式沒有獲取到域對象。這裏我們也能夠通過其它方法獲取域對象:
在上述的ScopeAction中加入例如以下方法:
public String doexe() { HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("request", "請求域"); ServletContext context = ServletActionContext.getServletContext(); context.setAttribute("application", "應用域"); HttpSession session = request.getSession(); session.setAttribute("session", "會話域"); // HttpServletResponse response = ServletActionContext.getResponse(); return "success"; }
其它和上述不變。然後地址欄中輸入:
===============================================================================================
另外另一種方式就是通過框架註入:
Scope2Action.java:
package com.itheima.action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import org.apache.struts2.util.ServletContextAware; public class Scope2Action implements ServletRequestAware, ServletResponseAware, ServletContextAware{ private HttpServletRequest request; private HttpServletResponse response; private ServletContext servletContext; @Override public void setServletContext(ServletContext arg0) { this.servletContext = arg0; } @Override public void setServletResponse(HttpServletResponse arg0) { this.response = arg0; } @Override public void setServletRequest(HttpServletRequest arg0) { this.request = arg0; } public String execute() { request.setAttribute("request", "請 求 域"); request.getSession().setAttribute("session", "會 話 域"); servletContext.setAttribute("application", "應 用 域"); return "success"; } }struts2.xml:
<action name="scope2Action" class="com.itheima.action.Scope2Action"> <result name="success">/msg.jsp</result> </action>
struts2在action中獲取request、session、application,並傳遞數據