从servlet获取数据到jsp页面

Nivedita

我基本上要做的是从用户那里读取一个ID,使用AJAX将其传递给Servlet,然后从数据库中获取相应的书名和课程,然后在相应的文本框中显示它们。AJAX对我来说就像火箭科学,我只是从一些基本的在线教程开始的。这是我编写的代码:

JSP代码:

<body>
Edit book details:</br>
Enter Book Id: <input type="text" id="tb1" onkeyup="get(this.value)"/></br>
Book name is: <input type="text" id="tb2"/></br>
Course is: <input type="text" id="tb3"/></br>
</body>

JS代码:

    <script>

    function get(str)
    {
        var xmlhttp=new XMLHttpRequest();
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
              document.getElementById("tb2").value=xmlhttp.responseText;
              document.getElementById("tb3").value=xmlhttp.responseText;
            }
          }
        xmlhttp.open("GET","Demo?q="+str,true);
        xmlhttp.send();

    }

    </script>

Servlet代码:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String str=request.getParameter("q");

        String book,course;
        try
        {
                Class.forName("com.mysql.jdbc.Driver");
                Connection con=DriverManager.getConnection(url,user,pass);
                PreparedStatement ps=con.prepareStatement("select  bname,course from product where pid=?");
                ps.setString(1,str);
                ResultSet rs=ps.executeQuery();
                if(rs.next())
                {
                    book=rs.getString(1);
                    course=rs.getString(2);
                }
                else
                {
                    book="";
                    course="";
                }
                response.getWriter().write(book);
                response.getWriter().write(course);

        }
        catch(Exception e)
        {

            e.printStackTrace();
        }

    }

问题是结果都显示在同一个文本框中(上部屏幕截图),我希望它像下部的一样。

是的,我知道问题是我在写 document.getElementById("tb2").value=xmlhttp.responseText; document.getElementById("tb3").value=xmlhttp.responseText;

这就是我要问的,如何responseText根据要求过滤屏幕截图

伊玛里·卡洛宁

看来您的实际问题是,您想在单个AJAX响应中传递两个字符串(书名和课程),但是您不知道如何在JavaScript代码中将它们分开。

如果是这样,答案是使用.split()method,例如:

// assumes that the strings are separated by line breaks ("\n")
var lines = xmlhttp.responseText.split("\n");
document.getElementById("tb2").value = lines[0];
document.getElementById("tb3").value = lines[1];

当然,要使其工作,在Servlet中,您需要确保两个字符串实际上由换行符隔开,或者通过"\n"在它们之间显式地编写a或使用来确保.writeln()您还需要确保所有字符串本身都不能包含换行符。对于您的数据,这似乎是有可能的,但是您仍然应该进行检查。

如果您希望从Servlet中传回更复杂的数据,则其标准格式为JSON在Servlet中,您可以使用JSON.simple之类的库将数据编码为JSON ,而在JavaScript中(至少在现代浏览器中),您可以使用内置的JSON解析器,例如:

// assumes that the response is JSON, e.g.:
// { book: "English", course: "6th standard" }
var data = JSON.parse( xmlhttp.responseText );
document.getElementById("tb2").value = data.book;
document.getElementById("tb3").value = data.course;

使用JSON的主要优点,除了能够传输更复杂的数据结构之外,还在于,如果您使用适当的JSON库生成它,则可以传递任意字符串,而不必担心它们是否包含换行符。


我还想提出一些建议。一个不是XMLHttpRequest直接使用,而是使用像jQuery这样的库,它提供了更方便的接口使用jQuery,您的整个客户端代码(假设服务器返回JSON)可以简化为:

$('#tb1').on( 'keyup', function () {
   $.ajax( {
      url: 'Demo',                 // URL of Servlet
      data: { q: this.value },     // parameters to Servlet
      dataType: 'json',            // type of data to expect back

      success: function ( data ) {
          $('#tb2').val( data.book );
          $('#tb3').val( data.course );
      }
   } );
} );

或者,如果您的服务器返回的纯文本带有换行符,例如:

$('#tb1').on( 'keyup', function () {
   $.ajax( {
      url: 'Demo',
      data: { q: this.value },
      dataType: 'text',

      success: function ( text ) {
          var lines = text.split( "\n" );
          $('#tb2').val( lines[0] );
          $('#tb3').val( lines[1] );
      }
   } );
} );

请注意,此代码keyup通过jQuery直接附加处理程序(因为这被认为是好的样式),因此您不需要onkeyup="get(this.value)"HTML中属性。它还可以修复原始代码中的许多错误,例如您忘记对q参数值进行URL编码的事实

我已经在meta.SE上提出的另一个建议是,您可能想花一些时间.split()在尝试运行之前(例如,编写Servlet以通过AJAX返回数据)学习走路(例如,如何使用和JSON)。为此,花几个小时编写有关Java和JavaScript的入门教程,可能比关于Stack Overflow的十几个问题更有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从JSP页面获取数据到servlet

来自分类Dev

如何从JSP页面获取数据到servlet

来自分类Dev

如何从jsp页面获取ID到servlet?

来自分类Dev

如何将数据从servlet获取到JSP页面?

来自分类Dev

如何使用ajax调用从servlet到jsp获取arraylist数据

来自分类Dev

从数据库获取最新数据到jsp页面

来自分类Dev

无法从servlet重定向到jsp页面

来自分类Dev

Servlet没有定向到JSP页面

来自分类Dev

如何通过使用ajax从servlet到jsp页面获取JSON响应

来自分类Dev

从HTML页面动态地将数据从JSP传递到Servlet

来自分类Dev

如何从jsp到servlet获取按钮的名称

来自分类Dev

我如何从 servlet 获取用户名到 jsp 页面以将其插入到数据库中我尝试使用 session.getAttribute 它不起作用这是我的代码

来自分类Dev

如何将参数从jsp页面传递到servlet?

来自分类Dev

显示表数据从mysql到jsp页面

来自分类Dev

使用jsp从动态表中获取数据到另一个页面

来自分类Dev

如何从servlet读取数据并将数据传递到JSP

来自分类Dev

将数据从TEXT文件加载到JSP Servlet页面

来自分类Dev

Servlet到JSP的问题

来自分类Dev

将数据从servlet传递到无格式的jsp?

来自分类Dev

在jsp页面上使用servlet表单而不重定向到servlet

来自分类Dev

在jsp页面上使用servlet表单,而无需重定向到servlet

来自分类Dev

如何根据我的代码从jsp页面获取Servlet页面中多个选中的单选按钮?

来自分类Dev

jsp/servlet 页面重定向

来自分类Dev

当单击按钮时,通过servlet从另一个jsp页面重定向到jsp页面?

来自分类Dev

从Java Bean获取数据以显示在JSP页面上

来自分类Dev

从Java Bean获取数据以显示在JSP页面上

来自分类Dev

如何从Struts 2中动态生成的JSP页面获取数据?

来自分类Dev

如何在页面上显示成功消息,从servlet重定向到jsp

来自分类Dev

如何将对象(定义到servlet中)放入会话中以将其用于JSP页面?

Related 相关文章

  1. 1

    如何从JSP页面获取数据到servlet

  2. 2

    如何从JSP页面获取数据到servlet

  3. 3

    如何从jsp页面获取ID到servlet?

  4. 4

    如何将数据从servlet获取到JSP页面?

  5. 5

    如何使用ajax调用从servlet到jsp获取arraylist数据

  6. 6

    从数据库获取最新数据到jsp页面

  7. 7

    无法从servlet重定向到jsp页面

  8. 8

    Servlet没有定向到JSP页面

  9. 9

    如何通过使用ajax从servlet到jsp页面获取JSON响应

  10. 10

    从HTML页面动态地将数据从JSP传递到Servlet

  11. 11

    如何从jsp到servlet获取按钮的名称

  12. 12

    我如何从 servlet 获取用户名到 jsp 页面以将其插入到数据库中我尝试使用 session.getAttribute 它不起作用这是我的代码

  13. 13

    如何将参数从jsp页面传递到servlet?

  14. 14

    显示表数据从mysql到jsp页面

  15. 15

    使用jsp从动态表中获取数据到另一个页面

  16. 16

    如何从servlet读取数据并将数据传递到JSP

  17. 17

    将数据从TEXT文件加载到JSP Servlet页面

  18. 18

    Servlet到JSP的问题

  19. 19

    将数据从servlet传递到无格式的jsp?

  20. 20

    在jsp页面上使用servlet表单而不重定向到servlet

  21. 21

    在jsp页面上使用servlet表单,而无需重定向到servlet

  22. 22

    如何根据我的代码从jsp页面获取Servlet页面中多个选中的单选按钮?

  23. 23

    jsp/servlet 页面重定向

  24. 24

    当单击按钮时,通过servlet从另一个jsp页面重定向到jsp页面?

  25. 25

    从Java Bean获取数据以显示在JSP页面上

  26. 26

    从Java Bean获取数据以显示在JSP页面上

  27. 27

    如何从Struts 2中动态生成的JSP页面获取数据?

  28. 28

    如何在页面上显示成功消息,从servlet重定向到jsp

  29. 29

    如何将对象(定义到servlet中)放入会话中以将其用于JSP页面?

热门标签

归档