在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)

+0

你错过了CouchDB库,显然是:'java.lang.ClassNotFoundException:com.fourspaces.couchdb.Session' – 2014-11-25 20:32:36

确保您拥有web-inf/lib中的所有必需库。

此资源可以帮助您Apache CouchDB