使用c:import时如何将cookie传递给资源?

时间:2011-06-13 12:09:03

标签: java jsp jstl

我正在尝试在jsp中导入外部资源,所以我正在使用:

<c:import url="http://foo.co.uk/articles?id=${article.id}" />

是否可以将当前请求中收到的cookie传递给导入的资源?

2 个答案:

答案 0 :(得分:2)

不,你不能。

您必须在servlet中执行此操作,例如使用new URL(..).openConnection()

答案 1 :(得分:1)

c:import标签无法将cookie传递给外部资源。您可以通过精确模拟c:import标记功能以及将cookie传递到导入资源的附加功能来解决此问题。

//使用java.net.URL自己处理绝对URL             URL u =新网址(目标);

        HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
        Cookie cookies [] = request.getCookies();
        Cookie myCookie = null;
        String WCSCookie="";
        if (cookies != null)
        {
            System.out.println("Cookies List start------------");


        for (int i = 0; i < cookies.length; i++) 
        {

        myCookie = cookies[i];
        System.out.println(myCookie.getName()+"="+myCookie.getValue());
        WCSCookie = WCSCookie+";"+myCookie.getName()+"="+myCookie.getValue();


        }
        }

        System.out.println("-------------------------");
        System.out.println(WCSCookie);
        System.out.println("-------------------------");
        System.out.println("Cookies List end------------");

        URLConnection uc = u.openConnection();
        uc.setRequestProperty("Cookie", WCSCookie);
            InputStream i = uc.getInputStream();
相关问题