【Java】向一个页面发送post请求并获取其处理之后的结果与用javascript创建一个表单后提交的安全性
2015-01-11 19:37
861 查看
本文对比与《【Java】读取网页中的内容》(点击打开链接)一文,向一个页面发送get请求,并获取其处理之后的结果,这里是向一个页面发送post请求,并获取其处理之后的结果。如果向一个页面发送get请求,并获取其处理之后的结果,只需要直接读取一个网页用?后接各种用&参数连接的参数即可,而向一个页面发送post请求,并获取其处理之后的结果,就不是这么简单了。
这里方法可能在普通的Java文件中不会太常见,但在jsp、安卓等javaweb的网页编程中却十分常用
由此可见,使用Java编程可以轻松地向一个页面发送post请求并获取其处理之后的结果。在网页编程时,如果我们希望jsp把数据提交到javascript再数据提交到jsp的交互,不应该使用利用JavaScript创建一个form表单,然后把jsp数据写入这个form并提交的方法:
JspValue=request.getSession().getAttribute("JspValueName").toString();来取出这个JspValue。
这里方法可能在普通的Java文件中不会太常见,但在jsp、安卓等javaweb的网页编程中却十分常用
import java.io.*; import java.net.*; public class HttpRequestPost { /** * @param url * 需要相应post请求的url * @param param * 请求参数,应该为param1=value1¶m2=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¶m=2的结果,则如此调用 System.out.println(HttpRequestPost.sendPost("http://localhost:8080/a.jsp", "param=1¶m=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 = "<%=JspValue%>"; 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。
相关文章推荐
- JAVA 爬虫之httpclient post请求提交表单获取Ajax数据
- 在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
- ADF11g-020:ADF页面片段中借助javascript使用Form提交Post请求
- 在用form 提交请求时,在请求处理完成后想要在JAVA后台设置返回信息状态展示到页面
- 点击不同的按钮把同一个表单提交到不同的页面处理的方法
- PHP基础----HTML表单的创建与提交----20处理 POST 请求
- 提交一个from的时候,struts2处理完返回结果打开一个新页面,用target="blank"
- 使用java程序模拟页面发送http的post请求
- 【HTML相关】iframe+javascript实现一个表单提交后多个处理文件按序处理
- 在JSP表单提交中怎样在Servlet中处理文件上传并且获取JSP页面传过来的一些参数
- 用Java模拟一个Post表单提交(302和301)
- 使用java程序模拟页面发送http的post请求
- 模拟表单发送POST,GET请求获取数据
- Java用org.apache.http.client的HttpClient发送Post请求 可获取返回Header
- java在线支付---06,07,08_在线支付_编写将数据提交给易宝支付的JSP页面,集成和测试向易宝发送支付请求,实现浏览器自动向易宝发送支付请求
- Java--org.apache.http.client的HttpClient发送Post请求,获取返回Header
- 使用java程序模拟页面发送http的post请求
- Java用org.apache.http.client的HttpClient发送Post请求 可获取返回Header
- Java用org.apache.http.client的HttpClient发送Post请求 可获取返回Header
- Node.js 处理post请求(表单提交)