Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javaservlet不工作_Java_Jsp_Servlets - Fatal编程技术网

Javaservlet不工作

Javaservlet不工作,java,jsp,servlets,Java,Jsp,Servlets,如何将JSP映射到servlet?我在JSP页面中创建了一个登录表单,然后通过HttpPost将其发送到servlet,以便对其进行验证。然而,我不断地发现这个错误: javax.servlet.ServletException:实例化servlet类时出错 practicea.OnServletLogin 根本原因 java.lang.ClassNotFoundException: practicea.OnServletLogin org.apache.catalina.loader.Weba

如何将JSP映射到servlet?我在JSP页面中创建了一个登录表单,然后通过
HttpPost
将其发送到servlet,以便对其进行验证。然而,我不断地发现这个错误:

javax.servlet.ServletException:实例化servlet类时出错 practicea.OnServletLogin

根本原因

java.lang.ClassNotFoundException: practicea.OnServletLogin
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:744)
不知道为什么,但这是我的Home.jsp表单:

<body>
    <form action="login" method="post">
        name: <input type="text" name="userName"><br/>
        password<input type="password" name="userPassword">
        <input type="submit" value="login">
    </form>
</body>
这是我的web.xml,以便我可以执行映射

<display-name>practicea</display-name>

  <servlet>
    <servlet-name>loginServlet</servlet-name>
    <servlet-class>practicea.OnServletLogin</servlet-class>
 </servlet>

 <servlet-mapping>
    <servlet-name>loginServlet</servlet-name>
    <url-pattern>/login</url-pattern>
 </servlet-mapping>

您的
OnServletLogin.class
是否在tomcat类路径上?如果我在ubuntu上运行eclipse,是否需要在tomcat类路径上设置servlet?如果我只是在JSP文件中单独实现登录代码(没有servlet),那么它可以完美地部署和运行。相对于JSP,您的OnServletLogin.class在哪里?
ClassNotFoundException
基本上是项目结构后的一些路径问题如果您的项目结构是Tomcat本身的结构,问题是您只有
OnServletLogin.java
和没有
OnServletLogin.class
,而且它不在正确的位置。应该在“web inf\classes\your package name”下。如果这是您的Eclipse结构,那么我不知道。
package practicea;

public class OnServletLogin extends HttpServlet{
    protected void doPost(HttpServletRequest req, HttpServletResponse res )
        throws ServletException,IOException
    {
        String user = req.getParameter("userName");
        String pass = req.getParameter("userPassword");

        PrintWriter pw = res.getWriter();
        res.setContentType("text/html");
        if(user.equals("h") && pass.equals("2")) {
            pw.println("Success");
        } else {
            pw.println("fail");
        }
        pw.close();
    }
}
<display-name>practicea</display-name>

  <servlet>
    <servlet-name>loginServlet</servlet-name>
    <servlet-class>practicea.OnServletLogin</servlet-class>
 </servlet>

 <servlet-mapping>
    <servlet-name>loginServlet</servlet-name>
    <url-pattern>/login</url-pattern>
 </servlet-mapping>
String action = request.getParameter("login"):
String username = request.getParameter("userName");
String password = request.getParameter("userPassword");

if(action.equals("login") {
    if(username.equals("h") && password.equals("2") {
         out.print("success");        
    } else {
         out.print("fail");
    }
}

<body>  .... </body>
practicea
:
:....src
:     :..practicea
:            :... OnServletLogin.java
:
:....WebContent
      :..Home.jsp
      :..WEB-INF
         :..web.xml