首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Servlets和HTML

使用Servlets和HTML
EN

Stack Overflow用户
提问于 2010-01-08 04:55:08
回答 4查看 2K关注 0票数 1

我对servlet的使用有疑问。

在我正在构建的应用程序中,我使用Html页面向用户询问信息。

想象一下,一个允许用户请求在屏幕上查看数据库内容的Html页面。我要做的是:

1.-从Html页面调用一个servlet,它将打开一个与数据库的连接。2.- servlet构建用户将看到的网页。

我的问题是:有没有其他方法可以做到这一点?我是否必须在servlet中构建web页面,或者是否可以将数据库中包含的信息发送到将构建web页面的.html文件中(在我的示例中,我需要在屏幕上显示一个包含所有信息的表格)?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-08 04:58:54

最终,浏览器必须向服务器发送请求以获取数据库信息。您可以通过多种方式完成此操作:

XML在servlet中构建整个页面(可能是simplest)

  • build ),然后浏览器将其呈现为(通过XSL等)。如果您希望浏览器控制格式并对包含AJAX请求的页面执行presentation.
  1. build操作以返回到服务器并获取数据,那么这可能是合适的。这可能更适合定期更新的数据或更具交互性的应用程序。

有很多方法可以剥这只猫的皮。我怀疑你做的是最简单的一个,这很好。如果没有明确的要求,我会倾向于这样做,这意味着我需要做一些其他的事情。使问题复杂化的进一步要求可能包括如果屏幕上容纳的数据太多,则对数据进行分页。上面的所有解决方案都可以以某种方式结合这一点。

票数 1
EN

Stack Overflow用户

发布于 2010-01-08 05:11:01

Servlet的目的是控制、预处理和/或后处理请求,而不是呈现数据。JSP是一种视图技术,提供了编写HTML/CSS/JS的模板。您可以借助JSTL等标记库控制页面流,并使用EL访问任何限定了作用域的属性。

首先创建一个SearchServlet并将其映射到/searchurl-pattern上,然后实现doGet()doPost(),如下所示:

代码语言:javascript
复制
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Preprocess request here and finally send request to JSP for display.
    request.getRequestDispatcher("/WEB-INF/search.jsp").forward(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Postprocess request here. Get results from your DAO and store in request scope.
    String search = request.getParameter("search");
    List<Result> results = searchDAO.find(search);
    request.setAttribute("results", results);
    request.getRequestDispatcher("/WEB-INF/search.jsp").forward(request, response);
}

下面是JAR的外观,它使用JSTL (只需在/WEB-INF/lib中放入/WEB-INF/search.jsp )来控制页面流。

代码语言:javascript
复制
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

...

    <form action="search" method="post">
        <input type="text" name="search">
        <input type="submit" value="search">
    </form>

    <c:if test="${not empty results}">
        <p>There are ${fn:length(results)} results.</p>
        <table>
            <c:forEach items="${results}" var="result">
                <tr>
                    <td>${result.id}</td>
                    <td>${result.name}</td>
                    <td>${result.value}</td>
                </tr>
            </c:forEach>
        </table>
    </c:if>

请注意,将JSP放在/WEB-INF中是为了防止用户通过URL直接访问。为此,http://example.com/contextname/search强制他们使用servlet。

要了解有关JSP/Servlets的更多信息,我可以推荐Marty Hall's Coreservlets.com tutorials。要了解更多关于searchDAO背后的逻辑,我可以推荐这个basic DAO tutorial

更进一步,你可以考虑使用建立在Servlet API之上的MVC框架,比如Sun JSFApache StrutsSpring MVC等等,这样你基本上只能得到Javabeans和JSP/XHTML文件。一般的MVC框架会负责收集请求参数、验证/转换它们、用这些值更新Javabeans、调用一些Javabean动作方法来处理它们等等。这使得servlet变得“多余”(然而,它仍然被用作框架的核心处理器)。

票数 4
EN

Stack Overflow用户

发布于 2010-01-08 04:59:40

除了Servlet之外,Java还有JSP页面,这些页面混合了HTML和自定义标记(包括Java Standard Tag Library或JSTL),最终被编译成Servlet。

还有其他制作web应用程序的技术,包括Java Server Faces (JSF)、Apache StrutsSpring等。特别是Spring在现代web应用程序开发中被广泛使用。

最终,就像布莱恩·阿格纽说的那样……您必须在浏览器和服务器之间来回通信。这些只是促进这一点的各种技术。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2023596

复制
相关文章

相似问题

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