使用response将html拼接页面写到当前浏览器端完成自动提交功能
|
/** * 准备中间页面所需参数 * add by linyan 2014-9-22 * @param url * @param params * @param charset * @return */ public static String[] operateParameter(String url,Map<String, String> params,String charset){ String[] ret=new String[2]; if(url!=null&&!"".equals(url)){ if(charset!=null&&!"".equals(charset)){ StringBuffer sb=new StringBuffer(); String parameterUtil=getParams(params,charset); sb.append("<html>"); sb.append("<head>"); sb.append("<script type=\"text/javascript\">"); sb.append("function redirectUrl() {"); sb.append("document.form0.submit();"); sb.append("}"); sb.append("</script>"); sb.append("</head>"); sb.append("<body onload=\"redirectUrl()\">"); sb.append("<form name=\"form0\" action=\""+url+"\" method=\"post\">"); if(parameterUtil!=null){ sb.append(parameterUtil); } sb.append("</form>"); sb.append("</body>"); sb.append("</html>"); ret[0]=ThirdPayConstants.RECOD_SUCCESS; ret[1]=sb.toString(); System.out.println("报文===="+sb.toString()); //把当前拼接的html参数通过response写到当前页面 完成自动提交功能 reponseWrite(sb.toString(),charset); }else{ ret[0]=ThirdPayConstants.RECOD_FAILD; ret[1]="form表单编码方式不存在"; } }else{ ret[0]=ThirdPayConstants.RECOD_FAILD; ret[1]="url不存在"; } return ret; } |
|
/** * 获取中间页面的form表单参数 * @param params * @return */ private static String getParams(Map<String, String> params,String charset) { // TODO Auto-generated method stub String htmlParamss=null; try{ if(params!=null){ StringBuffer sb=new StringBuffer(); Iterator iter = params.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); sb.append("<input type=\"hidden\" name='"+key.toString()+"\' value='"+val.toString()+"' />"); } htmlParamss=sb.toString(); } }catch(Exception e){ e.printStackTrace(); } return htmlParamss; } |
|
/** * 使用response将html拼接页面写到当前浏览器端完成自动提交功能 * @param htmlParamss * @param charset */ public static void reponseWrite(String htmlParamss,String charset) { try { HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html; charset=utf-8"); PrintWriter pw; pw = response.getWriter(); pw.write(htmlParamss) ; pw.flush() ; pw.close() ; } catch (IOException e) { e.printStackTrace(); } } |
使用response将html拼接页面写到当前浏览器端完成自动提交功能的更多相关文章
- 转:HTML5页面如何在手机端浏览器调用相机、相册功能
HTML5页面如何在手机端浏览器调用相机.相册功能 开发微信端浏览器访问的HTML5的页面,页面中有一个<input id="input" type="file&q ...
- HTML5页面如何在手机端浏览器调用相机、相册功能
最近在做一个公司的保险信息处理系统项目,开发微信端浏览器访问的HTML5的页面,页面中有一个<input id="input" type="file"/& ...
- 如何在一个网站或者页面写js
如何在一个网站或者页面写js: 1. JS的分层(功能):jquery(tools) 组件(ui) 应用(app).mvc(backboneJS) 2. JS的规划(管理):避免全局变量和方法(命 ...
- IDEA在jsp页面写out.print()代码报错
如题,小编以前用myeclipse,eclipse的时候,在jsp里写java代码都是可以的,现在我换成了IDEA,却莫名报错 而且没有代码提示,比如说下图这样的,,虽然运行还是能运行...但对强迫症 ...
- wsgiref手写一个web服务端
''' 通过wsgiref写一个web服务端先讲讲wsgiref吧,基于网络通信其根本就是基于socket,所以wsgiref同样也是通过对socket进行封装,避免写过多的代码,将一系列的操作封装成 ...
- 网页页面NULL值对浏览器兼容性的影响
网页页面NULL值对浏览器兼容性的影响 近期做项目中一个页面中的input radio出现浏览器兼容性问题. 主要问题: 在谷歌浏览器,360急速模式和搜狗急速模式中给radio初始动态赋 ...
- 哇塞,原来自己写 Google Chrome 浏览器扩展(插件)这么容易!
1. 首先新建一个记事本,命名为 manifest.json,这是写 Google Chrome 浏览器扩展必须的文件 { "manifest_version": 2, " ...
- js/jquery控制页面动态加载数据 滑动滚动条自动加载事件--转他人的
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件--转他人的 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样 ...
- 黄聪:Pjax无刷新跳转页面实现,支持超链接与表单提交
什么是pjax? 当你点击一个站内的链接的时候,不是做页面跳转,而是只是站内页面刷新.这样的用户体验,比起整个页面都闪一下来说, 好很多. 其中有一个很重要的组成部分, 这些网站的ajax刷新是支持浏 ...
随机推荐
- Linux命令——chattr、lsattr
简介 chattr用于设置文件隐藏属性,lsattr用于查看文件隐藏属性.隐藏属性对系统很有用,尤其是系统安全这一块.但是这两个命令只能在Ext2/Ext3上面有用,其他文件系统可能不支持. chat ...
- 调用office Word Com 组件,提示权限不足处理
最近一直在处理一个项目,项目主要功能与Office-Word 有关,主要涉及到文本内容编辑与样式设置等相关内容.因项目依赖office 相关dll,需要兼容多种Office 版本(office 200 ...
- C.Minimum Array(二分+set)
题目描述: 知识点: lower_bound和uper_bound lower_bound(起始地址,结束地址,要查找的数值) 返回的是数值 第一个 出现的位置. upper_bound(起始地址,结 ...
- selenium与webdriver驱动与firefox、 chrome匹配版本
一.Chrome python3 selenium3.11.0(直接pip安装即可) chromedriver_win32:2.38 Chrome版本: 65.0.3325.146(正式版本)(32 ...
- Navicat 的使用 —— 快捷键
名称 功能 备注 Ctrl+Q 打开查询窗口 Ctrl+/ 注释sql语句 Ctrl+R 运行查询窗口的sql语句 Ctrl+Shift+R 只运行选中的sql语句 F6 打开一 ...
- $().on()的知识点
事件冒泡阶段:事件从事件目标(target)开始,往上冒泡直到页面的最上一级标签. 假设一个元素div,它有一个下级元素p.<div> <p>元素</p></ ...
- RDD&Dataset&DataFrame
Dataset创建 object DatasetCreation { def main(args: Array[String]): Unit = { val spark = SparkSession ...
- linux 查看某个目录下文件的数量
今日思语:时间是个庸医,却自称能包治百病~ 在linux环境下,经常需要查看某个文件目录下的文件数有多少,除了进入当前目录下查看,还可以使用命令: ls -l | grep "^-" ...
- C++指针的一些问题
用变量a给出下面的定义: a)一个整形数(An integer) b)一个指向整形数的指针 c)一个指向指针的指针,它指向的指针指向一个整形数 d)一个有十个整形数的数组 e)一个有十个指针的数组,该 ...
- JMeter学习1
Jmeter的组织方式相对比较扁平,直接是TestPlan(相当于Project),TestPlan下创建的ThreadsGroup(相当于TestCase), Jmeter一个TestPlan也是一 ...