HttpURLConnection類的保持session會話

TestServlet.java
package nj.servlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class TestServlet extends HttpServlet {
    public void doPost(HttpServletRequest request,HttpServletResponse response){
        HttpSession session=request.getSession();
        String str=(String)session.getAttribute("name");
        System.out.println("name:"+str);
        session.setAttribute("name", "nj");
        /*String ss=request.getHeader("Cookie");
        System.out.println("session id:"+ss);*/
    }
    public void doGet(HttpServletRequest request,HttpServletResponse response){
        this.doPost(request, response);
    }
}
 
TestServlet.java
package nj.ws.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class TestConnection {
    
    public static void main(String[] args){
        //第一次連接,返回session id
        String sessionId=testUrlConnection();
        //第二次使用session id連接
        connectionBySession(sessionId);
    }
    
    public static String testUrlConnection(){
        String urlStr="Http://localhost:8080/WebServiceProject/testServlet";
        OutputStream out=null;
        InputStream in=null;
        try {
            URL url=new URL(urlStr);
            HttpURLConnection con=(HttpURLConnection)url.openConnection();
            con.setRequestMethod("POST");
            
            //打印請求頭信息
            Map hfs=con.getHeaderFields();
            Set<String> keys=hfs.keySet();
            for(String str:keys){
                List<String> vs=(List)hfs.get(str);
                System.out.print(str+":");
                for(String v:vs){
                    System.out.print(v+"\t");
                }
                System.out.println();
            }
            System.out.println("-----------------------");
            String cookieValue=con.getHeaderField("Set-Cookie");
            System.out.println("cookie value:"+cookieValue);
            String sessionId=cookieValue.substring(0, cookieValue.indexOf(";"));
            return sessionId;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }finally{
            try {
                if(in!=null)
                    in.close();
                if(out!=null)
                    out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    public static void connectionBySession(String sessionId){
        InputStream in=null;
        try{
            String url="Http://localhost:8080/WebServiceProject/testServlet";
            URL u=new URL(url);
            HttpURLConnection con=(HttpURLConnection)u.openConnection();
            con.setRequestMethod("POST");
            con.setRequestProperty("Cookie", sessionId);
            in=con.getInputStream();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try {
                if(in!=null)
                    in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}


運行後打印結果:

Web服務端:

name:null
name:nj

 

測試類打印:

null:HTTP/1.1 200 OK 
Content-Length:0 
Set-Cookie:JSESSIONID=7827696933343BC5005E5244369CB2A8; Path=/WebServiceProject 
Date:Mon, 01 Dec 2008 03:16:30 GMT 
Server:Apache-Coyote/1.1 
-----------------------
cookie value:JSESSIONID=7827696933343BC5005E5244369CB2A8; Path=/WebServiceProject


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章