第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以在控制器級別添加請求參數(shù)并將其轉(zhuǎn)發(fā)到另一個網(wǎng)站嗎?

我可以在控制器級別添加請求參數(shù)并將其轉(zhuǎn)發(fā)到另一個網(wǎng)站嗎?

慕桂英546537 2022-07-27 11:29:31
這個想法是,我收到了包含一些參數(shù)的 POST 請求,例如汽車名稱和價格我需要添加一些客戶不應(yīng)該知道的參數(shù)(例如,汽車的 VIN,客戶在購買之前不應(yīng)該知道)然后,添加參數(shù)后,我想將此請求轉(zhuǎn)發(fā)到另一個站點,其中包含我傳遞的所有數(shù)據(jù)(車名、價格、VIN)有沒有辦法在控制器級別而不是過濾器上實現(xiàn)?@RequestMapping(value = "/abc")public void ABC(final HttpServletRequest request) {     request.getParameterMap().put("vin", VIN_CODE); // cannot do that because it is read-only     return "forward:https://completelyanothersite.com";}編輯:根據(jù)評論,轉(zhuǎn)發(fā)不是解決方案,而是重定向是一個
查看完整描述

3 回答

?
慕哥9229398

TA貢獻1877條經(jīng)驗 獲得超6個贊

不那么臟(據(jù)我所知)的方法是擴展請求:


public class WrappedHttpServletRequestWrapper extends HttpServletRequestWrapper

{

    private final Map<String, String[]> modifiableParameters;

    private Map<String, String[]> allParameters = null;



    public WrappedHttpServletRequestWrapper (final HttpServletRequest request, 

                                                    final Map<String, String[]> additionalParams)

    {

        super(request);

        modifiableParameters = new TreeMap<String, String[]>();

        modifiableParameters.putAll(additionalParams);

    }


    @Override

    public Map<String, String[]> getParameterMap()

    {

        // allParameters contains old parameters + the ones you added 

        return Collections.unmodifiableMap(allParameters);

    }

    //... other overriden methods

}

并使用它來添加您的參數(shù)。這是參考。


以下是您將如何使用它:


Map<String, String[]> extraParams = new TreeMap<String, String[]>()

HttpServletRequest wrappedRequest = new WrappedHttpServletRequestWrapper(request, extraParams);

request.getRequestDispatcher("url").forward(wrappedRequest, response);


查看完整回答
反對 回復(fù) 2022-07-27
?
慕姐4208626

TA貢獻1852條經(jīng)驗 獲得超7個贊

Spring MVC 提供了一組強大的功能來自動為您解析和映射 HTTP 請求和響應(yīng),因此您不必手動執(zhí)行,可以專注于業(yè)務(wù)邏輯。在這種情況下,Spring 可以為您提供所有請求參數(shù)的映射,如下所示:

@PostMapping("/abc")
public void abc(@RequestParam Map<String, String> params) { ... }

(或者,如果您需要多值參數(shù),您可以使用MultiValueMap,它更符合標準,但使用起來更復(fù)雜)。你會得到一份地圖的私人副本,實際上它是一個可變的LinkedHashMap,但如果你不確定你總是可以直接說new HashMap<>(params).

一旦你有了這個params地圖,你可以添加任何你想要的附加值,但除非你可以在你自己的應(yīng)用程序中將某人發(fā)送到另一個控制器,否則你需要生成一個redirect:響應(yīng)(在這種情況下,VIN 將在URL)或自己向其他服務(wù)發(fā)出 REST 請求,然后將信息轉(zhuǎn)發(fā)回用戶。


查看完整回答
反對 回復(fù) 2022-07-27
?
紫衣仙女

TA貢獻1839條經(jīng)驗 獲得超15個贊

您可以將重定向發(fā)送到另一個網(wǎng)站,但不能將其轉(zhuǎn)發(fā)到另一個網(wǎng)站。使用 resp.sendRedirect(url);



查看完整回答
反對 回復(fù) 2022-07-27
  • 3 回答
  • 0 關(guān)注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號