Javaservlet不工作
如何将JSP映射到servlet?我在JSP页面中创建了一个登录表单,然后通过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
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