JSP连接数据库异常Context.lookup分析

1.数据库连接访问方式

JSP里面链接数据库操作如下:

Context ctx = new InitialContext();
  DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/bookstore");
  Connection conn = ds.getConnection();

Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
   ResultSet rs = stmt.executeQuery("select * from guestbook order by gst_time desc");

2.异常详细信息

登录到JSP页面时,抛出异常如下:

type Exception report

message javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class ‘‘ for connect URL ‘jdbc:mysql://localhost:3306/bookstore?autoReconnect=true‘

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class ‘‘ for connect URL ‘jdbc:mysql://localhost:3306/bookstore?autoReconnect=true‘
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:502)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:412)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

3.通过异常信息,定位问题通过查看异常信息,发现 driver class为空,说明driver class配置不对查看server.xml文件,配置如下:  <Context path="/ch12" docBase="I:\Develop\Code\Chapter12" reloadable="true">   <Resource name="jdbc/bookstore" auth="Container" type="javax.sql.DataSource"    maxActive="100" maxIdle="30" maxWait="10000"    username="root" password="root"    dirverClassName="com.mysql.jdbc.Driver"    url="jdbc:mysql://localhost:3306/bookstore?autoReconnect=true" />  </Context>通过观察发现,原本应该是“driverClassName”却误写成"dirverClassName"将修正driverClassName之后,重启Tomcat,JSP网页访问正常

4.Context.lookup参数说明  DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/bookstore");说明:java:comp/env 是固定参数    jdbc/bookstore 对应两个地方:一个是:server.xml中的Resource  name另一个:web.xml中的resource-ref  res-ref-name

详细配置:server.xml(见上面第3步的异常定位)  <Context path="/ch12" docBase="I:\Develop\Code\Chapter12" reloadable="true">   <Resource name="jdbc/bookstore" auth="Container" type="javax.sql.DataSource"    maxActive="100" maxIdle="30" maxWait="10000"    username="root" password="root"    dirverClassName="com.mysql.jdbc.Driver"    url="jdbc:mysql://localhost:3306/bookstore?autoReconnect=true" />  </Context>

详细配置:web.xml

<resource-ref>

<description>Mysql JDBC DataSource</description>

<res-ref-name>jdbc/bookstore</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

程序可以换成:

InitialContext context=new InitialContext();

Context evnContext = (Context)initContext.lookup("java:/comp/env");

DataSource dataSource = (DataSource)evnContext.lookup("jdbc/bookstore");

Connection con = dataSource.getConnection();

5.总结

  1)掌握通过页面抛出的异常信息,快速定位问题,解决问题

  2)掌握JSP的数据库连接方式配置和使用方法

  

JSP连接数据库异常Context.lookup分析

时间: 2024-09-28 05:50:26

JSP连接数据库异常Context.lookup分析的相关文章

jsp连接数据库的几种方式

---恢复内容开始--- jsp连接数据库分为:JDBC-ODBC桥接方式.数据库驱动程序连接(新手笔记,若有错误请大神指出). 桥接方式: 连接Access数据库: 首先要在Access中建立一个数据库,录入好数据(OK貌似这是废话),记号数据库的位置,然后进行数据源配置,打开控制面板 -> 管理工具 -> odbc数据源 -> 添加 -> 选择Access的驱动程序,一般为Microsoft Access Driver(*.mdb 较新的版本还会多一个*.accdb) ->

jsp连接数据库

jsp连接数据库: <%@ page language="java" import="java.util.*, java.sql.*" pageEncoding="GB18030"%> <% String username = request.getParameter("username"); String password = request.getParameter("password"

Visual studio 调试连接数据库异常解决方法

在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Data.SqlClient.SqlException: 在

jsp连接数据库大全

一.jsp连接Oracle8/8i/9i数据库(用thin模式) testoracle.jsp如下: < %@ page contentType="text/html;charset=gb2312"% > < %@ page import="java.sql.*"% > < html > < body > < %Class.forName("oracle.jdbc.driver.OracleDriver

Weblogic jsp页面编译出错,Weblogic jsp编译异常

Weblogic jsp页面编译出错,Weblogic jsp编译异常 ======================== 蕃薯耀 2018年1月29日 http://www.cnblogs.com/fanshuyao/ 一.问题描述: 将项目部署到Weblogic下启动后,jsp页面编译出错,提示如下: Java代码   weblogic.servlet.jsp.CompilationException:Failed to complile :JSP/xxx.jsp: Type mismatch

用MVC模式写的jsp连接数据库操作

首先用一个JavaBean封装数据库操作,即mvc中的模型 JdbcBean.java package data; import java.sql.*; public class JdbcBean { private String DBDriver="com.mysql.jdbc.Driver"; private String DBUrl="jdbc:mysql://localhost:3306/test"; private String DBUser="

Android Context getSystemService分析

我们知道一个应用的Context个数是Activity个数+Service个数+1 当我们希望获取到系统服务时,可以调用Context的getSystemService方法,如获取到ActivityManager: ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 那么getSystemService又是怎么工作的呢? Activity是一个Context,他调用getS

在Activity的onCreate方法中显示PopupWindow导致异常的原因分析及解决方案

一.前言 在某些情况下,我们需要一进入Activity就显示PopupWindow,比如常见的选择界面.但由于PopupWindow是依附于Activity的,如果Activity没有创建完成,Activity还没完全显示出来就显示PopupWindow的话,会出现异常现象. 二.问题复现 我在Activity的onCreate()方法中调用如下方法: public void show( ){ if( null != mPopupWindow ){ mPopupWindow.showAtLoca

erlang监控进程在启动进程退出后异常退出原因分析

一.问题引出 erlang监控进程在启动时设置了trap_exit为true,即会捕获到退出信号,会将退出信号转换为{'EXIT',Pid,Reason}存入自己的邮箱中,因此与监控进程link关系的进程退出后,监控进程能够很坦然的截获退出信号,自身不退出.启动erlang监控进程的进程,会和监控进程建立link关系,然而当启动进程退出时,监控进程没有象正常的情况,发生了异常退出,为什么设置了trap_exit为true,还会退出呢? 二.原因分析 查看supervisor的源码,supervi