JSP不去servlet

The*_*nor -1 html java jsp servlets

我有一个.jsp页面,其形式如下:

    <form name="myForm" method="post" action="LoginServlet">
    <div class="form-group">
        <label for="exampleXPID">userid</label>
            <div class="input-group">
                <span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-user"></span></span>
                    <input  type="text" class="form-control" name="exampleXPID" id="exampleXPID" placeholder="XPID" required />
                </div>
                <span id="usernameError" style="color:red;"></span>
                </div>
                <div class="form-group">
                    <label for="exampleInputPassword1">Password</label>
                    <div class="input-group">
                        <span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-star"></span></span>
                            <input type="password" class="form-control" name="exampleInputPassword1" id="exampleInputPassword1" placeholder="Password" required />
                    </div>
                <span id="passwordError" style="color:red;"></span>
            </div>  
            <hr/>
        <button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-lock"></span>Login</button>
        <a href="#" style="float:bottom; max-width: 100%;" data-toggle="popover" data-trigger="hover" data-content="Click here to reset your existing Password" data-placement="bottom"><span class="glyphicon glyphicon-question-sign"></span>Reset your Password</a>
    <p><br></p>
</form>
Run Code Online (Sandbox Code Playgroud)

我想servlet在Login按钮的单击上调用a 。该servlet名称是:LoginServlet中,我有以下几点:

import java.io.PrintWriter;
import java.io.IOException;
import java.util.*;

import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.ws.rs.core.Response;

/**
* Servlet implementation class LoginServlet
*/
public class LoginServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    /**
    * Default constructor. 
    */
    public LoginServlet() {
        // TODO Auto-generated constructor stub
    }

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub

System.out.println("inside servlet 2");
// Set the MIME type for the response message
response.setContentType("text/html");

// Write to network
PrintWriter out = response.getWriter();
    String XPID = request.getParameter("exampleXPID");
    String password = request.getParameter("exampleInputPassword1");
    out.println("<html><body><script>alert("+XPID+")</script></body></html>");
    }

}
Run Code Online (Sandbox Code Playgroud)

当我运行该项目时,它会转到第一页,当我单击“登录”按钮时,出现错误404,提示未找到源。我LoginServlet被放置在与以下项目相同的项目中:在此处输入图片说明

任何帮助,不胜感激!

HTTP状态500-错误:

    type Exception report

message Error instantiating servlet class com.javacodegeeks.example.messenger.service.myservlet

description The server encountered an internal error that prevented it from fulfilling this request.

exception 
javax.servlet.ServletException: Error instantiating servlet class com.javacodegeeks.example.messenger.service.myservlet
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    java.lang.Thread.run(Thread.java:745)



root cause 
java.lang.ClassNotFoundException: com.javacodegeeks.example.messenger.service.myservlet
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    java.lang.Thread.run(Thread.java:745)



note The full stack trace of the root cause is available in the Apache Tomcat/7.0.47 logs.
Run Code Online (Sandbox Code Playgroud)

这是我的web.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
<!-- This web.xml file is not required when using Servlet 3.0 container,
    see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>com.javacodegeeks.example.messenger</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
<servlet>
    <description></description>
    <display-name>LoginServlet</display-name>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.javacodegeeks.example.messenger.service.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

Nom*_*lva 5

看来您的Servlet在web.xml或via中未正确映射annotation。

首先检查您web.xml的映射是否正确:假设您LoginServlet在aa.bb.cc包中。如果是这样的话:

  <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>
         aa.bb.cc.LoginServlet
  </servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

我看不到您的JSP文件有任何问题。因此,转到您的servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    System.out.println("inside servlet 2");
    String XPID = request.getParameter("exampleXPID");
    String password = request.getParameter("exampleInputPassword1");

    PrintWriter out = response.getWriter();
    out.println("<html><body><script>alert("+XPID+")</script></body></html>");
}
Run Code Online (Sandbox Code Playgroud)

更新

您的web.xml不正确..应该是:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.javacodegeeks.example.messenger.service.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

更新2

另一个问题是您导入了错误的Response类:

import javax.ws.rs.core.Response;
Run Code Online (Sandbox Code Playgroud)

它应该是:

import javax.servlet.http.HttpServletResponse;
Run Code Online (Sandbox Code Playgroud)

希望它应该工作。