0

我使用以下代码从 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 中的文本框中显示扫描的代码,但我不知道如何, 任何想法

4

2 回答 2

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 文件。

于 2012-11-30T16:02:06.877 回答
0

您需要使用 ajax 并让客户端向您的服务器发送扫描任何新条形码的请求,然后返回一个带有最新条形码的 json 对象。查看jquery.ajax进行客户端数据处理。

于 2012-11-30T16:03:29.080 回答