使用struts2中的Action类连接到couchDb
我正在尝试使用struts2和Coach Db作为数据库来创建一个简单的登录页面。我已经编写了一个代码来检查用户输入的值与数据库中的值。我通过创建一个简单的java类并检索成功的文档,尝试首先连接到数据库。但当我在Action类中放入相同的代码时,它给出了一个异常。 调试显示,它在我调用“Session”对象的行中出现异常。 下面给出了我的代码片段和堆栈跟踪使用struts2中的Action类连接到couchDb,struts2,couchdb,Struts2,Couchdb,我正在尝试使用struts2和Coach Db作为数据库来创建一个简单的登录页面。我已经编写了一个代码来检查用户输入的值与数据库中的值。我通过创建一个简单的java类并检索成功的文档,尝试首先连接到数据库。但当我在Action类中放入相同的代码时,它给出了一个异常。 调试显示,它在我调用“Session”对象的行中出现异常。 下面给出了我的代码片段和堆栈跟踪 package net.sarah.struts2; import java.util.List; import com.fours
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";
}
package net.sarah.struts2;
导入java.util.List;
导入com.fourspaces.couchdb.Database;
导入com.fourspaces.couchdb.Document;
导入com.fourspaces.couchdb.Session;
导入com.fourspaces.couchdb.ViewResults;
公共类登录{
私有字符串用户名;
私有字符串密码;
公共最终字符串LOGIN\u ID=“loginid”;
公共最终字符串LOGIN_PWD=“passwd”;
公共字符串execute(){
试一试{
Session dbSession=新会话(“localhost”,5984);
字符串dbname=“hello world”;
List listofdb=dbSession.getDatabaseNames();
System.out.println(listofdb);
Database db=dbSession.getDatabase(dbname);
ViewResults=db.getAllDocuments();
//System.out.println(results.toString());
List studentDocuments=results.getResults();
用于(文档couchDocument:studentDocuments){
字符串id=couchDocument.getJSONObject().getString(“id”);
Document studentRow=db.getDocument(id);
System.out.println(studentRow.get(“_id”);
if(studentRow.containsKey(登录ID)){
if(登录ID等于(用户名)和登录密码等于(密码))
返回“成功”;
其他的
返回“错误”;
}
}
}
捕获(例外e)
{
e、 getCause();
}
返回“结果”;
}
堆栈跟踪-
信息:检测到AnnotationActionValidatorManager,正在初始化它。。。
2014年11月25日上午10:55:03 org.apache.catalina.core.StandardWrapper
严重:路径为[/Demo]的上下文中Servlet[default]的Servlet.service()引发了具有根本原因的异常[java.lang.reflect.InvocationTargetException]
java.lang.ClassNotFoundException:com.fourspaces.couchdb.Session
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
位于net.sarah.struts2.LoginAction.execute(LoginAction.java:23)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
在com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
位于com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
在com.opensymphony.xwork2.intercept.DefaultWorkflowIntercept.doIntercept(DefaultWorkflowIntercept.java:221)
在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
在com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling上(DefaultActionInvocation.java:224)
在com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling上(DefaultActionInvocation.java:223)
位于com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
位于com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
位于org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
在com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling上(DefaultActionInvocation.java:224)
在com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling上(DefaultActionInvocation.java:223)
位于com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
在com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
在com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling上(DefaultActionInvocation.java:224)
在com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling上(DefaultActionInvocation.java:223)
位于com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
在com.opensymphony.xwork2.interceptor.parameters-sinterceptor.doIntercept(parameters-sinterceptor.java:184)
在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
在com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling上(DefaultActionInvocation.java:224)
在com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling上(DefaultActionInvocation.java:223)
位于com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
在com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept上(StaticParametersInterceptor.java:105)
在com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling上(DefaultActionInvocation.java:224)
在com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)确保您在
web inf/lib
中有所有必需的库
Th