httpclient 处理页面重定向判断详解
httpclient 处理页面重定向判断 处理页面重定向
完整例子先参考 httpClient get方式获取数据
在 JSP/Servlet编程中response.sendRedirect方法就是使用HTTP协议中的重定向机制。它与JSP中 的<jsp:forward …>的区别在于后者是在服务器中实现页面的跳转,也就是说应用容器加载了所要跳转的页面的内容并返回给客户端;而前者是返回一个状态码,这些状态码 的可能值见下表,然后客户端读取需要跳转到的页面的URL并重新加载新的页面。就是这样一个过程,所以我们编程的时候就要通过 HttpMethod.getStatusCode()方法判断返回值是否为下表中的某个值来判断是否需要跳转。如果已经确认需要进行页面跳转了,那么可 以通过读取HTTP头中的location属性来获取新的地址。
   状态码 																 																		             对应 																 																		HttpServletResponse 																 																的常量 																 																		             详细描述 																 																		              																		301              																		SC_MOVED_PERMANENTLY             页面已经永久移到另外一个新地址 																 																		              																		302              																		SC_MOVED_TEMPORARILY             页面暂时移动到另外一个新的地址 																 																		              																		303              																		SC_SEE_OTHER             客户端请求的地址必须通过另外的 																 																		URL 																 																来访问 																 																		              																		307              																		SC_TEMPORARY_REDIRECT             同 																 																		SC_MOVED_TEMPORARILY             下面的代码片段演示如何处理页面的重定向 client.executeMethod(post); 我们可以自行编写两个JSP页面,其中一个页面用response.sendRedirect方法重定向到另外一个页面用来测试上面的例子。
    
        
             
        
             
            
             
            
             
        
             
        
             
            
             
            
             
        
             
        
             
            
             
            
             
        
             
        
             
            
             
            
             
        
             
    
             
            
             
            
             
        
 								 										System.out.println(post.getStatusLine().toString());
 								 								 										post.releaseConnection();
 								 								 										// 								 								检查是否重定向
 								 										 												int 										 										statuscode 										= 										post.getStatusCode();
 								 								 										 												if 										 										((statuscode 										== 										HttpStatus.SC_MOVED_TEMPORARILY) 										|| 								 								 										(statuscode 										== 										HttpStatus.SC_MOVED_PERMANENTLY) 										|| 								 								 										(statuscode 										== 										HttpStatus.SC_SEE_OTHER) 										|| 								 								(statuscode 								 										== 										HttpStatus.SC_TEMPORARY_REDIRECT)) 										{
 								 								// 								读取新的 								URL 								地址 
   Headerheader=post.getResponseHeader("location");
   if (header!=null){
      Stringnewuri=header.getValue();
      if((newuri==null)||(newuri.equals("")))
         newuri="/";
         GetMethodredirect=newGetMethod(newuri);
         client.executeMethod(redirect);
         System.out.println("Redirect:"+redirect.getStatusLine().toString());
         redirect.releaseConnection();
   }else 
    System.out.println("Invalid redirect");
}
- springmvc form表单提交后台对象获取不到值(解决)
 - springmvc form提交使用@ModelAttribute后台取得乱码
 - eclipse 控制台不显示_eclipse console没有了如何让其
 - eclipse 设置修改tomcat的编译发布目录
 - 解决 Tomcat v7.0 Server at localhost was unable to
 - (解决) springmvc jsp界面显示乱码 spring+mybatis+my
 - org.apache.ibatis.builder.BuilderException: Error
 - java.util.concurrent.ExecutionException: Failed to
 - 【servlet3.0新特性】文件上传改进API 实例
 - 【servlet3.0新特性】异步监听器实例
 






