gpt4 book ai didi

jsp - 让多个链接转到同一页面,但执行不同的功能。

转载 作者:行者123 更新时间:2023-12-02 08:59:54 25 4
gpt4 key购买 nike

有没有办法让多个链接转到一个空白页面,但每个不同的链接都在页面上显示一个单独的查询,而不是让单独的页面来执行此操作?还是我要求太多了?我正在使用 JSP 页面执行此操作。任何帮助将不胜感激。

谢谢。

最佳答案

那里是 Servlet 的用途。您可以利用它来高度控制、预处理和后处理请求。您可以使用查询字符串将请求特定信息传递给 servlet,例如http://example.com/context/servlet?name1=value1&name2=value2,在Servlet中可以访问如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name1 = request.getParameter("name1"); // Now contains "value1".
String name2 = request.getParameter("name2"); // Now contains "value2".
// Do your business thing with them.
}

您还可以使用请求路径信息将请求特定信息传递给 servlet,这会产生更好的 URL,例如http://example.com/context/servlet/value1/value2,在Servlet中可以访问如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pathInfo = request.getPathInfo(); // Now contains "/value1/value2".
// Do your business thing with them.
}

在这两种情况下,Servlet 当然都映射到 web.xml 中,如下所示:

<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>com.example.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

要在 JSP 中显示结果,您需要将数据存储在请求范围中并将请求转发到 JSP 以进行显示。例如:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String query = request.getParameter("query");
List<Result> results = searchDAO.list(query);
request.setAttribute("results", results);
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
}

这里的 Result 类只是一个普通的 JavaBean 类,大致代表数据库表的一行。 JSP 放置在/WEB-INF 中以防止通过URL 直接 访问。您当然希望只有 servlet 可以访问它。在 JSP 中,您可以依次使用 Expression Language访问任何作用域属性,例如上例中的 results。您还可以在 JSP 中使用标签库来控制页面流和输出。一个众所周知的标准标签库是 JSTL (只需将 jstl-1.2.jar 放入 /WEB-INF/lib 即可使其正常工作),这是一个如何在 JSP 中很好地显示结果的示例:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

...

<table>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
<c:forEach items="${results}" var="result">
<tr>
<td>${result.name}</td>
<td>${result.description}</td>
</tr>
</c:forEach>
</table>

要了解有关 JSP/Servlet 的更多信息,我可以推荐 Marty Hall's Coreservlets.com tutorials .要了解有关以正确方式(DAO 模式)与数据库交互的更多信息,您可能会发现 this article也很有用。

祝你好运。

关于jsp - 让多个链接转到同一页面,但执行不同的功能。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2083741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com