100分请高人相助,这个问题我真的想不通.URL类相关.
情况是这样的:
我想用URL类写一个获取网页的小程序.代码如下:
URL url = new URL(args[0]);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
urlConn.setRequestMethod("GET");
urlConn.setRequestProperty("Connection", "Keep-Alive");
urlConn.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");
urlConn.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
urlConn.connect();
System.out.println("LEN:" + urlConn.getContentLength());
InputStream in = urlConn.getInputStream();
int n = in.available();
byte[] buf = new byte[1024];
while ( (n = in.read(buf)) >= 0) {
System.out.write(buf, 0, n);
}
这个代码对于某些网页是完全可以正确获取的.但是对于这样一个JSP确无法获取.我在TOMCAT下放了两个JSP:t1.jsp 和 t2.jsp
t1.jsp:
<%@ page contentType="text/html; charset=gb2312" %>
t1 PAGE <Br>
<%session.setAttribute("testattri","Hello,Test!");%>
<%response.sendRedirect("t2.jsp");%>
<%System.out.println("t1.jsp processed.");%>
<%System.out.println("SESSION id1:"+request.getSession().getId());%>
t2.jsp:
<%@ page contentType="text/html; charset=gb2312" %>
t2 Page<br>
<%out.println( session.getAttribute("testattri"));%>
<%System.out.println("t2.jsp processed.");%>
<%System.out.println("SESSION id2:"+request.getSession().getId());%>
功能就是,当访问t1.jsp时,往session里面放入一个字符串,然后跳转到t2.jsp显示出来.
这在浏览器中是完全正常的.但是用我上面写的这段程序却出了问题:<%out.println( session.getAttribute("testattri"));%>这句总是显示null.
后来我在两个页面中都加了<%System.out.println("SESSION id2:"+request.getSession().getId());%>,发现用这段程序访问时,两个页面的session竟然不一样,而用浏览器访问时却一样.
我想问题就出在session上面.但是如何改正我的程序才能让它产生与浏览器一样的效果呢??急切盼望您的解答!