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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩欧美一区二区三区中文精品 | 亚洲美洲国产日产 | 高级黄色片 | 婷婷精品进入 | 99久久伊人精品波多野结衣 | 国产老妇 | 国产成年人视频 | 男男同志videos | 国产亚洲视频在线 | 男人晚上适合偷偷看的污污 | 亚洲国产综合久久久无码色伦 | 女人张开腿让男人桶视频免费大全 | 日本美女动态图片 | 久久精品热只有精品 | 女八把屁股扒开让男生添 | 乖女的嫩奶水h文孕妇 | 欧美灰丝袜丝交nylons | 亚洲第五色综合网啪啪 | 大香线一本 | 袖珍人与大黑人性视频 | 操美女b | 希岛爱理作品在线观看 | 欧美性高清另类videosex死尸 | 四虎影院在线免费观看 | 国产成人亚洲精品乱码在线观看 | 干操视频 | 成人毛片高清视频观看 | 教练你好大轻点漫 | 国产欧美久久一区二区 | 亚洲第一色视频 | 福利视频一区二区牛牛 | 精品欧美男同同性videos | 天堂a免费视频在线观看 | 蜜柚精彩在线观看 | 我的漂亮朋友在线观看全集免费 | 日韩毛片免费 | 日本在线观看视频网站 | 亚洲欧美日韩高清 | 精品国产成a人在线观看 | 欧美同性gayvidoes | 日韩欧美在线视频一区二区 |