现有的一个读url的方法,但是读取时,jsp页面上的session都丢失了。
-------------------------------------------------------------------------------
/**
     *输入url,取到此url下的页面内容
     */
public static String getUrlContent(String strUrl)
{
try{
URL url=new URL(strUrl);
BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream()));
String s="";
StringBuffer sb=new StringBuffer("");
while((s=br.readLine())!=null)
{     
sb.append(s+"\r\n");    
}
br.close();
return sb.toString();
}
catch(Exception e){
return "";
}
}

解决方案 »

  1.   

    你要读什么Session啊?不是只要字节流就OK么?
      

  2.   

    比如说,在系统登录后,session记录用户名: request.getSession("user")="username",在以下页面中:
    ----------a.jsp--------------
    <%
      out.print("user:" + request.getSession("user"));
    %>
    用户登录后,在浏览器中访问a.jsp,就会显示“user:username”,但是如果用上面的方法getUrlContent("a.jsp")去读时,就会打出"user:null"值,说明这个方法读取时的session与当前用户的session相对独立。
    用什么方法可以让getUrlContent()读出和浏览器访问一样的结果呢?
      

  3.   

    上面两句修改一下:
    设置session:
    request.getSession().setAttribute("user")="username";
    读session:
    out.print("user:" + request.getSession().getAttribute("user"));
      

  4.   

    不是很清楚楼主的意思。
    大致登陆流程:login.jsp --> servlet --> a.jsp应在login.jsp中设置Session的值,然后才Servlet中将该Session去出,并将输出结果在a.jsp中输出
    注意,在login.jsp中表单form 的输入框字段应有name="username"这一属性,来对应你的Session名把信息说清楚些吧
      

  5.   

    我目地就是不通过浏览器访问,知道一个jsp页面的生成结果
      

  6.   

    不通过浏览器访问,知道一个jsp页面的生成结果这样的话可以直接把结果传给servlet
      

  7.   

    结果传给servlet,怎么实现,我需要这样一个方法
    getJspClinetHtml("http://xxx/a.jsp") 返回 "user:username",
      

  8.   

    那你就不需要再定向页面了,PrintWriter out = res.getWriter()
    直接用out输出所有的信息(包括HTML相关代码)就行了
      

  9.   

    楼上能不能说清楚一点,能不能提供这样的方法: 输入jsp的url, 输出jsp生成的页面字符流
    类似于,getJspClientHtml("http://xxx/a.jsp") ,可以在系统中任何地方调用
      

  10.   

    强烈建议你吧"user:username"放到session里面,调用
      

  11.   

    我不是要取session的值,我是要取整个生成的页面啊
      

  12.   

    首先在你的form里做一个隐藏域<input type="hidden" name="fileContext" value="">
    然后在JavaScript中在提交这个form之前
    var oBody = document.body;
    form1.fileContext.value = oBody.innerHTML;
    然后提交
    在Servlet中得到fileContext的值就是页面代码了
    但是有个限制就是只有<body></body>中间的代码
      

  13.   

    谢谢楼上的,不过楼上方法只能取到当前页的html代码,我想得到的是系统中其它任意页面执行返回的html代码,可以随时在javabean或servlet中得到