终于有回应的了,重新贴一下代码:
jsp页面报错,在控制面版能打印出befor但是打印不出after.
劳驾
代码如下:
<!--struts-config.xml-->
<data-source
autoCommit="false"
description="Data Source Configuration"
driverClass="oracle.jdbc.driver.OracleDriver" maxCount="4"
minCount="2"
password="tiger"
user="scott"
url="jdbc:oracle:thin:@localhost:1521:OIDDB1"
/>
</data-sources>
<!--index.jsp-->
<% try {
ActionServlet servlet=new ActionServlet();
System.out.println("befor");
DataSource dataSource = (DataSource) servlet.getServletContext().getAttribute(Action.DATA_SOURCE_KEY);
System.out.println("after");
Connection conn = dataSource.getConnection();
//... perform required functions as in the previous example ...
String aa="select userName from systemUser";
Statement stmt=conn.createStatement();
ResultSet rs =stmt.executeQuery(aa);
while(rs.next()){
System.out.println(rs.getString("userName"));
}
conn.close(); } catch (SQLException e) { }%>
jsp页面报错,在控制面版能打印出befor但是打印不出after.
劳驾
代码如下:
<!--struts-config.xml-->
<data-source
autoCommit="false"
description="Data Source Configuration"
driverClass="oracle.jdbc.driver.OracleDriver" maxCount="4"
minCount="2"
password="tiger"
user="scott"
url="jdbc:oracle:thin:@localhost:1521:OIDDB1"
/>
</data-sources>
<!--index.jsp-->
<% try {
ActionServlet servlet=new ActionServlet();
System.out.println("befor");
DataSource dataSource = (DataSource) servlet.getServletContext().getAttribute(Action.DATA_SOURCE_KEY);
System.out.println("after");
Connection conn = dataSource.getConnection();
//... perform required functions as in the previous example ...
String aa="select userName from systemUser";
Statement stmt=conn.createStatement();
ResultSet rs =stmt.executeQuery(aa);
while(rs.next()){
System.out.println(rs.getString("userName"));
}
conn.close(); } catch (SQLException e) { }%>
一般不在.jsp中直接连数据库,是通过action-bean来实现。
提示 NUllPOintException是不是 Action.DATA_SOURCE_KEY找不到.
我看你有这句System.out.println(Action.DATA_SOURCE_KEY);
所以 我以为没问题的。标准的写法是:
Hashtable database = (Hashtable)
servlet.getServletContext().getAttribute(Constants.DATABASE_KEY);
确实可以打出来,但是好象这句话有问题:
DataSource dataSource = (DataSource) servlet.getServletContext().getAttribute(Action.DATA_SOURCE_KEY);
是空指针的话,那不就说明servlet的attribute里没有(Action.DATA_SOURCE_KEY)这个属性?!如果,你不介意的话,请多给点你原来的代码。因为有些东西还是不清楚啊!
谢谢.<!--index.jsp--><%@ page language="java" %>
<%@ page import= "org.apache.struts.util.*,java.sql.*,javax.sql.*" %>
<%@ page import= "org.apache.struts.action.ActionServlet" %>
<%@ page import= "org.apache.struts.action.Action" %>
<%@ page import= "javax.servlet.*" %><%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %><%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %><%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %><html:html locale="true"><head><title><bean:message key="index.title"/></title><html:base/></head><body bgcolor="white"><logic:notPresent name="org.apache.struts.action.MESSAGE" scope="application"> <font color="red"> ERROR: Application resources not loaded -- check servlet container logs for error messages. </font></logic:notPresent><h3><bean:message key="index.title"/></h3><% try {
ActionServlet servlet=new ActionServlet();
System.out.println("befor");
DataSource dataSource = (DataSource) servlet.getServletContext().getAttribute(Action.DATA_SOURCE_KEY);
System.out.println("after");
Connection conn = dataSource.getConnection();
//... perform required functions as in the previous example ...
String aa="select userName from systemUser";
Statement stmt=conn.createStatement();
ResultSet rs =stmt.executeQuery(aa);
while(rs.next()){
System.out.println(rs.getString("userName"));
}
conn.close(); } catch (SQLException e) { }%>
</body></html:html>
<!--error message -->message Internal Server Errordescription The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.exception java.lang.NullPointerException
at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:205)
at org.apache.jsp.index$jsp._jspService(index$jsp.java:223)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
对不起,从你给出的代码,看不出哪有错。
我想试着跑一下,可现在时间不容许(我们的运行环境不一样,我这边需要重新构建),项目忙啊……
实在抱歉:(