文档章节

java通过模拟表单实现post跳转

crimson红
 crimson红
发布于 2017/03/20 20:19
字数 216
阅读 18
收藏 1

今天在实现一个跳转功能时发现参数太长了,用redirect无法实现,想改成post提交参数。java自身的api貌似无法实现,最后查到可以用模拟一个表单提交参数的方式实现。

代码如下:

增加http请求工具类

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * Created by crimson.
 */
public class HttpClientUtil {
    Map<String, String> parameter=new HashMap<>();
    HttpServletResponse response;

    public HttpClientUtil(HttpServletResponse response)
    {
        this.response=response;
    }
    public void setParameter(String key,String value)
    {
        this.parameter.put(key, value);
    }
    public void sendByPost(String url) throws IOException
    {
        this.response.setContentType("text/html");
        PrintWriter out = this.response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println(" <HEAD><TITLE></TITLE></HEAD>");
        out.println(" <BODY>");
        out.println("<form name=\"submitForm\" action=\""+url+"\" method=\"post\">");
        Iterator<String> it=this.parameter.keySet().iterator();
        while(it.hasNext())
        {
            String key=it.next();
            out.println("<input type=\"hidden\" name=\""+key+"\" value=\""+this.parameter.get(key)+"\"/>");
        }
        out.println("</from>");
        out.println("<script>window.document.submitForm.submit();</script> ");
        out.println(" </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}

调用处:

        HttpClientUtil http=new HttpClientUtil (response);
        http.setParameter("key", "value");
        http.sendByPost(url);

 

© 著作权归作者所有

crimson红
粉丝 0
博文 10
码字总数 1711
作品 0
杭州
私信 提问
如何通过程序模拟用户登录

这个网站: http://member.mcplive.cn/do.php?ac=login 有个用户名和密码,想通过程序模拟登录,模拟了post提交之后发现返回的结果页面不对,仍然是登录页面 正常登录之后还有一个跳转,猜测...

超级呆子
2012/08/04
10.4K
3
Moco 0.10.2 发布,模拟服务器

Moco是什么? Moco是一个可以轻松搭建测试服务器的框架/工具/程序库。 toJson将普通Java对象转换成JSON文本用于应答。 json将普通Java对象转换成JSON文本用于请求匹配。 增加无端口的socketS...

dreamhead
2015/09/09
2K
0
Play 框架中五个很酷的做法

下面介绍五个很酷的例子,以显示 Play 框架背后的开发哲学。 1. 绑定 HTTP 参数到 Java 对象 使用 Play 框架,你可以很方便的读取 HTTP 参数,来看看下面一个请求 URL 你可以用这样的代码来获...

红薯
2010/07/06
3.4K
7
好程序员Java教程分享Java的两种跳转语句

好程序员Java教程分享Java的两种跳转语句,Java跳转语句用于实现循环执行过程中程序流程的跳转,在Java中的跳转语句有 break语句和 continue语句两种。接下来分别进行详细地讲解。 1、Java的第...

好程序员IT
07/17
39
0
【Spring Boot】7.web开发3

简介 前面我们完成了基本的框架搭建,现在我们继续WEB的开发 员工添加 我们已经完成了跳转到员工添加页面的操作以及页面的制作,现在我们来完善员工添加页面: add.html 其中 我们应该按照r...

落花时节又逢卿
2018/12/27
4
0

没有更多内容

加载失败,请刷新页面

加载更多

关于java中变量的重名问题

在java语言中,变量的命名有很多规则和规范,但是有的地方可以使用相同的变量名,有的地方却不能使用,这是为什么呢? 下面是个人的一点见解,是从作用域和内存来分析的,目的是为了方便理解...

INEVITABLE
24分钟前
4
0
MySQL的COUNT语句,竟然都能被面试官虐的这么惨?

数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。 在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,...

程序员修BUG
26分钟前
4
0
PHP+Mysql统计文件下载次数实例

PHP+Mysql统计文件下载次数实例,实现的原理也很简单,是通过前台点击链接download.php传参id,来更新点击次数。 获取文件列表: <?php require 'conn.php'; $query = mysql_query("S...

ymkjs1990
28分钟前
3
0
一、环境变量及Jshell

一、环境变量: 作用: 可执行文件所在位置的链接。CLI输入命令时,通过环境变量指引找到命令所在位置 windows的环境变量名不区分大小写,Linux区分 Windows下的用户变量即只有当前用户生效 ...

清自以敬
28分钟前
4
0
微软改名部又出手:Office 365正在悄悄更名为Microsoft 365

然而让人疑惑的是Microsoft 365 是微软面向企业提供的服务,这项服务附带操作系统以及办公软件的订阅授权。 现在把面向家庭消费者的办公软件也换成Microsoft 365 是什么操作?没人知道因为微...

linuxCool
28分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部