首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

struts+Eclipse的有关问题

2012-01-12 
struts+Eclipse的问题本人是初学者,现在在Eclipse环境下用struts写的web程序,编译正常,但是当我按提交按钮

struts+Eclipse的问题
本人是初学者,现在在Eclipse环境下用struts写的web程序,编译正常,但是当我按提交按钮处理数据的时候,却出错:
警告:   Unhandled   exception
警告:   Exception   from   exceptionCommand   'servlet-exception '
严重:   Servlet.service()   for   servlet   action   threw   exception
java.lang.NullPointerException
at   j2eebbs.DB. <init> (DB.java:16)
at   j2eebbs.user.action.RegistrationAction.execute(RegistrationAction.java:37)
at   org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:53)
at   org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:64)
at   org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
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(ComposableRequestProcessor.java:280)
at   org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
at   org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)
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(ApplicationFilterChain.java:290)
at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at   org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at   org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at   org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at   java.lang.Thread.run(Thread.java:595)

========================我的代码   原文件如下==========================
===DB.java================
package   j2eebbs;

import   javax.sql.DataSource;
import   java.sql.Connection;
import   java.sql.Statement;
import   java.sql.ResultSet;
import   java.sql.SQLException;

public   class   DB   {

Connection   connect   =   null;
ResultSet   rs   =   null;
public   DB(DataSource   dataSource)   {

try   {
connect   =   dataSource.getConnection();     //======16行出错
}
catch(SQLException   e)   {
e.printStackTrace();
}
}

public   ResultSet   OpenSql(String   sql)   {
try   {
Statement   stmt   =   connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs   =   stmt.executeQuery(sql);
}  
catch(SQLException   ex)   {  
ex.printStackTrace();
}
return   rs;
}

public   int   ExecSql(String   sql)   {
int   result   =   0;


try   {
Statement   stmt   =   connect.createStatement();
result   =   stmt.executeUpdate(sql);
}  
catch(SQLException   ex)   {  
System.err.println(ex.getMessage());

}
return   result;
}

public   void   close(){
if(connect!=null){
try{
connect.close();
connect   =   null;
}catch(SQLException   ex)   {  
System.err.println(ex.getMessage());
}
}
}
}

=======RegistrationAction.java

package   j2eebbs.user.action;

import   j2eebbs.Constants;
import   j2eebbs.DB;
import   j2eebbs.User;
import   j2eebbs.user.form.RegistrationForm;

import   javax.servlet.ServletContext;
import   javax.servlet.http.HttpServletRequest;
import   javax.servlet.http.HttpServletResponse;
import   javax.sql.DataSource;

import   org.apache.struts.action.Action;
import   org.apache.struts.action.ActionForm;
import   org.apache.struts.action.ActionForward;
import   org.apache.struts.action.ActionMapping;
import   org.apache.struts.action.ActionMessage;
import   org.apache.struts.action.ActionMessages;

public   final   class   RegistrationAction   extends   Action   {
public   ActionForward   execute(ActionMapping   mapping,   ActionForm   form,
HttpServletRequest   request,   HttpServletResponse   response)
throws   Exception   {

RegistrationForm   rgtForm   =   (RegistrationForm)   form;
String   username   =   rgtForm.getUsername();
String   password   =   rgtForm.getPassword();
String   sex   =   rgtForm.getSex();
String   email   =   rgtForm.getEmail();
String   icq   =   rgtForm.getIcq();
String   signature   =   rgtForm.getSignature();
String   grade   =   rgtForm.getGrade();

ServletContext   context   =   servlet.getServletContext();
DataSource   dataSource   =   (DataSource)   context
.getAttribute(Constants.DATASOURCE_KEY);
DB   db   =   new   DB(dataSource);//===========37行   这里错误

User   user   =   new   User();
user.setUsername(username);
user.setPassword(password);
user.setSex(sex);
user.setEmail(email);
user.setIcq(icq);
user.setSignature(signature);
user.setGrade(grade);

String   pageForward;
ActionMessages   errors   =   new   ActionMessages();

if   (!username.equals( "guest ")   &&   user.insert(db))   {
pageForward   =   "ToUserLogin ";
}   else   {
errors.add(ActionMessages.GLOBAL_MESSAGE,   new   ActionMessage(
"error.registration.failed "));
if   (!errors.isEmpty())   {
saveErrors(request,   errors);
}
pageForward   =   "ToErrorPage ";
}

db.close();
return   mapping.findForward(pageForward);
}
}

[解决办法]
空指针错误

JSP页面body里面的代码贴出来
[解决办法]
lz在Action里将:
DataSource dataSource = (DataSource) context


.getAttribute(Constants.DATASOURCE_KEY);
DB db = new DB(dataSource);//===========37行 这里错误

改为:
DataSource dataSource = this.getDataSource(request, Constants.DATASOURCE_KEY);
DB db = new DB(dataSource);
试试。

热点排行