Java 数据源在struts中不工作

Java 数据源在struts中不工作,java,struts,Java,Struts,我试图使用struts中的datasource从表中获取一些值,但它给出了一个例外: 类型异常报告 信息 说明服务器遇到内部错误(),无法完成此请求 例外情况 javax.servlet.ServletException: java.lang.NullPointerException org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:520) org.apache.struts.a

我试图使用struts中的datasource从表中获取一些值,但它给出了一个例外:

类型异常报告

信息

说明服务器遇到内部错误(),无法完成此请求

例外情况

javax.servlet.ServletException: java.lang.NullPointerException
 org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:520)
 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:427)
 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)


root cause 

java.lang.NullPointerException
 login.LoginAction.execute(LoginAction.java:31)
 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
注意,Apache Tomcat/6.0.26日志中提供了根本原因的完整堆栈跟踪

我的struts-config.xml包含数据源连接属性:

请任何人帮助运行上述程序

问候
Mouli V

您的
数据源
,这会导致
空点异常
。它是
null
,因为您试图获取一个不存在的属性:

DataSource ds = (DataSource) servlet.getServletContext().getAttribute("");
在Struts中,您似乎通过调用


另一件事-您已经标记了struts2,但正在使用struts1。是否确实使用了正确的库?

使用Struts-1.X内置的“数据源”功能时,Struts-config.xml包含所有与数据库相关的详细信息。 因为您可以使用“validationQuery”属性来验证有关db连接的所有内容

 <data-sources> 
    <data-source key="datasource" type="org.apache.tomcat.dbcp.dbcp.BasicDataSource"> 
      <set-property property="password" value="pass" /> 
      <set-property property="username" value="uname" /> 
      <set-property property="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 
      <set-property property="url" value="jdbc:oracle:thin:@localhost:1521:abc" /> 
      <set-property property="validationQuery" value="select sysdate from dual" />    
    </data-source> 
 </data-sources>
如何在Action类中调用getDataSource(request)方法
DataSource ds = (DataSource) servlet.getServletContext().getAttribute("");
 <data-sources> 
    <data-source key="datasource" type="org.apache.tomcat.dbcp.dbcp.BasicDataSource"> 
      <set-property property="password" value="pass" /> 
      <set-property property="username" value="uname" /> 
      <set-property property="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 
      <set-property property="url" value="jdbc:oracle:thin:@localhost:1521:abc" /> 
      <set-property property="validationQuery" value="select sysdate from dual" />    
    </data-source> 
 </data-sources>
public class LoginAction extends Action
{
   public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
   {

      LoginForm loginForm = (LoginForm) form;
      if (loginForm.getUsername() != null && loginForm.getPassword() != null)
      {

DataSource dataSource = getDataSource(request, "datasource");
Connection myConnection = dataSource.getConnection();
PreparedStatement stmt = null;
String select = "SELECT USERNAME,PASSWORD from USER where USERNAME=?";
stmt = myConnection.prepareStatement(select);
stmt.setString(1, username);
rst = stmt.executeQuery();

................
}
}