java post 打开新页面_【Java】向一个页面发送post请求并获取其处理之后的结果与用javascript创建一个表单后提交的安全性 | 学步园...

本文对比与《【Java】读取网页中的内容》(点击打开链接)一文,向一个页面发送get请求,并获取其处理之后的结果,这里是向一个页面发送post请求,并获取其处理之后的结果。如果向一个页面发送get请求,并获取其处理之后的结果,只需要直接读取一个网页用?后接各种用&参数连接的参数即可,而向一个页面发送post请求,并获取其处理之后的结果,就不是这么简单了。

这里方法可能在普通的Java文件中不会太常见,但在jsp、安卓等javaweb的网页编程中却十分常用

import java.io.*;

import java.net.*;

public class HttpRequestPost {

/**

* @param url

* 需要相应post请求的url

* @param param

* 请求参数,应该为param1=value1&param2=value2的形式。

* @return 所代表远程资源的响应结果

*/

public static String sendPost(String url, String param) {

PrintWriter out = null;

BufferedReader in = null;

String result = "";

try {

// 打开链接并且配置,这是指定动作

URLConnection conn = new URL(url).openConnection();

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("user-agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

conn.setDoOutput(true);

conn.setDoInput(true);

// 获取URLConnection对象对应的输出流

out = new PrintWriter(conn.getOutputStream());

// 发送请求参数

out.print(param);

// 输出流的缓冲

out.flush();

// 定义BufferedReader输入流来读取post响应之后生成的数据

in = new BufferedReader(

new InputStreamReader(conn.getInputStream()));

String line = null;

while ((line = in.readLine()) != null) {

result += line;

}

// 人走带门

out.close();

in.close();

} catch (Exception e) {

System.out.println("发送 POST 请求出现异常!" + e);

}

return result;

}

public static void main(String[] args) {

//如果http://localhost:8080/a.jsp是一个post请求的响应页面

//希望其得到param=1&param=2的结果,则如此调用

System.out.println(HttpRequestPost.sendPost("http://localhost:8080/a.jsp",

"param=1&param=2"));

}

}

由此可见,使用Java编程可以轻松地向一个页面发送post请求并获取其处理之后的结果。在网页编程时,如果我们希望jsp把数据提交到javascript再数据提交到jsp的交互,不应该使用利用JavaScript创建一个form表单,然后把jsp数据写入这个form并提交的方法:

function MakeForm(){

var FormToJsp = document.createElement("form");

FormToJsp.id = "FormToJsp";

FormToJsp.name = "FormToJsp";

document.body.appendChild(FormToJsp);

// 创建一个隐藏域,把jsp的值写到这个隐藏域

var input = document.createElement("input");

input.type = "hidden";

input.name = "value1";

input.value = "";

FormToJsp.appendChild(input);

FormToJsp.method = "POST";

FormToJsp.action = "/Servlet_address";

FormToJsp.submit();

}

因为别有用心的浏览者可以在源代码里面看到你这段脚本,然后如上编写Java程序,向你这个“隐藏表单”的响应地址不停地发送post内容,从而达到一定的目的。正确的方法是jsp把那些需要多个Servlet里面使用的值,利用request.getSession().setAttribute("JspValueName", JspValue);这一条语句存到Session中,需要使用的话,则利用String

JspValue=request.getSession().getAttribute("JspValueName").toString();来取出这个JspValue。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值