码迷,mamicode.com
首页 > 其他好文 > 详细

跨域请求页面跳转

时间:2015-02-08 15:14:58      阅读:429      评论:0      收藏:0      [点我收藏+]

标签:

1.jsp->java(编码)->java

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
<script type="text/javascript" src="jquery-1.9.1.js"></script>

</head>
<body>
<a onclick="testWbAPI()">share</a>

<script>
    function testWbAPI(){
        //var url = "http://127.0.0.1:6080/helloworld/receiveWBAPI?userId=111&content="+encodeURI("我哦我我");
        var url = "/myweb/ShareWBAPI?userId=111&content="+encodeURI("我哦我我");
        window.open(url);
        
        /*$.ajax({
               type: "POST",
               //url: "/myweb/ShareWBAPI",
               url:"http://127.0.0.1:6080/helloworld/receiveWBAPI",
               data: "userId=11111",
               success: function(msg){
                 alert( "Data Saved: " + msg );
               },
               error:function(x,a,s){
                   alert(x+a+s)
               }
            }); */
    }
</script>
</body>
</html>

 

package bookstore;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.httpclient.*;

import org.apache.commons.httpclient.methods.PostMethod;




/**
 * Servlet implementation class ShareWBAPI
 */
@WebServlet("/ShareWBAPI")
public class ShareWBAPI extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ShareWBAPI() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String POST_URL="http://127.0.0.1:6080/helloworld/receiveWBAPI"; 
        
        response.sendRedirect(POST_URL+"?userId=111&content="+URLEncoder.encode(new String(request.getParameter("content").getBytes("iso-8859-1"),"utf-8"), "gbk"));
    }

}
package test;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class receiveWBAPI
 */
public class receiveWBAPI extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public receiveWBAPI() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        request.getRequestDispatcher("/shareWbAPI.jsp").forward(request, response);
    }

}
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body >
<a onclick="showPara()">share</a>
<div>userId<%=request.getParameter("userId") %></div>
<div>content<%=new String(request.getParameter("content").getBytes("iso-8859-1"),"gbk") %></div>
</body>
</html>

 

 

2.jsp->Ajava->Bjava(sendRedirect,实际未跳转)->Ajava(跳转)

Ajava

package bookstore;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.httpclient.*;

import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;




/**
 * Servlet implementation class ShareWBAPI
 */
@WebServlet("/ShareWBAPI")
public class ShareWBAPI extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ShareWBAPI() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String POST_URL="http://127.0.0.1:6080/helloworld/receiveWBAPI"; 
//        URL postUrl = new URL(POST_URL);  
//           HttpURLConnection connection = (HttpURLConnection) postUrl  
//                   .openConnection();  
//           connection.setDoOutput(true);  
//           connection.setDoInput(true);  
//           connection.setRequestMethod("POST");  
//           connection.setUseCaches(false);  
//           connection.setInstanceFollowRedirects(true);  
//           connection.setRequestProperty("Content-Type",  
//                   "application/x-www-form-urlencoded");  
//           
//           connection.setRequestProperty(key, value)
//           /**//* 
//            * 与readContentFromPost()最大的不同,设置了块大小为5字节 
//            */  
//           connection.setChunkedStreamingMode(5);  
//           connection.connect();
//           
//           /**//* 
//            * 注意,下面的getOutputStream函数工作方式于在readContentFromPost()里面的不同 
//            * 在readContentFromPost()里面该函数仍在准备http request,没有向服务器发送任何数据 
//            * 而在这里由于设置了ChunkedStreamingMode,getOutputStream函数会根据connect之前的配置 
//            * 生成http request头,先发送到服务器。 
//            */  
//           DataOutputStream out = new DataOutputStream(connection  
//                   .getOutputStream());  
//           String content = "userId=11111&content=" + URLEncoder.encode("一个大肥人", "utf-8");  
//           out.writeBytes(content);   
//      
//           out.flush();  
//           out.close();
        
        
        
        
        
        PostMethod postMethod = new PostMethod(POST_URL);   
        postMethod.addParameter("userId","1111");   
        postMethod.addParameter("content","主题");   
        
        HttpClient client = new HttpClient();   
        client.setConnectionTimeout(1000 * 60);   
        int status=0;   
        try {   
        status = client.executeMethod(postMethod);   
        } catch (HttpException e) {   
        // TODO Auto-generated catch block   
        e.printStackTrace();   
        } catch (IOException e) {   
        // TODO Auto-generated catch block   
        e.printStackTrace();   
        }   
        if(status==HttpStatus.SC_OK) {   
          
        } else {   
        }   
        postMethod.releaseConnection();   
        
         //因为Bjava,redirect所以返回302,        
        if ((status == HttpStatus.SC_MOVED_TEMPORARILY) ||(status == HttpStatus.SC_MOVED_PERMANENTLY) ||(status == HttpStatus.SC_SEE_OTHER) || (status == HttpStatus.SC_TEMPORARY_REDIRECT)) { 
            //读取新的URL地址            
            Header header = postMethod.getResponseHeader("location");
            if (header != null) {
                String newuri = header.getValue();
                if ((newuri == null) || (newuri.equals(""))) 
                    newuri ="/";
                    GetMethod redirect = new GetMethod(newuri);
                    client.executeMethod(redirect);
                    Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+newuri); //跳转页面效果
                    System.out.println("Redirect:"+ redirect.getStatusLine().toString());                 
                    redirect.releaseConnection();             } 
            else                 System.out.println("Invalid redirect");         } 
        }
        
    }

 

Bjava

package test;

import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class receiveWBAPI
 */
public class receiveWBAPI extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public receiveWBAPI() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        response.sendRedirect("/helloworld/shareWbAPI.jsp"+"?userId"+request.getParameter("userId")+"&content="+URLEncoder.encode(new String(request.getParameter("content").getBytes("iso-8859-1"),"gbk"),"gbk"));

    }

}

 

跨域请求页面跳转

标签:

原文地址:http://www.cnblogs.com/grape1211/p/4279921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!