ITPUB??ì3
ITPUB论坛 » Java web开发及框架技术 » struts 连接 mssql2005 的一个问题

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: struts 连接 mssql2005 的一个问题
离线 handsome112233
一般会员



精华贴数 0
个人空间 0
技术积分 170 (10885)
社区积分 0 (1228253)
注册日期 2006-12-27
论坛徽章:0
      
      

发表于 2008-6-12 11:40 
struts 连接 mssql2005 的一个问题

=====struts-config.xml==文件如下:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>

<data-sources>   
<data-source   key="a"   type="org.apache.commons.dbcp.BasicDataSource">   
<set-property   property="driverClassName"   value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />   
<set-property   property="url"   value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=master" />   
<set-property   property="username"   value="sa" />   
<set-property   property="password"   value="821010"/>   
<set-property   property="maxActive"   value="10" />   
<set-property   property="maxWait"   value="5000" />   
<set-property   property="defaultAutoCommit"   value="false" />   
<set-property   property="defaultReadOnly"   value="false" />   
</data-source>   
</data-sources>


  <form-beans>
        <form-bean name="registerForm" type="app.registerForm">
           <form-property   name="username"    type="java.lang.String" />
           <form-property   name="password1"    type="java.lang.String" />   
           <form-property   name="password2"   type="java.lang.String" />     
                                </form-bean>
  </form-beans>

  <action-mappings>
           
            <action  name="registerForm"
                           path="/register"
                           type="app.registerAction"
                           scope="request"
               validate="false"
                   >
             <forward name="success" path="/success.html" />
             <forward name="failure" path="/failure.html" />
       </action>
   </action-mappings>
   
</struts-config>

===registerAction.java==文件

package app;

import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.io.*;
//import javax.sql.DataSource;

import javax.sql.*;
import javax.servlet.*;


public class registerAction extends Action {
       
        public ActionForward execute(ActionMapping mapping,
                        ActionForm form,
                        HttpServletRequest req,
                        HttpServletResponse res)
        {
                registerForm rf=(registerForm) form;
               
                String username = rf.getUsername();
               
                String password1 = rf.getPassword1();
               
                String password2 = rf.getPassword2();
               
                ServletContext ctx = servlet.getServletContext();
        
            DataSource ds = (DataSource) ctx.getAttribute("a";
            boolean flag = true;
            
            if (ds==null){
                    System.out.println("1111111";
                    flag = false;
            }
          

            
            
                if (flag)
                {
                   return mapping.findForward("success";
                }else
                {  
                   return mapping.findForward("failure";
                }
               
        }
}


tomcat 结果输出为:

2008-6-12 11:21:04 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: The Apache Tomcat Native library which allows optimal performance in produ
ction environments was not found on the java.library.path: E:Program FilesJava
jdk1.5.0_15in;.;C:WINDOWSsystem32;C:WINDOWS;dracleora92in;C:Program
FilesOraclejre1.3.1in;C:Program FilesOraclejre1.1.8in;C:WINDOWSsys
tem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:Program FilesMicrosoft SQL Server
80ToolsBinn;D:Program FilesMicrosoft SQL Server90DTSBinn;D:Program Fil
esMicrosoft SQL Server90Toolsinn;D:Program FilesMicrosoft SQL Server90
ToolsBinnVSShellCommon7IDE;C:Program FilesMicrosoft Visual Studio 8Commo
n7IDEPrivateAssemblies;C:Program FilesIDM Computer SolutionsUEStudio '06;
2008-6-12 11:21:04 org.apache.coyote.http11.Http11BaseProtocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2008-6-12 11:21:04 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1000 ms
2008-6-12 11:21:05 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2008-6-12 11:21:05 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.26
2008-6-12 11:21:05 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
2008-6-12 11:21:06 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(e:        omcat-5.5webapps
egisterWEB-INFlibservlet.jar) -
jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/serv
let/Servlet.class
2008-6-12 11:21:06 org.apache.struts.action.ActionServlet initChain
信息: Loading chain catalog from jar:file:/e:/tomcat-5.5/webapps/register/WEB-IN
F/lib/struts-core-1.3.9.jar!/org/apache/struts/chain/chain-config.xml
2008-6-12 11:21:07 org.apache.coyote.http11.Http11BaseProtocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2008-6-12 11:21:07 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2008-6-12 11:21:07 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/63  config=null
2008-6-12 11:21:07 org.apache.catalina.storeconfig.StoreLoader load
信息: Find registry server-registry.xml at classpath resource
2008-6-12 11:21:07 org.apache.catalina.startup.Catalina start
信息: Server startup in 2516 ms
2008-6-12 11:21:20 org.apache.struts.chain.ComposableRequestProcessor init
信息: Initializing composable request processor for module prefix ''
2008-6-12 11:21:20 org.apache.struts.chain.commands.servlet.CreateAction createA
ction
信息: Initialize action of type: app.registerAction
1111111



====
证明 DataSource ds = (DataSource) ctx.getAttribute("a";这句话为NULL,不知道是那里出了问题。请各位大虾指教!!


只看该作者    顶部
离线 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 40461 (18)
社区积分 10913 (143)
注册日期 2005-6-10
论坛徽章:80
现任管理团队成员开发板块每日发贴之星生肖徽章2007版:猪开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星
      

发表于 2008-6-12 13:10 
DataSource ds = (DataSource) ctx.getAttribute("a";
谁告诉你这样取ds?


__________________
只看该作者    顶部
离线 handsome112233
一般会员



精华贴数 0
个人空间 0
技术积分 170 (10885)
社区积分 0 (1228253)
注册日期 2006-12-27
论坛徽章:0
      
      

发表于 2008-6-12 13:19 
网上很多例子都是这样写的,还有什么写法,请指教


只看该作者    顶部
离线 handsome112233
一般会员



精华贴数 0
个人空间 0
技术积分 170 (10885)
社区积分 0 (1228253)
注册日期 2006-12-27
论坛徽章:0
      
      

发表于 2008-6-12 13:24 
原来是这样写这个action的,

package app;

import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.io.*;
//import javax.sql.DataSource;

import javax.sql.*;
import javax.servlet.*;


public class registerAction extends Action {
       
        public ActionForward execute(ActionMapping mapping,
                        ActionForm form,
                        HttpServletRequest req,
                        HttpServletResponse res)
        {
                registerForm rf=(registerForm) form;
               
                String username = rf.getUsername();
               
                String password1 = rf.getPassword1();
               
                String password2 = rf.getPassword2();
               
                ServletContext ctx = servlet.getServletContext();
        
            DataSource ds = (DataSource)ctx.getAttribute("DataSource";
            boolean flag = false;
            
            Connection conn=null;
            Statement st=null;
            ResultSet rs=null;
            
            String sql ="insert into t_user (username,password) values('"+username+"','"+password1+"')";
            
            
            if (password1.equals(password2)){
                       
                        try{
                                                               
                                 conn = ds.getConnection();

                     st = conn.createStatement();

                     rs = st.executeQuery(sql);
                     
                     flag= true;
                   st.close();
                          rs.close();
                        }catch (Exception e){
                                e.printStackTrace();
                        }
                       
                }          

            
            
                if (flag)
                {
                   return mapping.findForward("success";
                }else
                {  
                   return mapping.findForward("failure";
                }
               
        }
}


tomcate 报错如下:

2008-6-12 10:17:48 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: The Apache Tomcat Native library which allows optimal performance in produ
ction environments was not found on the java.library.path: E:Program FilesJava
jdk1.5.0_15in;.;C:WINDOWSsystem32;C:WINDOWS;dracleora92in;C:Program
FilesOraclejre1.3.1in;C:Program FilesOraclejre1.1.8in;C:WINDOWSsys
tem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:Program FilesMicrosoft SQL Server
80ToolsBinn;D:Program FilesMicrosoft SQL Server90DTSBinn;D:Program Fil
esMicrosoft SQL Server90Toolsinn;D:Program FilesMicrosoft SQL Server90
ToolsBinnVSShellCommon7IDE;C:Program FilesMicrosoft Visual Studio 8Commo
n7IDEPrivateAssemblies;C:Program FilesIDM Computer SolutionsUEStudio '06;
2008-6-12 10:17:48 org.apache.coyote.http11.Http11BaseProtocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2008-6-12 10:17:48 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1000 ms
2008-6-12 10:17:49 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2008-6-12 10:17:49 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.26
2008-6-12 10:17:49 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
2008-6-12 10:17:49 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(e:        omcat-5.5webapps
egisterWEB-INFlibservlet.jar) -
jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/serv
let/Servlet.class
2008-6-12 10:17:50 org.apache.struts.action.ActionServlet initChain
信息: Loading chain catalog from jar:file:/e:/tomcat-5.5/webapps/register/WEB-IN
F/lib/struts-core-1.3.9.jar!/org/apache/struts/chain/chain-config.xml
2008-6-12 10:17:51 org.apache.coyote.http11.Http11BaseProtocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2008-6-12 10:17:51 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2008-6-12 10:17:51 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/31  config=null
2008-6-12 10:17:51 org.apache.catalina.storeconfig.StoreLoader load
信息: Find registry server-registry.xml at classpath resource
2008-6-12 10:17:51 org.apache.catalina.startup.Catalina start
信息: Server startup in 2812 ms
2008-6-12 10:18:25 org.apache.struts.chain.ComposableRequestProcessor init
信息: Initializing composable request processor for module prefix ''
2008-6-12 10:18:25 org.apache.struts.chain.commands.servlet.CreateAction createA
ction
信息: Initialize action of type: app.registerAction java.lang.NullPointerException
        at app.registerAction.execute(registerAction.java:62)
        at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(Execut
eAction.java:58)
        at org.apache.struts.chain.commands.AbstractExecuteAction.execute(Abstra
ctExecuteAction.java:67)
        at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionComm
andBase.java:51)
        at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
        at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.
java:304)
        at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
        at org.apache.struts.chain.ComposableRequestProcessor.process(Composable
RequestProcessor.java:283)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:191
3)
        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:188)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:174)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:117)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:108)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:174)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:874)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p
rocessConnection(Http11BaseProtocol.java:665)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
int.java:528)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
lowerWorkerThread.java:81)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:689)
        at java.lang.Thread.run(Thread.java:595)


只看该作者    顶部
离线 baggio0105
中级会员



来自 西安
精华贴数 0
个人空间 0
技术积分 654 (2915)
社区积分 598 (1261)
注册日期 2006-4-5
论坛徽章:6
itpub2007年荐股参与纪念徽章会员2007贡献徽章生肖徽章2007版:鸡2008年新春纪念徽章生肖徽章:猪生肖徽章:猪
      

发表于 2008-6-12 16:36 
是这样得到DataSource的吗? 我怎么记着在Action子类里可以直接调用this.getDataSource()呢...


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问