我在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(未知来源)
答案 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)
确保您的方法validateuname
存在于您的验证类中。
确保已编译该类,将其保存到服务器中的正确项目目录(似乎您正在使用 Tomcat ),并且已重新启动服务器。请注意,在每个新方法声明中,您都需要重新启动服务器。