java servlet ajax_结合使用AJAX和Servlet

我刚开始使用AJAX。我不确定很多事情,尽管我在网上找到了一些教程并开始工作。对于粘贴大量代码,我深表歉意,但是对于我哪里出错了,我并没有太多想法。谢谢您的帮助!:-)

这是我的JSP(仅javascript部分)和servlet代码:(之后是异常,后跟等效的是我将用于普通Java应用程序的Java代码):

JSP:

//--Function to get the xmlhttp object

function getHttpObject(){

var xmlhttp = null;

if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}

else if (window.ActiveXObject){xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}

else {alert("Your browser does not support XMLHTTP!");}

return xmlhttp;

}

function populateReply(str){

xmlhttp = getHttpObject();

xmlhttp.onreadystatechange=function(){

if(xmlhttp.readyState==4){

ajxfrm.chatresponse.value=xmlhttp.responseText;

}

}

xmlhttp.open("GET","NewServlet?chatinput="+str,true);

xmlhttp.send(null);

}

Servlet:

public class NewServlet extends HttpServlet implements Servlet {

NetworkAimlFacade aiml = null;

int status = 0;

String botName;

String param[];

GraphBuilder builder;

public NewServlet() throws Exception{

super();

aiml = new NetworkAimlFacade(param);

builder = aiml.getNetworkGraphBuilder();

builder.addDirectoryUnlessAlreadyAdded

(

"C:\\Program Files\\RebeccaAIML\\aiml\\annotated_alice"

);

builder.createGraph();

botName = builder.getBotPredicate("name");

}

private String handleRequest(String param){

return null;

}

public void destroy()

{

try{

aiml.destroy();

}catch(Exception e){

e.printStackTrace();

}

}

protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{

res.setContentType("text/xml");

res.setHeader("Cache-Control", "no-store, no-cache");

String input = "";

if(req.getParameter("chatinput") != null)

input = req.getParameter("chatinput");

try{

String response = builder.getResponse(input);

if(response!=null) res.getWriter().write(response);

else res.getWriter().write("No");

}catch(Exception e){

e.printStackTrace();

}

}

protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

}}

这是我得到的错误,而不是从servlet获得响应:

Apache Tomcat / 7.0.11-错误报告

HTTP状态500-

类型 例外报告

信息

描述 服务器遇到内部错误(),导致服务器无法满足此请求。

例外

javax.servlet.ServletException:实例化Servlet类NewServlet时出错

org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)

org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:394)

org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)

org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:188)

org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:302)

java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)

java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)

java.lang.Thread.run(Thread.java:619)

根本原因

java.lang.NullPointerException Ice.PropertiesI。(PropertiesI.java:250)

Ice.Util.createProperties(Util.java:29)

Ice.Util.initialize(Util.java:70)

Ice.Util.initialize(Util.java:49)

Ice.Util.initialize(Util.java:56)

rebecca.NetworkGraphBuilderAIML。(未知来源)

rebecca.NetworkAimlFacade。(未知来源)

NewServlet。(NewServlet.java:27)

sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

java.lang.reflect.Constructor.newInstance(Constructor.java:513)

java.lang.Class.newInstance0(Class.java:355)

java.lang.Class.newInstance(Class.java:308)

org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)

org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:394)

org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)

org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:188)

org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:302)

java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)

java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)

java.lang.Thread.run(Thread.java:619)

note注意 在Apache Tomcat / 7.0.11日志中可以找到根本原因的完整堆栈跟踪。

Apache Tomcat / 7.0.11

这是我在普通Java应用程序中使用的等效Java代码,它工作正常!

public class Console {

public static void main(String args[]) {

NetworkAimlFacade aiml = null;

int status = 0;

try {

aiml = new NetworkAimlFacade(args);

GraphBuilder builder =

aiml.getNetworkGraphBuilder();

builder.addDirectoryUnlessAlreadyAdded

(

"C:\\Program Files\\RebeccaAIML\\aiml\\annotated_alice"

);

builder.createGraph();

String botName =

builder.getBotPredicate("name");

String initialResponse =

builder.getResponse("connect");

System.out.println(botName + " says: " +

initialResponse);

while(true) {

System.out.print("You say> ");

BufferedReader br =

new BufferedReader(new

InputStreamReader(System.in));

String input = br.readLine();

if(input.equals("/exit")) {

break;

} else {

String response =

builder.getResponse(input);

System.out.println("=====================");

//Print out what Rebecca says.

System.out.println(botName + " says: " +

response);

}

}

aiml.destroy();

} catch(NetworkException e) {

e.printStackTrace();

status = 1;

} catch (Exception e) {

e.printStackTrace();

status = 1;

}

System.exit(status);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值