gpt4 book ai didi

postgresql - DSpace 如何在 jspui 中处理查询?

转载 作者:行者123 更新时间:2023-11-29 14:20:20 30 4
gpt4 key购买 nike

如何在 DSpace 中处理任何查询以及如何在前端和 PostgreSQL 之间管理数据

最佳答案

与在 Tomcat 等 Servlet 容器中运行的所有其他 Web 应用程序一样,文件 WEB-INF/web.xml 控制查询的处理方式。如果是 DSpace 的 JSPUI,您将在 [dspace-install]/webapps/jspui/WEB-INF/web.xml 中找到此文件。 JSPUI 定义了几个过滤器、监听器和 servlet 来处理请求。

过滤器用于报告 JSPUI 正在运行,受限区域可以被经过身份验证的用户甚至只有经过身份验证的管理员看到,并用于处理内容协商。

监听器确保 DSpace 已正确启动。在启动期间,DSpace 加载配置、打开它在连接池中使用的数据库连接、让 Spring 执行它的 IoC 魔法等等。

首先,要了解如何处理查询,最重要的部分是 servlet 和 servlet 映射。 servlet 映射定义了哪个 servlet 用于处理具有特定请求路径的请求:例如所有对 example.com/dspace-jspui/handle/* 的请求将由 org.dspace.app.webui.servlet.HandleServlet 处理,所有对 example.com/dspace-jspui/submit 的请求将由 org.dspace 处理。 app.webui.servlet.SubmissionController.

servlet 使用它们的 Java 代码 ;-) 和 DSpace Java API 来处理请求。您会在 dspace-api 模块中找到大部分内容(请参阅 [dspace-source]/dspace-api/src/main/java/...),在 dspace-services 模块中找到一小部分([dspace-source] dspace-services/src/main/java/...)。在 DSpace Java API 中,如果您对与数据库的通信感兴趣,它们是两个重要的类:

  • 一个是 org.dspace.core.Context。上下文包含用户是否登录以及哪个用户登录的信息、初始化和连接的数据库连接(如果一切顺利)和缓存。方法 Context.abort()、Context.commit() 和 Context.complete() 用于管理数据库事务。这就是为什么几乎所有操作数据库的方法都请求上下文作为方法参数的原因:它控制数据库连接和数据库事务。
  • 另一个是 org.dspace.storage.rdbms.DatabaseManager。 DatabaseManager 用于处理数据库查询、更新、删除等。所有的 DSpaceObjects 都包含一个对象 TableRow,其中包含存储在数据库中的对象的信息。在 DSpaceObject 类(例如 org.dspace.content.Item、org.dspace.content.Collection 等)中,可以使用 DatabaseManager.update(Context, DSpaceObject) 操作 TableRow 并将更改存储回数据库。 DatabaseManager 提供了几种方法来向数据库发送 SQL 查询,更新、删除、插入甚至在数据库中创建数据。只需查看其 API 或在 DSpace 源中查找“SELECT”即可获取示例。

在 JSPUI 中,如果您想提交数据库状态,使用 Context.commit() 很重要。如果请求已处理但未调用 Context.commit(),则事务将中止并且更改将丢失。如果您调用 Context.complete() 事务将被提交,数据库连接将被释放并且上下文被标记为已完成。在调用 Context.complete() 之后,上下文不能再用于数据库连接。

DSpace 是一个相当大的项目,他们可以写更多关于它的 ORM、数据库的初始化等等。但这应该已经可以帮助您开始为 DSpace 进行开发。我建议您阅读 DSpace 手册中的“体系结构”部分:https://wiki.duraspace.org/display/DSDOC5x/Architecture

如果您有更具体的问题,我们总是邀请您在 stackoverflow 或我们的邮件列表 (http://sourceforge.net/p/dspace/mailman/) 上询问他们 dspace-tech(有关 DSpace 的任何问题)和 dspace-devel(有关开发的问题D空间)。

关于postgresql - DSpace 如何在 jspui 中处理查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30168503/

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