在struts2中使用Action类连接到couchDb
即时尝试使用struts2和couch将一个简单的登录页面Db as database.i编写了一个代码,用于检查用户输入的值与数据库中的值之间的关系。我试着通过创建一个简单的java类并检索成功的文档来尝试连接数据库。但是当我在Action类中放入相同的代码时,它给出了异常。 调试显示它在我称之为“会话”对象的那一行发出异常。 我的代码片段和堆栈跟踪如下。在struts2中使用Action类连接到couchDb
package net.sarah.struts2;
import java.util.List;
import com.fourspaces.couchdb.Database;
import com.fourspaces.couchdb.Document;
import com.fourspaces.couchdb.Session;
import com.fourspaces.couchdb.ViewResults;
public class LoginAction {
private String username;
private String password;
public final String LOGIN_ID ="loginid";
public final String LOGIN_PWD ="passwd";
public String execute() {
try{
Session dbSession = new Session("localhost", 5984);
String dbname = "hello-world";
List <String> listofdb = dbSession.getDatabaseNames();
System.out.println(listofdb);
Database db = dbSession.getDatabase(dbname);
ViewResults results = db.getAllDocuments();
// System.out.println(results.toString());
List<Document> studentDocuments = results.getResults();
for(Document couchDocument: studentDocuments){
String id = couchDocument.getJSONObject().getString("id");
Document studentRow = db.getDocument(id);
System.out.println(studentRow.get("_id"));
if(studentRow.containsKey(LOGIN_ID)){
if(LOGIN_ID.equals(username) && LOGIN_PWD.equals(password))
return "success";
else
return "error";
}
}
}
catch(Exception e)
{
e.getCause();
}
return "result";
}
堆栈跟踪 -
信息:检测AnnotationActionValidatorManager,初始化它... 2014年11月25日上午10时55分03秒org.apache.catalina.core.StandardWrapperValve调用 重度: Servlet.service()for path with context [/ Demo]中的servlet [default]引发了具有根本原因的异常[java.lang.reflect.InvocationTargetException] java.lang.ClassNotFoundException:com.fourspaces.couchdb.Session at org。 apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) at net.sarah.struts2.LoginAction.execute(LoginAction.java:23) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method ) 在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在java.lang.reflect.Method.invoke(未知来源) 在com.opensymphony.xwork2。 DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404) at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation $ 2 .doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation $ 2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150) at org.apache.struts2.interceptor.validation。 Annotat ionValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48) 在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) 在com.opensymphony.xwork2.DefaultActionInvocation $ 2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation $ 2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation。调用(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123) at com.opensymphony.xwork2.DefaultActionInvocation $ 2.doProfiling(DefaultActionInvocation.jav一:224) 在com.opensymphony.xwork2.DefaultActionInvocation $ 2.doProfiling(DefaultActionInvocation.java:223) 在com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) 在融为一体。opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor。在com.opensymphony.xwork2.DefaultActionInvocation $ 2.doProfiling(DefaultActionInvocation.java:223) com.opensymphony.xwork2。 util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParameters Interceptor.java:105) 在com.opensymphony.xwork2.DefaultActionInvocation $ 2.doProfiling(DefaultActionInvocation.java:224) 在com.opensymphony.xwork2.DefaultActionInvocation $ 2.doProfiling(DefaultActionInvocation.java:223)
你错过了CouchDB库,显然是:'java.lang.ClassNotFoundException:com.fourspaces.couchdb.Session' – 2014-11-25 20:32:36