【问题标题】:How make a servlet print in html?如何在 html 中打印 servlet?
【发布时间】:2017-01-28 10:26:24
【问题描述】:

我有一个jsp页面,index,代码如下:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="alteraSala.js"></script>
<div id="conteudo">
    <select id="sala">
        ...
    </select>
    <div id="resultado"></div>
</div>

我的 servlet 类似于:

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/hello")
public class Hello extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

        response.setContentType("text/plain");
        response.setCharacterEncoding("UTF-8");

        PrintWriter out = response.getWriter();  
        out.println("<b>HELLO</b>");
    }
}

我还有一个 AJAX 文件:

$(document).ready(function () {
    $('#sala').change(function (event) {
        var name = $('#sala').val();
        $.get('../EditarSala', {
            sala: name
        }, function (responseText) {
            $('#resultado').text(responseText);
        });
    });
});

问题是页面的输出不是: 你好 它的: 你好

编辑:

改变:

response.setContentType("text/plain");

到:

response.setContentType("text/html");

还是不行

编辑 2:

由于某种原因,当我从以下位置更改 AJAX 文件时:

$('#resultado').text(responseText);

到:

$('#resultado').append(responseText);

它可以正确显示文本,但我不能使用 append。

【问题讨论】:

  • 尝试设置 response.setContentType("text/plain");到 response.setContentType("text/html");
  • @YogeshKumarGupta 感谢您的帮助!我确实改变了,但没有用。
  • 我看不出有什么不工作的原因..cn你查看你的html页面的源代码并粘贴到这里?
  • @YogeshKumarGupta 你是什么意思?
  • 我在本地机器上试过你的例子,我可以看到改变 contentType 已经解决了这个问题。

标签: java jquery ajax jsp servlets


【解决方案1】:

我认为您必须使用$.ajax()$.post(),因为您也在发送数据。

另外你的错误是使用 html() 而不是 jquery 的 text() 方法。因为 html() 方法设置或返回所选元素的内容(innerHTML)。但 text() 方法设置或返回唯一的文本所选元素的内容。

$(document).ready(function () {
    $('#sala').change(function (event) {
        var name = $('#sala').val();
        $.post('../EditarSala', {
            sala: name
        }, function (responseText) {
            $('#resultado').html(responseText);
        });
    });
});

【讨论】:

  • $('#resultado').html(responseText);替换$('#resultado').text(responseText);
【解决方案2】:

response.setContentType("text/plain"); 更改为response.setContentType("text/html");

【讨论】:

  • 更改servlet后是否重启了服务器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
相关资源
最近更新 更多