0

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

<%@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'}}");

  }

%>

严重: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.JspServlet.serviceJspFile(JspServlet.java:313) 在 org.apache.jasper.servlet 的 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)。 JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache .

4

3 回答 3

1

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代码)。对此问题和解决方案有进一步的解释:

于 2012-09-28T07:31:51.777 回答
0

在这条线上抛出异常

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

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

  ArrayList<String> names=new Validation().validateuname(username,password);
于 2012-09-28T07:35:15.373 回答
0
  1. 确保您的方法validateuname存在于您的 Validation 类中。

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

于 2012-09-28T08:55:04.047 回答