首页 文章

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

提问于
浏览
0

我在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; at org.apache.jsp.check_005flogin_jsp._jspService(check_005flogin_jsp.java:61)at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)at javax.servlet.http.HttpServlet.service(HttpServlet.java) :717)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)位于org.apache.jasper.servlet的org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) . 位于org.apache的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)的javax.servlet.http.HttpServlet.service(HttpServlet.java:717)上的JspServlet.service(JspServlet.java:260) .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.valves.ErrorReportValve的org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) .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)at org.apache.tomcat.util.net.JIoEndpoint $ java.lang.Thread.run上的Worker.run(JIoEndpoint.java:489)(未知来源)

3 回答

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

  • 0

    在这条线上抛出异常

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

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

    ArrayList<String> names=new Validation().validateuname(username,password);
    
  • 0
    • 确保您的Validation类中存在方法 validateuname .

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

相关问题