Servlets 在JSP中使用JSTL标记设置Sql数据源

Servlets 在JSP中使用JSTL标记设置Sql数据源,servlets,jstl,web-application-project,Servlets,Jstl,Web Application Project,几周前,我使用JSP servlet开发了一个简单的web应用程序。在阅读了各种站点之后,我知道在jsp[view]中应该完全避免使用Scriptlet 因此,我试图转换为JSTL。设置其上下文在web.xml中可用的SQL数据源时。事情没有成功。此外,我如何避免在JSTL代码中明确提到db用户凭据。如果有最好的方式,请分享。提前谢谢 JSTL连接MySQL Web.xml 数据库用户 根 数据库密码 根 dbURL jdbc:mysql://xxx.xxx.xxx:3306/client

几周前,我使用JSP servlet开发了一个简单的web应用程序。在阅读了各种站点之后,我知道在jsp[view]中应该完全避免使用Scriptlet

因此,我试图转换为JSTL。设置其上下文在
web.xml
中可用的SQL数据源时。事情没有成功。此外,我如何避免在JSTL代码中明确提到db用户凭据。如果有最好的方式,请分享。提前谢谢

JSTL连接MySQL

Web.xml

数据库用户
根
数据库密码
根
dbURL
jdbc:mysql://xxx.xxx.xxx:3306/client_db
log4j配置
WEB-INF/log4j.xml
404
/阿佩罗汉德勒
java.lang.Throwable
/阿佩罗汉德勒
身份验证过滤器
com.schoolmanager.servlet.filters.AuthenticationFilter
身份验证过滤器
/*
30

您是对的,在JSP页面中存储db参数确实不是一个好主意。另外,官方Java EE文档也批准了它:

表7-7中列出的用于访问数据库的JSTL SQL标记如下 专为快速原型和简单应用而设计。用于生产 应用程序、数据库操作通常封装在 JavaBeans组件

将连接参数存储在xml或Java文件中,并用普通Java执行所有特定于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>