在我使用JSP servlet开发一个简单的Web应用程序之前几周。通过各种网站阅读后,了解到在jsp [view]中应该完全避免使用Scriptlet。
因此,我正在尝试转换为JSTL。在web.xml
中设置其上下文可用的SQL数据源时。事情没有用。另外,如何避免在JSTL代码中明确提及db用户凭据。如果有任何最佳方式,请分享。在此先感谢
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<sql:setDataSource
var="datasource"
driver="com.mysql.jdbc.Driver"
url=${initParam['dbURL']
user=${initParam['dbUser']}
pass=${initParam['dbPass']}/>
<context-param>
<param-name>dbUser</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>dbPassword</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>dbURL</param-name>
<param-value>jdbc:mysql://xxx.xxx.xxx:3306/client_db</param-value>
</context-param>
<context-param>
<param-name>log4j-config</param-name>
<param-value>WEB-INF/log4j.xml</param-value>
</context-param>
<error-page>
<error-code>404</error-code>
<location>/AppErrorHandler</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/AppErrorHandler</location>
</error-page>
<filter>
<filter-name>AuthenticationFilter</filter-name>
<filter-class>com.schoolmanager.servlet.filters.AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
答案 0 :(得分:1)
你是对的,在JSP页面中存储db参数真的不是一个好主意。官方Java EE文档也批准它:
用于访问表7-7中列出的数据库的JSTL SQL标记是 专为快速原型设计和简单应用而设计。用于生产 应用程序,数据库操作通常封装在 JavaBeans组件。
将连接参数存储在xml或Java文件中并在纯Java中执行所有数据库特定操作的一般想法。要获得此概念,请检查example。