Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.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:doPost被调用,但不是doGet_Java_Jsp_Servlets - Fatal编程技术网

Javaservlet:doPost被调用,但不是doGet

Javaservlet:doPost被调用,但不是doGet,java,jsp,servlets,Java,Jsp,Servlets,我有一个名为LoggingServlet的日志servlet,它覆盖doGet和doPost方法,如下所示: public class LoggingServlet extends HttpServlet { private static final long serialVersionUID = 2L; @Override public void doPost(HttpServletRequest request, HttpServletResponse respon

我有一个名为LoggingServlet的日志servlet,它覆盖doGet和doPost方法,如下所示:

public class LoggingServlet extends HttpServlet {
    private static final long serialVersionUID = 2L;

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        ...do stuff here
    }

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        ...do stuff here
    }
我的web.xml看起来像这样:

  <servlet>
    <servlet-name>LoggingServlet</servlet-name>
    <servlet-class>com.example.servlets.LoggingServlet</servlet-class>
  </servlet>    

  <servlet-mapping>
    <servlet-name>LoggingServlet</servlet-name>
    <url-pattern>/LoggingServlet/*</url-pattern>
  </servlet-mapping>

日志servlet
com.example.servlets.LoggingServlet
日志servlet
/日志servlet/*
这是实现一些JavaScript的jsp片段:

<script>
    document.getElementById("ad_div").onmousedown = function () {
        xmlhttp=new XMLHttpRequest();
        xmlhttp.open("GET","/LoggingServlet?bookie_id=<%= request.getParameter("id") %>&app_id=<%= request.getParameter("app_id") %>",true);
        xmlhttp.send();
        return true;
    };
</script>

document.getElementById(“ad_div”).onmousedown=function(){
xmlhttp=新的XMLHttpRequest();
open(“GET”,“/LoggingServlet?bookie_id=&app_id=”,true);
xmlhttp.send();
返回true;
};
我还有另一个jsp,它通过Post请求调用LoggingServlet。 现在我的问题是:

  • Post请求工作正常,没有任何问题
  • 但是,来自javascript的Get请求返回404错误。我还手动将完整的url输入到webbrowser中,得到了一个404错误

  • 这怎么可能呢?

    servlet映射到

    /LoggingServlet/*
    
    你的网址是

    /LoggingServlet?bookie_id...
    
    因此,URL在要映射到servlet的查询字符串之前缺少一个尾随斜杠。这是必须的

    /LoggingServlet/?bookie_id...
    
    这也只有在webapp是根webapp时才起作用。如果不是,您还需要预先设置应用程序的上下文路径:

    /MyWebApp/LoggingServlet/?bookie_id...
    

    servlet被映射到

    /LoggingServlet/*
    
    你的网址是

    /LoggingServlet?bookie_id...
    
    因此,URL在要映射到servlet的查询字符串之前缺少一个尾随斜杠。这是必须的

    /LoggingServlet/?bookie_id...
    
    这也只有在webapp是根webapp时才起作用。如果不是,您还需要预先设置应用程序的上下文路径:

    /MyWebApp/LoggingServlet/?bookie_id...
    

    您在浏览器窗口中输入了什么URL?您使用哪个URL发出
    POST
    请求?我没有发现任何错误。尝试从浏览器中打开servlet路径(这将调用
    doGet()
    )。当前的JS代码假定webapp已部署到上下文根目录。这是真的吗?如果没有,那么这就解释了你的根本问题。对不起,这里的初学者:看不到根本问题!:(@BalusC:就是这样。上下文完全错了。谢谢你的答案。给我一个完整的答案,我会接受。你在浏览器窗口中输入了什么URL?你用哪个URL发出
    POST
    请求?我没有看到任何错误。试着从浏览器打开servlet路径(这将调用
    doGet()
    )。当前的JS代码假设webapp部署到了上下文根目录下。这是真的吗?如果不是,那么这就解释了你的根目录问题。对不起,这里的初学者:看不到根目录问题!:(@BalusC:就是这样。上下文完全错了。谢谢你的回答。给我一个完整的答案,我会接受的。