错误提示,在myeclipse中运行注册表单,抛出找不到类异常。在网上找过n种办法,但是都没有解决

Mr.Zhang8743 2017-09-17 08:05:25

我采用的是MVC三层架构的开发模式,不过我没有使用三大框架,只是用简单的servlet+jsp实现而已。
这是运行是出现的错误,求教!

root cause

java.lang.NoClassDefFoundError: org/apache/commons/dbutils/ResultSetHandler
zww.com.service.impl.UserServiceImpl.<init>(UserServiceImpl.java:10)
zww.com.controller.RegisterServlet.<init>(RegisterServlet.java:17)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:526)
java.lang.Class.newInstance(Class.java:374)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1524)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1480)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:744)

这是我的代码
//控制层
package zww.com.controller;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import zww.com.domain.User;
import zww.com.service.impl.UserServiceImpl;

public class RegisterServlet extends HttpServlet {
private UserService userService;//service层提供的接口
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String message = "";
try{
String name = request.getParameter("name");
String password = request.getParameter("password");
int age = Integer.parseInt(request.getParameter("age"));
String gender = request.getParameter("gender");
String birthday = request.getParameter("birthday");
SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
Date d = date.parse(birthday);
String phone = request.getParameter("phone");
String email = request.getParameter("email");
String description = request.getParameter("description");
User user = new User();
user.setName(name);
user.setPassword(password);
user.setAge(age);
user.setGender(gender);
user.setBirthday(d);
user.setPhone(phone);
user.setEmail(email);
user.setDecription(description);
userService.add(user);//此行抛出异常
message = message + "注册成功";
}catch(Exception e){
message = message + "注册失败";
throw new RuntimeException(e);
}finally{
request.setAttribute("message", message);
request.getRequestDispatcher("/shop/jsp/message.jsp").forward(request, response);
}
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}

//实现service层的代码,抽取接口的代码就不贴出来了
package zww.com.service.impl;
import java.util.List;
import zww.com.dao.impl.UserDaoImpl;
import zww.com.domain.User;
import zww.com.service.UserService;

public class UserServiceImpl implements UserService {
private UserDaoImpl userDao = new UserDaoImpl();

/* (non-Javadoc)
* @see zww.com.service.impl.UserService#add(zww.com.domain.User)
*/
@Override
public void add(User user){
userDao.add(user);
}

//数据访问层dao,抽取接口的代码也不贴出来了

package zww.com.dao.impl;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import zww.com.dao.UserDao;
import zww.com.domain.User;
import zww.com.utils.JDBCUtils;

public class UserDaoImpl implements UserDao {

/* (non-Javadoc)
* @see zww.com.dao.impl.UserDao#add(zww.com.domain.User)
*/
@Override
public void add(User user){
try{
QueryRunner q = new QueryRunner(JDBCUtils.getDataSource());
String sql = "insert into user(name,password,age,gender,birthday,phone,email,description) values(?,?,?,?,?,?,?,?)";
Object param[] = {user.getName(),user.getPassword(),user.getAge(),user.getGender(),user.getBirthday(),user.getPhone(),user.getEmail(),user.getDecription()};
q.update(sql, param);
}catch(Exception e){
throw new RuntimeException(e);
}
}

dao层的代码我已经测试过了,可以添加数据。网上有说可能是jar包版本的原因,但是我换了好几个版本,还是不行。也有说是编译器的问题,我用Eclipse还是不行。特此来向老师们求教


...全文
218 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr.Zhang8743 2017-09-18
  • 打赏
  • 举报
回复
很感谢您的解答,不过还是老问题,没有解决
大维啊 2017-09-17
  • 打赏
  • 举报
回复
dbuitls的类没找到,这个jar包放到classpath下,试试
JSP100选择题 适合考前练习 1 J2EE ,()的()方法用于创建对话。(选择一项) a) HttpServletRequest、getSession b) HttpServletResponse、newSession c) HtttpSession、newInstance d) HttpSession、getSession 2 给定一个 Servlet 的doGet方法的代码片段,如下: request.setAttribute(“name”,”zhang”); response.sendRedirect(“http://localhost:8080/servlet/MyServlt”); 那么在 MyServlet 可以使用()方法把属性 name的值取出来。(选择一项) a) String str=request.getAttribute(“name”); b) String str=(String)request.getAttribute(“name”); c) Object str=request.getAttribute(“name”); d) 无法取出来 3.在Servlet里,能实现重定向的方法有()。(选择两项) A.运用javax.servlet.http.HttpServletRequest接口的sendRedirect方法 B.运用javax.servlet.http.HttpServletResponse接口的sendRedirect方法 C.运用javax.servlet.RequestDispatcher接口的forward方法 D.运用javax.servlet.ResponseDispatcher接口的forward方法 4.利用MyEclipse开发Servlet,下列说法正确的是( )。(只选两项) A. MyEclipse可自动产生web.xml B. MyEclipse不能自动产生web.xml,需要手工编写 C.可利用MyEclipse自带的Tomcat作为Servlet容器 D. MyEclipse没有自带Tomcat,需要自己安装配置。 5.编写Servlet 的doPost方法时,需要抛出异常为()。(只选一项) A.ServletException, IOException B.ServletException, RemoteException C.HttpServletException, IOException D.HttpServletException, RemoteException 6.有关会话跟踪技术描述正确的是()。(选择三项) A.Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端 B.关闭浏览器意味着会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期 C.在禁用Cookie时可以使用URL重写技术跟踪会话 D.隐藏表域将字段添加到HTML表并在客户端浏览器显示 …………
1.编写一个JSP程序,计算1!+2!+3!+4!+5!,并显示出结果。要求先声明计算阶乘的方法,再调用该方法,最后在页面上输出结果。2.2、在JSP页面静态包含文件。要求程序包含两个文件,主文件静态包含一个能够计算1到1000内的完数的页面。(如果一个正整数刚好等于它的真因子之和,这样的正整数为完数, 例如,6=1+2+3,因此6就是一个完数。)3.动态包含页面并传递数据。要求程序包含两个文件,主文件(actioninclude)加载次文件(redirection),并将随机产生的50~100之间的数据传递给它,并且在页面上显示两个信息:该数据和这个数据的平方根。进阶要求,把动态包含改为动态重定向,比较两者之间的区别。4.本题包括4个JSP程序,one.jsp、two.jsp、three.jsp、error.jsp。 one.jsp具体要求如下:要求one.jsp页面有一个表,用户使用该表可以输入一个1至100之间的整数,并提交给下一个页面;如果输入的整数在50至100之间(不包括50)就转向three.jsp,如果在1至50之间就转向two.jsp;如果输入不符合要求就转向error.jsp。要求forward标记在实现页面转向时,使用param子标记将整数传递到转向的two.jsp或three.jsp页面,将有关输入错误传递到转向的error.jsp页面 two.jsp、three.jsp和error.jsp的具体要求如下: 要求two.jsp和three.jsp能输出one.jsp传递过来的值,并显示一幅图像,该图像的宽和高刚好是one.jsp页面传递过来的值。error页面能显示有关抛出错误信息。(程序使用的图片,可自行准备)。

24,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧