Javaservlet:doPost被调用,但不是doGet
我有一个名为LoggingServlet的日志servlet,它覆盖doGet和doPost方法,如下所示: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
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。
现在我的问题是:
这怎么可能呢?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:就是这样。上下文完全错了。谢谢你的回答。给我一个完整的答案,我会接受的。