当前位置: 首页 > 面试题库 >

其他阻碍的状态

季博
2023-03-14
问题内容

我一直在使用JSTL从数据库中获取值,并使用如下所示的类似代码将其显示在jsp页面中。

<sql:setDataSource
var="myDS"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb"
user="root" password="secret"
/>

<sql:query var="list_users" dataSource="${myDS}">
SELECT * FROM users;
</sql:query>

<c:forEach var="user" items="${listUsers.rows}">

<c:out value="${user.name}" />

<c:out value="${user.email}" />

<c:out value="${user.profession}" />

</c:forEach>

我的团队负责人建议我,将查询直接放入jsp页面不是一个好习惯。由于此代码中包含数据库名称,用户名和密码,因此我不确定该代码是否实现了适当的安全性。我想知道您对此事的想法,以及是否有其他选择可以使用JSTL本身来完成。


问题答案:

由于JSTL是在服务器端执行的,因此没有安全漏洞,因为该查询无法被应用程序的客户端看到。这种方法还有其他问题:

该查询不可重用。如果在其他页面中需要它,则需要重复查询。当您遇到像这样的简单查询时,您无法检查问题,但这是由于更复杂的语句也需要参数而引起的。
您正在按页面手动创建连接!这会使您的应用程序变慢。对配置为资源或以编程方式(例如,C3PO或BoneCP)的数据库连接池使用正确的数据源
将所有数据库代码移到正确的数据访问层类中。并且 仅用于学习目的,而不用于实际应用。



 类似资料:
  • 问题内容: 以下代码将永远运行,而不是在开始后一秒钟停止。带有无限循环的go例程似乎阻止了另一个例程发送到超时通道。那正常吗? 问题答案: 简短的回答:是的。 当前的实现在goroutines之间使用协作调度。这意味着goroutine必须将执行移交给调度程序,以便另一个goroutine运行。将来有希望使用不会有此限制的抢占式调度程序。 发生以下任何一种情况(可能不是完整的列表)时,Gorout

  • 假设我们有: 线程1,包含actor A、B和C。 包含执行元y的线程2。 包含演员Z的线程3。 演员A和B正在监听演员Y的消息。 然后,参与者C向参与者Z发出阻塞请求。 我包含了Actor Y,以允许它在Z处理来自C的请求时发送消息。 所有线程都在不同的物理核心上--它们并行运行。

  • 问题内容: 这是我的红宝石代码: 谁能告诉我,为什么最后一行的“发布”指令阻止了我的进程? 谢谢 问题答案: 似乎在整个过程中都阻止了Redis访问。因此,当您尝试发布锁时。 解决方案:尝试使用轮询代替 解决方案2:使用多个REDIS连接,即创建REDIS连接池

  • 我的问题是,chart js根据数据集上定义的顺序呈现条形图。如下所示,数组索引0处的值为和。由于首先通过了2500,这将阻止1000值的条形图。 https://jsfiddle.net/6bjy9nxh/352/

  • 我正在使用javafx创建一个扫雷克隆,如果有人玩过原始游戏,他们可能会记得当你按下一个磁贴并四处移动时,其他磁贴的行为就好像它们也在被按下一样...如果你放手-即使你最初按下的是一个完全不同的节点,你鼠标当前所在的节点也会被点击。我很难重新创建这个,我需要一些帮助。 我正在使用全局事件处理程序类,我不太确定这是好是坏......但是,让我的克隆的事件单独处理感觉很好。我尝试过在事件发生的节点上使