首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免在servlet中使用html

避免在servlet中使用html
EN

Stack Overflow用户
提问于 2012-12-20 13:15:06
回答 4查看 763关注 0票数 0

我在一个jsp页面上,我正在对一个servlet进行ajax调用,该servlet提供了完整的html代码以显示在页面上。它工作得很好,但在servlet文件中有多行包含html代码的printWriter.write(...)代码,看起来很混乱。它变得很难维护,因为我必须通过servlet创建大量的html代码。有没有其他合适/更好的方法来做到这一点?我在servlet中混合了编写html行和逻辑,很难将它们分开。

jsp页面中的ajax调用:

代码语言:javascript
复制
$.ajax({
    type: 'POST',
    url: 'myServlet',
    data: requestData,
    dataType: "text",
}).done(function(responseData) {
    $(divId).html(responseData);
});

servlet类中的一些代码:

代码语言:javascript
复制
.....
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。

EN

回答 4

Stack Overflow用户

发布于 2012-12-20 17:43:24

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

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

代码语言:javascript
复制
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中执行的逻辑的操作。

票数 2
EN

Stack Overflow用户

发布于 2012-12-20 13:18:10

你可以通过使用像STRUTS或SPRING这样的MVC框架来避免这种情况。

票数 1
EN

Stack Overflow用户

发布于 2012-12-20 15:05:57

在servlet上使用xml而不是html,在jsp上使用jquery的ajax调用的成功属性...在我的例子中,它是有效的,但我使用了type作为'GET‘。

代码语言:javascript
复制
  $.ajax({
            url: ,
            data: ,
            type: ,
            dataType: 'xml',
            async: true,
            success:function(xmlDoc) 
            {   
                var message = xmlDoc.getElementsByTagName("message");
                message = message[0].firstChild.data;

            }
    });

在Servlet中使用::

代码语言:javascript
复制
         res.getWriter().write("<response><message>abcdefg</message></response>");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13965749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档