终于有回应的了,重新贴一下代码:
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) { }%>

解决方案 »

  1.   

    出错提示是什么啊!
    一般不在.jsp中直接连数据库,是通过action-bean来实现。
      

  2.   

    我只是想试试可不可以连上,应该在jsp里也行吧,
    提示  NUllPOintException是不是 Action.DATA_SOURCE_KEY找不到.
      

  3.   

    倒难道你没试过?!
    我看你有这句System.out.println(Action.DATA_SOURCE_KEY);
    所以 我以为没问题的。标准的写法是:
    Hashtable database = (Hashtable)
      servlet.getServletContext().getAttribute(Constants.DATABASE_KEY);
      

  4.   

    你说的那个是struts自带的例子中的吧,在例子中虽然用了database这个变量,但我认为它并没有用数据库,他只是存在一个hashtable里吧,不知对不对.这句System.out.println(Action.DATA_SOURCE_KEY);
    确实可以打出来,但是好象这句话有问题:
    DataSource dataSource = (DataSource) servlet.getServletContext().getAttribute(Action.DATA_SOURCE_KEY);
      

  5.   

    就目前来看,如果DataSource dataSource = (DataSource) servlet.getServletContext().getAttribute(Action.DATA_SOURCE_KEY);
    是空指针的话,那不就说明servlet的attribute里没有(Action.DATA_SOURCE_KEY)这个属性?!如果,你不介意的话,请多给点你原来的代码。因为有些东西还是不清楚啊!
      

  6.   

    我也是这个意思.不过我初学,不知道为什么.我没有改任何地方,下面是我用的jsp page的全部内容.然后把struts-config.xml中的data-source部分改成上面的代码中的样子就行了.另外,在最后附出错提示.
    谢谢.<!--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)
      

  7.   

    你用的Structs是什么版本?!和我的不太一样啊,‘struts-config.xml的写法就不一样了。
    对不起,从你给出的代码,看不出哪有错。
    我想试着跑一下,可现在时间不容许(我们的运行环境不一样,我这边需要重新构建),项目忙啊……
    实在抱歉:(
      

  8.   

    好象是1.0.5,你的struts-config.xml怎么写?