当前位置: 代码迷 >> Java Web开发 >> 页面自动填写表单及select选择有关问题
  详细解决方案

页面自动填写表单及select选择有关问题

热度:5312   发布时间:2016-04-10 22:54:26.0
页面自动填写表单及select选择问题

身份证读卡器及PC端软件由本人开发,已实现读卡功能(SWING 开发的CS软件),如下图:



需求:读卡器刷身份证,相关内容自动填充并自动选择相关项(是一个WEB页面,该页面由第三方开发,最多允许添加一个JS连接),如下图:



本人有一思想,但觉得不是很好:
由客户选择第一个表单后,刷身份证,CS软件实现自动粘贴内容,再用软件模拟按TAB键,再粘贴相关内容,一直下去,但select框就不好处理了(如民族等)。
小弟分数也不多,希望高手能点拨一二,小弟感激不尽。

`
------解决方案--------------------
select 框也可以根据你的操作联动的呀
------解决方案--------------------
引用:
是一个WEB页面,该页面由第三方开发,最多允许添加一个JS连接


他允许你在页面上添加JS连接,那么就采用JS来赋值呗。用户点击页面上的按钮访问你后台的Socket监听,你在java后台写一个Socket的服务端,当监听到有访问的时候,就打开你的读卡窗口,检测身份证信息读取完毕后,用Socket的OutputStream流对象将读取的信息响应给Web页面。

这样你从新写一个Socket就好!
在你的Socket服务端记得手动socket.setSoTimeout。因为有Keep-Alive的缘故,浏览器可能不主动断开连接的。  
------解决方案--------------------
你软件中自嵌一个浏览器可好?
------解决方案--------------------
实际上这个应该是一个网页插件的功能:打开网页,加载插件,用户刷卡,插件将捕获的信息自动填充。
------解决方案--------------------
我可是没做过的!只是提供一个参考方案,到时候你被坑了,不要怪我哈!
1、在按钮上下一个JS方法(假设你的Socket监听端口是8433):

window.location.href = "http://localhost:8433"; //后面可以带参数,也可以不带参


为你提供一个简单的Socket服务,经过验证,是可以正常运行的哦!!!

import java.net.*;  
import java.text.SimpleDateFormat;
import java.io.*;  


/** 
 * 一个简单的Socket实现的HTTP响应服务器。<br> 
 * 只用于熟悉HTTP协议的目的,可以看到浏览器发过来的数据格式。 
 *  
 * @author  */  
public class WebServer {  
public static void main(String[] args) {  
Socket socket = null;  
try {  
// 创建一个监听8433端口的服务器Socket  
ServerSocket s = new ServerSocket(8433);  
System.out.println("WebServer等待来自浏览器的连接\n");  
while (true) {   
socket = s.accept();  
System.out.println("连接已建立。端口号:" + socket.getPort());  
new WebServerThread(socket).start();  
}  
} catch (IOException e) {  
e.printStackTrace();  
}  
}  
}  

class WebServerThread extends Thread {  
private Socket socket;  
WebServerThread(Socket socket) {  
this.socket = socket;  
}   
public void run() {  
try { 
BufferedReader reader;
String s ="";
StringBuffer msg = new StringBuffer();
PrintStream out;  
out = new PrintStream(socket.getOutputStream());  
// 如果10毫秒还没有数据,则视同没有新的数据了。  
// 因为有Keep-Alive的缘故,浏览器可能不主动断开连接的。  
// 实际应用,会根据协议第一行是GET还是 POST确定。  
socket.setSoTimeout(10);  
//  
// 此处读入请求数据并做相应的处理  
//  
try {  
reader = new BufferedReader(new 
InputStreamReader(socket.getInputStream(),"UTF-8"));
while ((s = reader.readLine()) != null){  
msg.append(s+"<br/>");   
}
reader.close();
} catch (Exception ex) {  
// ex.printStackTrace();  
}  
// 下面是由服务器直接生成的主页内容  
// 1、首先向浏览器输出响应头信息  
out.println("HTTP/1.1 200 OK");  
out.println("Content-Type:text/html;charset:UTF-8");  
out.println();  
// 2、输出主页信息  
out  
.println("<HTML><BODY>"  
+ "<center>"  
+ "<h1>当前时间:"  
+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date())  
+ "</h1>"  
+ "身份证号:<input type='text' value='123456789101234567'/>姓名:<input type='text' value='东方不败'/><br/>"  
+ "</center>您提交的数据如下:<pre>" + msg.toString() + "</pre></BODY></HTML>");   
out.flush();  
out.close();  
// 关闭连接    
socket.close();  
} catch (IOException e) {   
e.printStackTrace();  
}  
}  
}   




你结合试试看,不行就另想它法吧!

  相关解决方案