Struts2訪問Servlet的三種方式
實現特定介面訪問
通過ServletActionContext類package com.pc.web.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; import com.opensymphony.xwork2.ActionSupport; /** * 使用特定介面訪問Servlet物件 * @author Switch * *
[email protected] * [email protected] * [email protected] * [email protected] * 是由一個名稱為servletConfig的攔截器為我們封裝的 */ public class ActionTest7 extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware { private HttpServletRequest request; private HttpServletResponse response; private ServletContext application; /** * @return */ public String demo(){ System.out.println(request); System.out.println(response); System.out.println(application); System.out.println(request.getSession()); return SUCCESS; } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } @Override public void setServletResponse(HttpServletResponse response) { this.response = response; } @Override public void setServletContext(ServletContext application) { this.application = application; } }
package com.pc.struts2.web.action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 訪問ServletAPI的方式
*
* 使用Struts2框架提供了一個工具類:
* ServletActionContext
* 它裡面提供了對應的靜態方法,可以直接獲取ServletAPI
*
* 有一個需要注意的問題:
* [email protected]
* [email protected]
* [email protected]
* [email protected]
*
* requet物件已經不是原來tomcat提供的了,而是被struts2框架包裝過了。
* 包裝使用的是裝飾者模式。
* 裝飾者模式的作用是對方法進行增強。
*
* @author Switch
*/
public class ActionAPITest extends ActionSupport {
/**
* 在Struts2框架中使用ServletAPI
* @return
*/
public String useServletAPI() {
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
ServletContext application = ServletActionContext.getServletContext();
System.out.println(request);
System.out.println(response);
System.out.println(session);
System.out.println(application);
return "success";
}
}
通過ActionContext類
package com.pc.web.action;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsStatics;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* ActionContext類介紹
* 它是Struts2框架為我們提供的一個工具類。
* 該類可以通過方法直接獲取request,response,servletContext物件
* @author Switch
*
* context.getParameters(); == request.getParameterMap(); 獲取的是請求引數
*/
public class ActionTest8 extends ActionSupport implements StrutsStatics {
private HttpServletRequest request;
private HttpServletResponse response;
private ServletContext application;
/**
* 使用ActionContext訪問ServletAPI
* @return
*/
public String demo(){
ActionContext context = ActionContext.getContext();
request = (HttpServletRequest) context.get(HTTP_REQUEST);
response = (HttpServletResponse) context.get(HTTP_RESPONSE);
application = (ServletContext) context.get(SERVLET_CONTEXT);
System.out.println(request);
System.out.println(response);
System.out.println(application);
System.out.println(request.getSession());
/*[email protected]
[email protected]
[email protected]
[email protected]*/
return SUCCESS;
}
/**
* 使用原始ServletAPI物件,往session域和application域中存入資料
* session域中存入 key=sessionAttr value=hello session attr
* application域中存入 key=applicationAttr value=hello application attr
* @return
*/
public String demo2(){
//1.獲取session物件
HttpSession session = ServletActionContext.getRequest().getSession();
//存入資料
session.setAttribute("sessionAttr", "hello session attr");
session.getId();
//2.獲取ServletContext
ServletContext application = ServletActionContext.getServletContext();
application.getRealPath("/WEB-INF/uploads");
//存入資料
application.setAttribute("applicationAttr", "hello application attr");
return SUCCESS;
}
/**
* 使用ActionContext類中的getSession()和getApplication()獲取到的map來往map中存入資料
* sessionMap中存入 key=sessionAttr value=hello session map
* applicationMap中存入 key=applicationAttr value=hello application map
* @return
*/
public String demo3(){
//1.獲取ActionContext物件
ActionContext context = ActionContext.getContext();
//2.獲取sessionMap
Map<String,Object> sessionMap = context.getSession();
sessionMap.put("sessionAttr", "hello session map");
//3.獲取applicationMap
Map<String,Object> applicationMap = context.getApplication();
applicationMap.put("applicationAttr", "hello application map");
return SUCCESS;
}
}
ActionContext類訪問Servlet API的常用方法
方法宣告 | 功能描述 |
void put(String key, Object value) | 將 key-value鍵值對放入ActionContext 中,模擬Servlet API中的HttpServletRequest的setAttributeO方法。 |
Object get(String key) | 通過引數key來查詢當前ActionContext中的值。 |
Map<String, Object> getApplication() | 返回一個Application級的Map物件。 |
static ActionContext getContext() | 獲取當前執行緒的ActionContext物件。 |
Map<String, Object> getParameters() | 返回一個包含所有HttpServletRequest引數資訊的Map物件。 |
Map<String, Object> getSession() | 返回一個Map型別的HttpSession物件。 |
void setApplication(Map<String, Object> application) | 設定Application上下文。 |
void setSession(Map<String, Object> session) | 設定一個Map型別的Session值 。 |
相關推薦
八 Struts2訪問Servlet的API方式三:介面注入
jsp:前段頁面 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DT
HTML HTMLCollection對象訪問的三種方式
HTML HTMLCollection對例: <form action="" name="lee"> <input type="text"> </form> 通過getElementsByTagName: var form = document.getElemen
七 Struts2訪問Servlet的API方式二:原生方式
前端jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
結構體初始化 訪問的三種方式(結構體指標)
輸出三個學生中成績最高的學生資訊 1> #include<stdio.h> typedef struct student { int num; char name[10]; int score; } Student; int m
Struts2訪問Servlet的三種方式
思維導圖 實現特定介面訪問 package com.pc.web.action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Http
Struts2訪問Servlet API的幾種方式
直接 param text cti ring alt getc nbsp context struts2提供了三種方式訪問servlet API:大致分為兩類 1. ActionContext: public static ActionContext getConte
Strtus2訪問Servlet的API 三種方式
不一樣的地方就是下圖所示: --------------------------------------------以下是具體程式碼過程----------------------------------------- 以下是demo1.jsp程式碼 <%@ page language="
Action訪問ServletAPI的三種方式
mvc 構造 缺點 思想 一個 前言 line api 這也 一、前言 Struts是一種基於MVC設計模式的web應用框架,主要擔任C的角色,用於分離頁面顯示和業務邏輯處理,那其實在我們學習jsp的時候學過一個具有類似功能的東西——servlet。其實Struts本質上相
Struts2學習(二)運行Action中方法的三種方式
tracking 利用 content con return -m i++ var itl 1.運行execute()方法 一般的能夠直接在action中書寫execute,調用action時會自己主動運行此方法 2.配置method方法 在s
5.struts2中Action類中獲取ServletAPI的三種方式
靜態方法 ttr intercept println action 需求 對象實例 ext.get ctype **Servlet的API的訪問(開發中偶爾會使用到)** 1.在Action類中也可以獲取到Servlet一些常用的API,有如下三種方式獲取 *
創建servlet的三種方式
告訴 open 創建 esp tps 獲取 pack view throw 第一種方式,實現Servlet接口 1 package com.example.servlet; 2 3 import java.io.IOException; 4 5 impor
搭建FTP服務,實現三種方式的訪問:1.匿名訪問;2,本地用戶訪問;3虛擬用戶訪問。
行程 工作環境 能夠 ftp用戶 a10 linu 進入 編輯 binary FTP服務(File Transfer Protocol,文件傳輸協議)是典型的C/S結構 的應用層協議,需要由服務端軟件,客戶端軟件兩部分共同實 現文件
ASP.NET中 C#訪問資料庫用三種方式顯示資料表
第一種方式:使用DataReader從資料庫中每次提取一條資料,用迴圈遍歷表 下面是我寫的一個例子: &nbs
struts2使用session 的三種方式
1、通過上下文,從ActionContext中獲取 ActionContext actionContext = ActionContext.getContext(); Map session = actionContext.getSession(); 2、實現SessionAware介面
struts2傳遞引數的三種方式
作用:每次訪問struts2的任何一個action方法時,若該方法裡面需要物件的值,完全可以用struts2傳遞引數的三種方式: struts2傳遞引數的三種方式 在傳統的servlet中我們採用request和response傳遞引數,但是struts2如果想用同樣的
Struts2 接受引數的三種方式
1. 屬性方式 1. Action 宣告屬性,且屬性值和頁面name屬性值一致, 2. 提供setXxx方法 ---- 接受少量資料 ------- &nb
struts2框架常量配置的三種方式
struts2框架常量配置的三種方式 1.在struts.xml中使用標籤: 這些常量可見struts2-core-x.x.x.jar核心包下的org.apache.struts2中的default.properties檔案 <!-- constant:配置常量
關於struts2開發Action獲取servletApi的三種方式
首先給大家說明一下servletApi: 相關servletApi也就是指的是request、response、session以及cookie等值作用域 Action訪問servletApi的三種方式: 通過
struts2獲取前臺傳遞過來的資料的三種方式
struts2獲取前臺傳遞過來的資料可以通過屬性驅動和模型驅動兩種方式獲得。 屬性驅動 1、使用變數的方式 前臺: action: action中要獲得前臺傳遞過來的account和password兩個引數的資料。那麼就必須在action中設定和前臺na
實現Servlet的三種方式(與GenericServlet、HttpServlet的關係)
WEB伺服器可以存放資料,他是一個“容器”,作用是接收使用者的請求,再對這個請求做出相應。 Java的Web伺服器必須要支援JSP/Servlet(作為JSP/Servlet的容器)。 所以JSP/Servlet就是JavaWeb伺服器的一套規範。 所以要進行J