亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Struts2學(xué)習(xí)教程之Action類(lèi)如何訪(fǎng)問(wèn)WEB資源

 更新時(shí)間:2018年04月27日 11:25:21   作者:bgzyy  
這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)教程之Action類(lèi)如何訪(fǎng)問(wèn)WEB資源的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。

前言

之前已經(jīng)給大家介紹了關(guān)于Struts2的入門(mén)教程,本文接著上次的內(nèi)容我繼續(xù)分享我所學(xué)到的知識(shí),和自己在學(xué)習(xí)過(guò)程中所遇到問(wèn)題以及解決方案。當(dāng)然,如果讀者發(fā)現(xiàn)任何問(wèn)題均可以在下方評(píng)論告知我,先謝

在 Action 中訪(fǎng)問(wèn) WEB 資源

web 資源

所謂的 WEB 資源是指 HttpServletRequest、HttpServletResponse、ServletContext 等原生的 API,作為 B/S 應(yīng)用開(kāi)發(fā)的 Controller 必須可以訪(fǎng)問(wèn) WEB 資源,比如向域?qū)ο笾凶x寫(xiě)屬性等操作。

如何訪(fǎng)問(wèn) WEB 資源

和 ServletAPI 解耦的方式 : 為了避免與 ServletAPI 耦合在一起,方便 Action 做單元測(cè)試,Struts2 對(duì) HttpServletRequest,HttpSession 和 ServletContext 進(jìn)行了封裝,構(gòu)造了 3 個(gè) Map對(duì)象來(lái)替代這 3 個(gè)對(duì)象,在A(yíng)ction 中可以使用 HttpServletRequest,HttpServletSession,HttpServletContext 對(duì)應(yīng)的 Map 對(duì)象來(lái)保存和讀取數(shù)據(jù)

  • 使用 ActionContext(方法 1): ActionContext 是 Action 執(zhí)行的上下文對(duì)象,在 ActionContext 中保存了 Action 執(zhí)行所需要的所有對(duì)象,Parameters,request,session 等。如獲取 HttpSession 對(duì)應(yīng)的 Map 對(duì)象使用 public Map getSession() 方法,Context,Params 對(duì)應(yīng)的方法也一樣,但對(duì)于 request 需要使用 public Object get(Object key) 方法傳遞 request 參數(shù)實(shí)現(xiàn)
  • 實(shí)現(xiàn) XxxAware 接口(方法 2):比如實(shí)現(xiàn) RequestAware 接口并實(shí)現(xiàn)其 setRequest() 方法,這樣就可以在所有的 action 方法中去調(diào)用該 requestMap。

使用 ActionContext 獲取域?qū)ο蟮拇a演示

從 index.jsp 頁(yè)面發(fā)送請(qǐng)求到 showPage.jsp,并將該請(qǐng)求交由 Struts 的 Action 類(lèi)ObjectAction.java 處理請(qǐng)求

在 ObjectAction.java 中由 ActionContext 獲取域?qū)ο蟛槠涮砑訉傩灾?,將?qǐng)求轉(zhuǎn)發(fā)到 showPage.jsp

在 showPage.jsp 頁(yè)面我們可以獲取到各個(gè)域?qū)ο蟮闹?br />

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>Handle</title>
</head>
<body>
-- 傳遞 name 參數(shù),可以在 Action 類(lèi)中由 Params 域?qū)ο螳@得其值,以測(cè)試 Params 域?qū)ο?
 <a href="showPage.action?name=bgZyy" rel="external nofollow" >Application</a>
</body>
</html>

ObjectAction.java

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 域?qū)ο髮?duì)應(yīng)的 Map
  Map<String, Object> applicationMap = actionContext.getApplication();
//  為 application 賦值
  applicationMap.put("applicationMap", "applicationMapValue");
//  獲取 Session 對(duì)應(yīng)的 Map
  Map<String, Object> sessionMap = actionContext.getSession();
//  為 sessionMap 賦值
  sessionMap.put("sessionMap", "sessionMapValue");
//  獲取 request 對(duì)應(yīng)的 Map,沒(méi)有對(duì)應(yīng)的 getRequest() 方法,所以使用 get("request") 方法
  Map<String, Object> requestMap = (Map<String, Object>) actionContext.get("request");
//  為 requestMap 賦值
  requestMap.put("requestMap", "requestMapValue");
//  獲取 params 對(duì)應(yīng)的 Map
  Map<String, Object> paramsMap = actionContext.getParameters();
//  獲取 params 的參數(shù)值
  String[] params = (String[]) paramsMap.get("name");
//  將參數(shù)值打印到控制臺(tái)
  System.out.println(params[0]);
  return "success";
 }
}

struts.xml (只展示 package 節(jié)點(diǎn)即可)

<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 標(biāo)簽內(nèi)容)

<%--獲取到 application 域?qū)ο蟮闹?-%>
${applicationScope.applicationMap}<br>
<%--獲取到 session 域?qū)ο蟮闹?-%>
${sessionScope.sessionMap}<br>
<%--獲取 request 域?qū)ο蟮闹?-%>
${requestScope.requestMap}

細(xì)節(jié)以及需要注意(可將圖片拖至瀏覽器新的標(biāo)簽頁(yè)查看大圖)

 

使用 XxxAware 接口訪(fǎng)問(wèn) WEB 資源

和使用 ActionContext 一樣,在 index.jsp 頁(yè)面發(fā)送請(qǐng)求到 ObjectAction.java 由 print2() 方法處理

在 ObjectAction.java 中的 print2() 方法中給域?qū)ο筚x值,并獲取傳入的 parameter 的值

最后在 showPage.jsp 中獲得域?qū)ο蟮闹?,為了和上一個(gè)區(qū)分我們給每個(gè)輸出的值加上符號(hào)以區(qū)分。

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

<a href="showPage2.action?name=smZyy" rel="external nofollow" >ToPage2</a>

ObjectAction.java

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 執(zhí)行所需的方法
 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 節(jié)點(diǎn)部分)

<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 (同上,一點(diǎn)都沒(méi)變)

選用建議

  通過(guò)對(duì)上述兩種獲取 WEB 資源的方法,我們可以知道第一種方法假若有好多的 action 方法需要調(diào)用域?qū)ο竽敲疵總€(gè)方法都必須實(shí)現(xiàn),而第二種方法只需實(shí)現(xiàn)一次,所以在實(shí)際開(kāi)發(fā)中視情況而選擇對(duì)應(yīng)的方法去實(shí)現(xiàn)。

和 ServletAPI 耦合的方式 :可以訪(fǎng)問(wèn)到更多的 ServletAPI ,且可以調(diào)用原生的方法

  • 使用 ServletActionContext
  • 實(shí)現(xiàn) ServletXxxAware 接口

  此中實(shí)現(xiàn)方式類(lèi)似于上述實(shí)現(xiàn)方式,我就不在啰嗦。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Rabbit消息重試機(jī)制問(wèn)題記錄

    Rabbit消息重試機(jī)制問(wèn)題記錄

    消息重試機(jī)制就是在消息處理失敗之后重新發(fā)送,主要時(shí)為了解決消息發(fā)送過(guò)程可能會(huì)出現(xiàn)的問(wèn)題,例如 網(wǎng)絡(luò)故障、服務(wù)臨時(shí)不可用 等,這篇文章主要介紹了Rabbit消息重試機(jī)制問(wèn)題記錄,需要的朋友可以參考下
    2024-08-08
  • SpringBoot實(shí)現(xiàn)連接nacos并支持多環(huán)境部署

    SpringBoot實(shí)現(xiàn)連接nacos并支持多環(huán)境部署

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)連接nacos并支持多環(huán)境部署方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • SpringBoot調(diào)用公共模塊的自定義注解失效的解決

    SpringBoot調(diào)用公共模塊的自定義注解失效的解決

    這篇文章主要介紹了SpringBoot調(diào)用公共模塊的自定義注解失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java實(shí)現(xiàn)郵件發(fā)送功能

    Java實(shí)現(xiàn)郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)郵件發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • jpa使用注解生成表時(shí)無(wú)外鍵問(wèn)題及解決

    jpa使用注解生成表時(shí)無(wú)外鍵問(wèn)題及解決

    這篇文章主要介紹了jpa使用注解生成表時(shí)無(wú)外鍵問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 在IDEA中集成maven詳細(xì)流程圖示例

    在IDEA中集成maven詳細(xì)流程圖示例

    最近利用兩天時(shí)間學(xué)習(xí)了MyBatis以及maven,避免經(jīng)典的學(xué)過(guò)就忘記,我打算做出點(diǎn)總結(jié)以便日后復(fù)習(xí),當(dāng)然如果能幫到需要的人也是極好的,需要的朋友可以參考下
    2021-06-06
  • @Autowired注解在抽象類(lèi)中失效的原因及解決

    @Autowired注解在抽象類(lèi)中失效的原因及解決

    這篇文章主要介紹了@Autowired注解在抽象類(lèi)中失效的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 基于Java字符串 "==" 與 "equals" 的深入理解

    基于Java字符串 "==" 與 "equals" 的深入理解

    本篇文章是對(duì)Java中的字符串"=="與"equals"進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • spring?boot教程之建立第一個(gè)HelloWorld

    spring?boot教程之建立第一個(gè)HelloWorld

    這篇文章主要介紹了spring?boot教程之建立第一個(gè)HelloWorld的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • JAVA驗(yàn)證碼工具實(shí)例代碼

    JAVA驗(yàn)證碼工具實(shí)例代碼

    這篇文章主要介紹了JAVA驗(yàn)證碼工具實(shí)例代碼,需要的朋友可以參考下
    2018-03-03

最新評(píng)論