在jsp页面中调用java方法时,它显示了servlet.service异常nosuchmethod

时间:2012-09-28 07:29:00

标签: java jsp

我在jsp页面中调用java方法,显示servlet.service异常nosuch方法异常或类

<%@page import="java.util.ArrayList"%>
<%@page import="Model.Validation"%>
<%
String username=request.getParameter("uname");
String password=request.getParameter("password");
System.out.print(username+"\nhellloo\n"+password+"\n re\n");
ArrayList<String> names=Validation.validateuname(username,password);
String name=(String)names.get(0);
String role=(String)names.get(1);
 if(role.equals("Administrator"))
 {
out.print("{success:true,errors:{reason:'Administrator'},uname:{name:'"+name+"'}}");

}else if(role.equals("User"))
 {
out.print("{success:true,errors:{reason:'User'}}");

}else
 {
 out.print("{success:false,errors:{reason:'User name or Password is wrong, please try              again'}}");

  }

%>
  

SEVERE:Servlet jsp的Servlet.service()抛出异常   java.lang.NoSuchMethodError:Model.Validation.validateuname(Ljava / lang / String; Ljava / lang / String;)Ljava / util / ArrayList;       在org.apache.jsp.check_005flogin_jsp._jspService(check_005flogin_jsp.java:61)       在org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)       在javax.servlet.http.HttpServlet.service(HttpServlet.java:717)       在org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)       在org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)       在org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)       在javax.servlet.http.HttpServlet.service(HttpServlet.java:717)       在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)       在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)       在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)       在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)       在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)       在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)       在org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)       在org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:602)       在org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489)       在java.lang.Thread.run(未知来源)

3 个答案:

答案 0 :(得分:0)

StackTrace告诉你没有方法

public class Validation {
    public static ArrayList<String> validateuname(String, String) {
        ArrayList<String> ls = new ArrayList<String>();
        //a nice implementation goes here!
        return ls; 
    }
}

检查这是否是有效的方法。如果您的方法正确,则重新编译代码并再次部署Web应用程序。


您的代码中存在一个主要问题,您不能使用scriptlet(jsps中<% ... %>内的Java代码)。关于这个问题和解决方案有进一步的解释:

答案 1 :(得分:0)

此行正在抛出异常

ArrayList<String> names=Validation.validateuname(username,password);

是验证引用吗?,如果它是对象的引用,请检查该类中的validatename()方法。从你的代码我可以说它不是你试图用类名称调用valudatename()的引用。 试试这个:

  ArrayList<String> names=new Validation().validateuname(username,password);

答案 2 :(得分:0)

  1. 确保您的方法validateuname存在于您的验证类中。

  2. 确保已编译该类,将其保存到服务器中的正确项目目录(似乎您正在使用 Tomcat ),并且已重新启动服务器。请注意,在每个新方法声明中,您都需要重新启动服务器。