在post方法中将重定向发送到url

时间:2017-05-16 11:08:39

标签: javascript servlets

我正在尝试添加参数并重定向到只接受post方法请求的页面。我在我的servlet中使用此代码,并没有将我转发到url。

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    String url = "http://www.thisone.com";
    InputStream in = null;
             try {
                    HttpClient client = new HttpClient();
                    PostMethod method = new PostMethod(url);

                    //Add any parameter if u want to send it with Post req.
                    method.addParameter("User", "xyz");
                    method.addParameter("Name", "abc");

                    int statusCode = client.executeMethod(method);
                    System.out.println(statusCode); 
                    if (statusCode != -1) {
                        response.sendRedirect(response.encodeRedirectURL(url));
                        in = method.getResponseBodyAsStream();
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
} 

1 个答案:

答案 0 :(得分:0)

我认为使用这种方法可以使用post方法重定向。您可以做的是获取客户端的响应,因此设置位置标头作为响应。下面给出了相同的实现:

一旦满足您的条件:

response.setStatus(307);
response.addHeader("Location", "<url>");

还要查看307状态代码的重要性。

以下是javascript代码,它以ajax请求开头并点击servlet获取所需的URL,一旦收到URL,创建HTML表单对象,设置值并提交表单...

<script>
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            callURL(this.responseText);
        }
    };
    xhttp.open("GET", "TestServlet", true);
    xhttp.send();

    function callURL(url){
        var form = document.createElement("form");
        form.setAttribute('method', 'POST');
        form.setAttribute('action', url);
        form.setAttribute('id', 'frmProduct');
        form.style.display = 'none';

        var i = document.createElement('input');
        i.setAttribute('type', 'text');
        i.setAttribute('name', 'name');
        i.setAttribute('value', 'Neeraj');
        form.appendChild(i);
        document.getElementsByTagName('body')[0].appendChild(form);
        form.submit();
    }
</script>

以下是我的Testservlet的实现

@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestServlet() {
        super();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String url = "http://www.thisone.com";
        PrintWriter out = response.getWriter();
        out.print(url);
    }
}