在页面加载时从 JSP 文件调用 servlet

2024-04-18

我可以在不使用 HTML 表单的情况下从 JSP 文件调用 servlet 吗?

例如,在页面加载期间在 HTML 表中显示数据库的结果。


您可以使用doGet() http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServlet.html#doGet%28javax.servlet.http.HttpServletRequest,%20javax.servlet.http.HttpServletResponse%29Servlet 的方法预处理请求并将请求转发到 JSP。然后只需在链接和浏览器地址栏中指向 servlet URL 而不是 JSP URL。

E.g.

@WebServlet("/products")
public class ProductsServlet extends HttpServlet {

    @EJB
    private ProductService productService;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Product> products = productService.list();
        request.setAttribute("products", products);
        request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response);
    }

}
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<table>
    <c:forEach items="${products}" var="product">
        <tr>
            <td>${product.name}</td>
            <td>${product.description}</td>
            <td>${product.price}</td>
        </tr>
    </c:forEach>
</table>

注意JSP文件放在里面/WEB-INF文件夹以防止用户在不调用 servlet 的情况下直接访问它。

另请注意@WebServlet仅自 Servlet 3.0(Tomcat 7 等)起可用,另请参阅Tomcat 7 的 @WebServlet 注释 https://stackoverflow.com/questions/6535676/webservlet-annotation-with-tomcat-7。如果您无法升级,或者由于某种原因需要使用web.xml它与 Servlet 3.0 不兼容,那么您需要以老式方式手动注册 servletweb.xml如下而不是使用注释:

<servlet>
    <servlet-name>productsServlet</servlet-name>
    <servlet-class>com.example.ProductsServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>productsServlet</servlet-name>
    <url-pattern>/products</url-pattern>
</servlet-mapping>

通过注释或 XML 正确注册 servlet 后,现在您可以通过 http://localhost:8080/context/products 打开它,其中/context是 web 应用程序的部署上下文路径/products是 servlet 的 URL 模式。如果您碰巧有任何 HTML<form>在其中,然后让它像这样 POST 到当前 URL<form method="post">并添加一个doPost() http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServlet.html#doPost%28javax.servlet.http.HttpServletRequest,%20javax.servlet.http.HttpServletResponse%29到同一个 servlet 来执行后处理作业。继续以下链接以获取更多具体示例。

See also

  • 我们的 Servlet wiki 页面 https://stackoverflow.com/tags/servlets/info
  • Servlet 中的 doGet 和 doPost https://stackoverflow.com/questions/2349633/doget-and-dopost-in-servlets
  • 如何避免在 JSP 中使用 Java 代码 https://stackoverflow.com/questions/3177733/howto-avoid-java-code-in-jsp-files
  • Servlet 返回“HTTP 状态 404 请求的资源 (/servlet) 不可用” https://stackoverflow.com/questions/11731377/servlet-returns-http-status-404-the-requested-resource-servlet-is-not-availa
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在页面加载时从 JSP 文件调用 servlet 的相关文章

  • Java 类查找工具

    任何经常使用 Java 的人都知道类路径中的多个 jar 会给我们带来多少麻烦 我正在寻找一个可以帮助我的工具 在 jar 中搜索类文件类路径 在 jar 中搜索类文件具体位置 也许要求太多 但请告诉我同一个类是否存在于多个罐子中 不用说它
  • 我可以在 Java 枚举上使用构建器模式吗

    我正在重写一些代码 并且我已经决定了重新创建类的方法 因为有固定数量的工作表 我将它们创建为枚举 这是基于构建器模式与伸缩构造器的可读性的决定 我的代码获取一些 xls 文件 添加标题 并从其他 xls 文件中读取一些 也许还有一些子表 然
  • 将 allMatch、noneMatch 和 anyMatch 合并到单个流上

    我想要以下逻辑 我知道它不起作用 因为它多次消耗流 但我不知道如何实现它 Stream
  • selenium 2.0 中的 isElementPresent

    大家好 我正在使用 webdriver 所以如果我想使用 selenium s rc 函数 isElementPresent 我必须模拟 selenium rc 所以我会执行以下操作 import org openqa selenium B
  • 使用起始字符串和结束字符串从长字符串中提取子字符串?

    我有这个长字符串 它是一个长的连续字符串 Home address H NO 12 SECTOR 12 GAUTAM BUDH NAGAR NOIDA 121212 UTTAR PRADESH INDIA 911112121212 Last
  • 如何访问EmbeddedSolrServer实例的管理界面?

    在我的网络应用程序中 我正在运行org apache solr client solrj embedded EmbeddedSolrServer出于调试目的 我想访问管理界面 这就是我实例化服务器的方式 new EmbeddedSolrSe
  • 在 Spring Webflux 中执行阻塞 JDBC 调用

    我使用 Spring Webflux 和 Spring data jpa 使用 PostgreSql 作为后端数据库 我不想在进行数据库调用时阻塞主线程 例如find and save 为了实现同样的目标 我有一个主调度程序Controll
  • JSF-2 应用程序中的服务器端计时器

    在我正在开发的 JSF 2 应用程序中 当用户执行操作时 我需要启动服务器端计时器 这个计时器必须与应用程序本身相关 因此它必须在用户会话关闭时继续存在 为了解决这个问题 我想使用 java util Timer 类在应用程序范围的 bea
  • Java:将二维字符串数组打印为右对齐表格

    是什么best打印a的单元格的方法String 数组作为右对齐表 例如 输入 x xxx yyy y zz zz 应该产生输出 x xxx yyy y zz zz 这似乎是一个should能够完成使用java util Formatter
  • Java 套接字 - 读和写

    问题 客户端没有收到任何消息 这是客户端和服务器的完整代码 CLIENT public class Client extends Socket public Client String hostName int port throws Un
  • SwingUtilities.invokeLater

    我的问题与SwingUtilities invokeLater 我应该什么时候使用它 每次需要更新 GUI 组件时都必须使用吗 它到底有什么作用 是否有替代方案 因为它听起来不直观并且添加了看似不必要的代码 Do I have to use
  • 在实现接口的类上强制使用单例模式

    我最好用一个例子来解释这个问题 我有一个接口模型可用于访问数据 模型可以有不同的实现 可以以各种格式表示数据 例如 XMl txt 格式等 Model不关心格式 可以说这样的一个实现是myxml模型 现在我想强迫myxml模型以及其他所有实
  • @Transactional 注解属于哪里?

    如果您将 Transactional in the DAO类和 或其方法 或者注释使用 DAO 对象调用的服务类是否更好 或者注释两个 层 是否有意义 我认为事务属于服务层 它是了解工作单元和用例的人 如果您将多个 DAO 注入到需要在单个
  • Netty Nio java 中的通信

    我想在 Netty nio 中创建一个具有两个客户端和一个服务器的通信系统 更具体地说 首先 我希望当两个客户端与服务器连接时从服务器发送消息 然后能够在两个客户端之间交换数据 我正在使用本示例提供的代码 https github com
  • Tomcat下的Spring CXF Soap Web服务:找不到服务

    我正在尝试使用 CXF 和 Spring 设置一个在 Tomcat 上运行的简单 CXF Web 服务 我有一个 Web 应用程序初始化程序来引导 CXF servlet public class WebAppInitializer ext
  • Java/Hibernate - 异常:内部连接池已达到其最大大小,当前没有可用的连接

    我第一次在大学项目中使用 Hibernate 而且我还是个新手 我想我遵循了我的教授和我阅读的一些教程给出的所有指示 但我不断收到标题中的异常 Exception in thread main org hibernate Hibernate
  • 有没有办法删除 JShell 中的导入?

    我正在发现 JShell 并且发现默认添加的导入 jshell gt imports import java io import java math import java net import java nio file import j
  • 图标和导航视图之间的左边距

    我必须在图标和图标之间添加左边距NavigationView 如下图中箭头所示 我知道根据谷歌规范 这个边距必须有16dp但我需要改变它 我努力了
  • 可空日期列合并问题

    我在 Geronimo 应用程序服务器上使用 JPA 和下面的 openjpa 实现 我也在使用MySQL数据库 我在更新具有可为空 Date 属性的对象时遇到问题 当我尝试合并 Date 属性设置为 null 的实体时 不会生成 sql
  • Java环境变量设置方法

    我已将以下行插入 bash profile export GOOGLE APPLICATION CREDENTIALS Users jun Downloads export PATH PATH GOOGLE APPLICATION CRED

随机推荐

  • NHibernate.Exceptions.GenericADOException:无法执行查询

    我有一个遗留应用程序 vfp 8 我需要从中提取数据 无插入 我使用 Accnum 字段作为主键 它在表中定义为字符 11 出厂配置
  • 如何检查 Google VM 实例是否已具有 gcloud 凭据

    为了不每次都打电话 gcloud auth login 这会中断用户输入的脚本 我想查看用户是否已经通过身份验证 任何用户 并且只有在没有用户的情况下 才调用gcloud auth login 我想要一个比抓取输出更优雅 可靠的解决方案gc
  • 为什么 ActionScript 中没有记录 drawRoundRectComplex() ?

    在研究actionscript 3的图形类时 我遇到了未记录的drawRoundRectComplex 方法 它是一个变种drawRoundRect 但有 8 个参数 最后四个是每个角的直径 x y 宽度 高度 左上 右上 左下 右下 ex
  • 将集合添加到列表框

    我正在尝试让用户能够添加name and ingredient到列表框 下面简单介绍一下相关类 RecipeForm是形式 RecipeManager是一个集合管理器类Recipe Recipe是 内容 类 其中字段name and ing
  • ggplot2 - 具有堆栈和闪避的条形图

    我正在尝试使用创建条形图ggplot2我通过一个变量进行堆叠并通过另一个变量进行躲避 这是一个示例数据集 df data frame year rep c 2010 2011 each 4 treatment rep c Impact Co
  • Linux (Fedora 13) 与 OS X 中的 sigwait

    因此 我尝试使用 pthreads 创建一个可在 OS X 和 Linux 上运行的信号处理程序 下面的代码适用于 OS X 但不适用于 Fedora 13 该应用程序相当简单 它生成一个 pthread 注册 SIGHUP 并等待信号 生
  • 好的斯坦福 Javascript 加密库 (SJCL) 示例? (JS密码学)[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种在 Javascript 中进行客户端加密的方法 保持http www matasano
  • 3D 图形矩阵 4x4 中最后一行的 magic 4 的用途是什么?

    当我阅读有关WebGL的书时 我看到了下一个矩阵描述 有关于书中最后一行的信息 WebGL 初学者指南 初学者指南 Diego Cantor Brandon Jones 神秘的第四排 第四排没有任何特殊之处 意义 元素 m4 m8 m12
  • 丰富域模型与贫乏域模型[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在决定是否应该使用丰富域模型而不是贫乏域模型 并寻找两者的好例子 我一直在使用贫血领域模型构建 Web 应用程序 并由服务 gt 存储库 g
  • 我的服务应该返回什么接口? IQueryable、IList、IEnumerable?

    想象一下 我有一个 SearchService 层 它有一个方法来搜索以某个字符串开头的所有汽车 public static class Searcher public IAnInterface
  • 如何在 Safari 上提供 ES6 模块?

    我有一个关于 Safari 中 ES6 模块使用的问题 这让我抓狂 因为它阻止我与 Safari 用户共享我的网站 我的网络应用程序和即将推出的 MWE工作得很好在以下环境中 Windows Chrome Edge 和 Firefox 均通
  • 适用于 Objective C iPhone 的 XMLStreamReader?

    我在用XML编写器 http code google com p xswi 用于生成 xml 现在我想用一些阅读器库 框架来阅读这个 xml 是否有任何可用的补充框架 库 我目前正在寻找使用 TouchXML 库来读取此内容 但它无法按预期
  • “mov offset(%rip),%rax”有什么作用?

    Does rax获取偏移量加上这条指令的地址 还是下一条指令的地址 从微代码的角度来看 如果答案是下一条指令可能会更容易 下一个 这是 x86 上的一般规则 另请参阅分支 在 Intel 手册第 2 卷第 2 2 1 6 RIP 相对寻址部
  • Sprite Kit 物理碰撞问题

    我遇到了一些碰撞问题 我有两个大小和质量相同的物体 当一个物体与另一个静止物体碰撞时 我会得到正确的行为 图像中的灰色区域 当我有两个彼此相邻的对象时 行为不太正确 Spritekit 结果在左侧 右侧是预期 需要的结果 我想我知道发生了什
  • 两个字段的 sqlalchemy 验证器

    SQLAlchemy 文档解释了如何使用 validates 装饰器向模型添加验证 from sqlalchemy orm import validates class EmailAddress Base tablename address
  • Vagrant:* 未知的配置部分“disksize”

    在我的机器上配置 Vagrant 环境期间 我收到了以下消息 流浪汉 未知的配置部分 disksize 它是在插件安装后显示的 这里是vagrantfile mode ruby vi set ft ruby All Vagrant conf
  • 如何调试SocketTimeoutException?

    我们正在得到一个java net SocketTimeoutException当客户端 A 连接到服务器 B 时 在服务器 B 上 不知道为什么 客户端正在向服务器发送数据 然后服务器抛出此异常 如何解决这个问题 请注意 目前这种情况只发生
  • 在特定单元格之后停止执行 Databricks 笔记本

    我在 Databricks 笔记本上尝试了 sys exit 0 Python 代码 和 dbutils notebook exit 但这两个选项都不起作用 请建议任何其他方法来停止 Databricks 笔记本中特定单元格之后的代码执行
  • 有什么方法(或快捷方式)可以像在 Eclipse 中一样自动导入 IntelliJ IDEA 中的类吗?

    In Eclipse while coding in Java and press Ctrl Shift O auto import all the Classes automatically In NetBeans this is don
  • 在页面加载时从 JSP 文件调用 servlet

    我可以在不使用 HTML 表单的情况下从 JSP 文件调用 servlet 吗 例如 在页面加载期间在 HTML 表中显示数据库的结果 您可以使用doGet http docs oracle com javaee 7 api javax s