一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Struts2學習教程之Action類如何訪問WEB資源

Struts2學習教程之Action類如何訪問WEB資源

2021-04-24 11:05bgzyy Java教程

這篇文章主要給大家介紹了關于Struts2學習教程之Action類如何訪問WEB資源的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

之前已經給大家介紹了關于struts2的入門教程,本文接著上次的內容我繼續分享我所學到的知識,和自己在學習過程中所遇到問題以及解決方案。當然,如果讀者發現任何問題均可以在下方評論告知我,先謝

action 中訪問 web 資源

web 資源

所謂的 web 資源是指 httpservletrequest、httpservletresponse、servletcontext 等原生的 api,作為 b/s 應用開發的 controller 必須可以訪問 web 資源,比如向域對象中讀寫屬性等操作。

如何訪問 web 資源

和 servletapi 解耦的方式 : 為了避免與 servletapi 耦合在一起,方便 action 做單元測試,struts2 對 httpservletrequest,httpsession 和 servletcontext 進行了封裝,構造了 3 個 map對象來替代這 3 個對象,在action 中可以使用 httpservletrequest,httpservletsession,httpservletcontext 對應的 map 對象來保存和讀取數據

  • 使用 actioncontext(方法 1): actioncontext 是 action 執行的上下文對象,在 actioncontext 中保存了 action 執行所需要的所有對象,parameters,request,session 等。如獲取 httpsession 對應的 map 對象使用 public map getsession() 方法,context,params 對應的方法也一樣,但對于 request 需要使用 public object get(object key) 方法傳遞 request 參數實現
  • 實現 xxxaware 接口(方法 2):比如實現 requestaware 接口并實現其 setrequest() 方法,這樣就可以在所有的 action 方法中去調用該 requestmap。

使用 actioncontext 獲取域對象的代碼演示

從 index.jsp 頁面發送請求到 showpage.jsp,并將該請求交由 struts 的 action 類objectaction.java 處理請求

在 objectaction.java 中由 actioncontext 獲取域對象并為其添加屬性值,將請求轉發到 showpage.jsp

在 showpage.jsp 頁面我們可以獲取到各個域對象的值

index.jsp

?
1
2
3
4
5
6
7
8
9
10
<%@ page contenttype="text/html;charset=utf-8" language="java" %>
<html>
<head>
 <title>handle</title>
</head>
<body>
-- 傳遞 name 參數,可以在 action 類中由 params 域對象獲得其值,以測試 params 域對象
 <a href="showpage.action?name=bgzyy" rel="external nofollow" >application</a>
</body>
</html>

objectaction.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.request.test;
import com.opensymphony.xwork2.actioncontext;
import java.util.map;
public class objectaction {
 
 public string print() {
//  獲取 actioncontext
  actioncontext actioncontext = actioncontext.getcontext();
//  獲取 action 域對象對應的 map
  map<string, object> applicationmap = actioncontext.getapplication();
//  為 application 賦值
  applicationmap.put("applicationmap", "applicationmapvalue");
//  獲取 session 對應的 map
  map<string, object> sessionmap = actioncontext.getsession();
//  為 sessionmap 賦值
  sessionmap.put("sessionmap", "sessionmapvalue");
//  獲取 request 對應的 map,沒有對應的 getrequest() 方法,所以使用 get("request") 方法
  map<string, object> requestmap = (map<string, object>) actioncontext.get("request");
//  為 requestmap 賦值
  requestmap.put("requestmap", "requestmapvalue");
//  獲取 params 對應的 map
  map<string, object> paramsmap = actioncontext.getparameters();
//  獲取 params 的參數值
  string[] params = (string[]) paramsmap.get("name");
//  將參數值打印到控制臺
  system.out.println(params[0]);
  return "success";
 }
}

struts.xml (只展示 package 節點即可)

?
1
2
3
4
5
<package name="showvalue" extends="struts-default">
 <action name="showpage" class="com.request.test.objectaction" method="print">
  <result name="success">/showpage.jsp</result>
 </action>
</package>

showpage.jsp(只展示 body 標簽內容)

?
1
2
3
4
5
6
<%--獲取到 application 域對象的值--%>
${applicationscope.applicationmap}<br>
<%--獲取到 session 域對象的值--%>
${sessionscope.sessionmap}<br>
<%--獲取 request 域對象的值--%>
${requestscope.requestmap}

細節以及需要注意(可將圖片拖至瀏覽器新的標簽頁查看大圖)

Struts2學習教程之Action類如何訪問WEB資源

使用 xxxaware 接口訪問 web 資源

和使用 actioncontext 一樣,在 index.jsp 頁面發送請求到 objectaction.java 由 print2() 方法處理

在 objectaction.java 中的 print2() 方法中給域對象賦值,并獲取傳入的 parameter 的值

最后在 showpage.jsp 中獲得域對象的值,為了和上一個區分我們給每個輸出的值加上符號以區分。

index.jsp(展示 body 標簽部分)

?
1
<a href="showpage2.action?name=smzyy" rel="external nofollow" >topage2</a>

objectaction.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.request.test;
 
import com.opensymphony.xwork2.actioncontext;
import org.apache.struts2.interceptor.applicationaware;
import org.apache.struts2.interceptor.parameteraware;
import org.apache.struts2.interceptor.requestaware;
import org.apache.struts2.interceptor.sessionaware;
 
import java.util.map;
 
public class objectaction implements requestaware, sessionaware, applicationaware, parameteraware{
 
 private map<string, object> requestmap;
 private map<string, object> sessionmap;
 private map<string, object> applicationmap;
 private map<string, string[]> parametermap;
 
// showpage.action 執行所需的方法
 public string print2() {
  applicationmap.put("applicationmap", "applicationmapval===");
  requestmap.put("requestmap", "requestmapval===");
  sessionmap.put("sessionmap", "sessionmapval===");
  string[] name = parametermap.get("name");
  system.out.println(name[0] + "====");
  return "success";
 }
 
 @override
 public void setapplication(map<string, object> map) {
  this.applicationmap = map;
 }
 
 @override
 public void setparameters(map<string, string[]> map) {
  this.parametermap = map;
 }
 
 @override
 public void setrequest(map<string, object> map) {
  this.requestmap = map;
 }
 
 @override
 public void setsession(map<string, object> map) {
  this.sessionmap = map;
 }
}

struts.xml(展示 package 節點部分)

?
1
2
3
4
5
<package name="showvalue" extends="struts-default">
 <action name="showpage2" class="com.request.test.objectaction" method="print2">
  <result name="success">/showpage.jsp</result>
 </action>
</package>

showpage.jsp (同上,一點都沒變)

選用建議

  通過對上述兩種獲取 web 資源的方法,我們可以知道第一種方法假若有好多的 action 方法需要調用域對象那么每個方法都必須實現,而第二種方法只需實現一次,所以在實際開發中視情況而選擇對應的方法去實現。

和 servletapi 耦合的方式 :可以訪問到更多的 servletapi ,且可以調用原生的方法

  • 使用 servletactioncontext
  • 實現 servletxxxaware 接口

  此中實現方式類似于上述實現方式,我就不在啰嗦。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.cnblogs.com/bgzyy/p/8675082.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: narutomanga玖辛奈之乳 | 给我视频免费看 | 国产亚洲一区二区三区 | 天天摸天天爽视频69视频 | 日本强不卡在线观看 | 性欧美4khdxxxx | 免费观看的毛片 | 成在线人免费视频一区二区三区 | 精品日韩视频 | 手机在线免费观看视频 | 99热.com | 韩日理论片 | 91网红福利精品区一区二 | ova巨公主催眠1在线观看 | 91精品综合国产在线观看 | 欧美人与物videos另类3d | 日本xxxxxx片免费播放18 | 亚洲男人的天堂在线 | 国产激情影院 | 范冰冰上面好大下面好紧 | 国产成人免费片在线观看 | 手机av影院 | 美女被扒开屁股进去网 | 99热视频| 香蕉视频在线观看网址 | 久久国产精品无码视欧美 | 国产在线视频自拍 | 99青青青精品视频在线 | 国产亚洲欧美日韩综合综合二区 | 国产在线视频资源 | 精品久久久久久午夜 | 爱爱小说漫画 | 国产欧美日韩在线观看精品 | 国色天香社区在线视频免费观看 | 十大看黄网站 | 欧美在线一 | 欧美ⅹxxxx视频 | 天天综合网网欲色 | 男女真实无遮挡xx00动态图软件 | 无码人妻少妇色欲AV一区二区 | 国产色网址 |