java - 避免在 servlet 中使用 html

标签 java html ajax jsp servlets

我在一个 jsp 页面上,正在对 servlet 进行 ajax 调用,而该 servlet 则提供要在页面上显示的完整 html 代码。它工作正常,但在 servlet 文件中看起来很困惑,有多个 printWriter.write(...) 行,其中包含 html 代码。它变得很难维护,因为我必须通过 servlet 创建大型 html 代码。还有其他正确/更好的方法吗?我在 servlet 中结合了编写 html 行和逻辑,很难将它们分开。

jsp页面中的ajax调用:

$.ajax({
    type: 'POST',
    url: 'myServlet',
    data: requestData,
    dataType: "text",
}).done(function(responseData) {
    $(divId).html(responseData);
});

servlet 类的一些代码:

.....
String username = user.getName();
if (username != null && !username.trim().isEmpty())
    username = username.substring(0, username.indexOf(" "));
else
    username = "";
printWriter.write("<span id=\"username_"+i+"\" style=\"display: none;\">"+ username +"</span>");
printWriter.write("<form action=\"\" method=\"post\" name=\"userClickForm_"+i +"\" id=\"userClickForm_"+i +"\">");
printWriter.write(" <input type=\"hidden\" name=\"userId\" value=\""+userId +"\"/>");
printWriter.write("</form>");
......

混合 html 代码和业务逻辑的主要原因是我必须根据条件和循环结构提供 div id。

最佳答案

您应该使用某种形式的模板或转换技术。由于您使用的是 jQuery 和 JSP,因此它可以是服务器端 JSP 或客户端 jQuery 模板插件。

早期的 JSP MVC 模式采用以下形式:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {
    // read inputs
    String foo = request.getParameter("foo");
    // perform business logic
    SomeResults results = new SomeDataSource().lookupDatabase(foo);
    // place results into scope
    request.setAttribute("results", results);
    // dispatch to JSP to render results
    request.getRequestDispatcher("result.jsp")
           .forward(request, response);
}

此方法可与 AJAX 调用一起使用。

或者,您可以使用 JSON 或 XML 数据进行响应,并在 JavaScript 中对其进行解析,然后使用 JavaScript 模板引擎执行类似于 JSP 中执行的逻辑的操作。

关于java - 避免在 servlet 中使用 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13965749/

相关文章:

javascript - 当用户将鼠标悬停在图像上时,如何向用户实时显示图像上的 (x,y) 坐标?

java - 从@OneToMany 关系中删除一个 child

html - 如何使用 ".cdk-overlay-pane"为 Angular Material 垫选择自定义或应用另一个类 |垫对话框

javascript - 在 Wordpress 中 Hook AJAX

javascript - 为什么这个 AJAX 请求总是失败?

javascript - 通过 HTML 中的 onClick 将变量传递给外部 js 文件

SwingWorker 线程中的 java.util.Timer 或 While 循环?

java - 不共享任何外键关系的 JPA 实体之间的 @OneToOne 关系

java - 将 JDK9 平台添加到 Netbeans 时没有类

html - 本地主机 View 和实时版本中的不同网页外观