客户端打开浏览器post提交数据

客户端请求url提交post数据的方式很多,

例如HttpWebRequest,HttpClient, 或者第三方的RestSharp以及Flurl 等.

使用也比较简单方便,资料一搜一大堆,不重点写了.

这里主要记录一种使用客户端登录,并且点击触发单点登录到浏览器页面跳转的一种方式.

客户端程序可以轻松启动电脑上的默认浏览器程序,也可以轻松使用浏览器Get请求一个URL地址,但是get请求只能通过QueryString传递可见参数(不论是否对字符进行加密,QueryString是可见的)

而不能直接操作到第三方浏览器行为post数据提交,只能间接通过html+js操作.

很多人用到的方法,是对客户端内嵌一个浏览器,然后进行编程控制.通常的嵌入有 WebBrowser、WebKitBrowser、CefSharp等.

此类方式的具体步骤可以参考如下链接:

https://blog.csdn.net/u011235865/article/details/106262780/

嵌入浏览器的问题很明显,客户端体积增大比较多.

在非必要嵌入的时候, 可以使用隐藏表单的方式,生成html进行跳转.

把生成的html保存为一个Html临时文件.

主要是前端代码,把url123456替换为实际url即可,其它参数自行修改.

<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Redirect with POST</title>
  <script>
    // 创建一个隐藏的表单字段
    function createHiddenField(name, value) {
      var field = document.createElement('input');
      field.type = 'hidden';
      field.name = name;
      field.value = value;
      return field;
    }
    // 页面加载后立即执行的代码
    window.onload = function () {
      let form = document.getElementById('form');
      setTimeout(function () {
        form.submit();
      },3)
    }
  </script>
</head>
<body>
  <!-- 页面内容为空,所有操作都通过JavaScript完成 -->
  <form action="url123456" method="post" id="form" style="display: none;">
    <label for="noticeId">noticeId:</label>
    <input type="text" id="noticeId" name="noticeId" value="noticeId123456"><br><br>
	
	<label for="prequaRecordId">prequaRecordId:</label>
    <input type="text" id="prequaRecordId" name="prequaRecordId" value="prequaRecordId123456"><br><br>
	
    <label for="projectId">projectId:</label>
    <input type="text" id="projectId" name="projectId" value="projectId123456"><br><br>
	
    <label for="packageId">packageId:</label>
    <input type="text" id="packageId" name="packageId" value="packageId123456"><br><br>
	
    <label for="subjectToken">subjectToken:</label>
    <input type="text" id="subjectToken" name="subjectToken"
      value="subjectToken123456"><br><br>
    <!-- <input value="Submit" type="submit" id="submit"> -->
  </form>
</body>
</html>

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的jsp页面,用于实现你的需求。 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.sql.*" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>查询结果</title> </head> <body> <h1>查询结果</h1> <form method="post" action="query.jsp"> <label>SN:</label> <input type="text" name="sn"><br> <label>modeCode:</label> <input type="text" name="modeCode"><br> <label>lotNum:</label> <input type="text" name="lotNum"><br> <label>sterDate:</label> <input type="date" name="sterDate"><br> <label>productMode:</label> <input type="text" name="productMode"><br> <input type="submit" value="查询"> </form> <hr> <% String sn = request.getParameter("sn"); String modeCode = request.getParameter("modeCode"); String lotNum = request.getParameter("lotNum"); String sterDate = request.getParameter("sterDate"); String productMode = request.getParameter("productMode"); if (sn != null || modeCode != null || lotNum != null || sterDate != null || productMode != null) { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://192.168.5.100:3306/mysql?useSSL=false"; String username = "root"; String password = "mypassword"; Connection conn = DriverManager.getConnection(url, username, password); Statement stmt = conn.createStatement(); String sql = "SELECT * FROM table1 WHERE SN='" + sn + "'"; if (modeCode != null) { sql += " AND modeCode='" + modeCode + "'"; } if (lotNum != null) { sql += " AND logNum='" + lotNum + "'"; } if (sterDate != null) { sql += " AND sterDate='" + sterDate + "'"; } if (productMode != null) { sql += " AND productMode='" + productMode + "'"; } ResultSet rs = stmt.executeQuery(sql); out.println("<table border=\"1\">"); out.println("<tr><th>序列号</th><th>型号</th><th>批号</th><th>灭菌日期</th></tr>"); while (rs.next()) { out.println("<tr>"); out.println("<td>" + rs.getString("SN") + "</td>"); out.println("<td>" + rs.getString("modeCode") + "</td>"); out.println("<td>" + rs.getString("logNum") + "</td>"); out.println("<td>" + rs.getString("sterDate") + "</td>"); out.println("</tr>"); } out.println("</table>"); rs.close(); stmt.close(); conn.close(); } catch (ClassNotFoundException e) { out.println("ClassNotFoundException: " + e.getMessage()); } catch (SQLException e) { out.println("SQLException: " + e.getMessage()); } } %> </body> </html> ``` 这个页面包含一个查询表单,用户可以输入查询条件并提交查询。在服务器端,我们使用jdbc连接到mysql数据库,根据用户输入的条件进行查询,然后将结果显示在表格中。 注意,为了安全起见,这个页面没有进行任何输入验证和SQL注入防护。如果需要在生产环境中使用,你需要进一步加强安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值