我使用以下代码从JSP中的条形码扫描器读取条形码扫描值
<%
final Scanner scanner;
try
{
scanner = new Scanner();
try {
scanner.release();
scanner.close();
} catch (Exception e) {
}
scanner.open("MotorolaScannerUSB");
scanner.claim(100);
scanner.setDeviceEnabled(true);
scanner.setDataEventEnabled(true);
scanner.addDataListener(new DataListener()
{
public void dataOccurred(DataEvent arg0) {
Scanner scn = (Scanner) arg0.getSource();
if (scn.equals(scanner)) {
try {
scanner.claim(100);
System.out.println(new String(scanner.getScanData()));
scanner.claim(100);
scanner.setDeviceEnabled(true);
scanner.setDataEventEnabled(true);
} catch (JposException e) {
e.printStackTrace();
}
}
}
});
}
catch (Exception e) {
System.err.println("error");
}
%>
我配置了扫描仪,它已成功打开,当我扫描代码时,它已打印到控制台,但现在我想在JSP中提交的文本框中显示扫描的代码,但我不知道知道如何,任何想法
答案 0 :(得分:0)
替换
System.out.println(new String(scanner.getScanData()));
通过
request.setAttribute("scanData", new String(scanner.getScanData()));
以便您可以稍后在同一个JSP中执行
<input type="text" value="${fn:escapeXml(scanData)}" />
或者,如果您不知道如何使用JSTL / EL,或者由于某些不明原因而无法使用它(尽管它们是官方推荐的JSP编写方式十年以来),使用
String scanData = new String(scanner.getScanData());
和
<input type="text" value="<%= scanData %>" />
(请注意,scriptlet没有内置的HTML转义功能,在防止潜在的XSS攻击漏洞时会考虑到这一点)
无关,所有Java代码设计在技术上都属于servlet类,而不是JSP文件。
答案 1 :(得分:0)
您需要使用ajax并让客户端发送扫描到您的服务器的任何新条形码的请求,然后返回带有最新条形码的json对象。查看jquery.ajax以了解客户端数据处理。