在java servlet上运行时出现错误405
我已经创建了我的第一个servlet,但似乎我做得不对。 下面是我的servlet类:在java servlet上运行时出现错误405,java,tomcat,servlets,web.xml,Java,Tomcat,Servlets,Web.xml,我已经创建了我的第一个servlet,但似乎我做得不对。 下面是我的servlet类: @SuppressWarnings("serial") public class Login extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
@SuppressWarnings("serial")
public class Login extends HttpServlet
{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println("this is a sample");
out.flush();
super.doPost(req, response);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
super.doGet(req, resp);
}
}
这是我的web.xml:
<web-app 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"
version="3.0">
<display-name>Login</display-name>
<description>
This is a simple web application with a source code organization
based on the recommendations of the Application Developer's Guide.
</description>
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.hudly.servlets.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servle
我应该怎么做才能解决这个问题呢?从源代码中删除
super.doPost()
/super.doGet()
,然后编写实现。删除super.doPost()
/super.doGet())
并编写实现。您可能更喜欢将GET和POST处理组合到一个方法中
这可能更好的原因是,典型的表单/或请求处理生命周期在GET和POST之间有许多共同部分;可以通过检查req.getMethod()
是否等于POST来切换不同的部分
例如:
abstract public class BaseServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
processRequest( req, response);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
{
processRequest( req, response);
}
abstract protected void processRequest (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException;
}
在表单控制器中,processRequest()
将执行如下操作:
protected void processRequest (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Form form = createForm();
bindAndValidate( form, req);
if (isSubmit()) { // POST-specific.
boolean complete = handleSubmit( form, req, resp);
if (complete)
return;
}
showForm( form, req, resp);
}
如您所见,提交处理(检查它是否完全有效,并执行某些操作)是请求处理中唯一特定于POST的部分
表单应使用GET参数初始化,以便重定向到它们,不正确/无效的提交应重新显示表单。。因此,流是“BIND、SUBMIT、SHOW”,流的退出点位于“中间”。您可能更喜欢将GET和POST处理组合到一个方法中 这可能更好的原因是,典型的表单/或请求处理生命周期在GET和POST之间有许多共同部分;可以通过检查
req.getMethod()
是否等于POST来切换不同的部分
例如:
abstract public class BaseServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
processRequest( req, response);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
{
processRequest( req, response);
}
abstract protected void processRequest (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException;
}
在表单控制器中,processRequest()
将执行如下操作:
protected void processRequest (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Form form = createForm();
bindAndValidate( form, req);
if (isSubmit()) { // POST-specific.
boolean complete = handleSubmit( form, req, resp);
if (complete)
return;
}
showForm( form, req, resp);
}
如您所见,提交处理(检查它是否完全有效,并执行某些操作)是请求处理中唯一特定于POST的部分
表单应使用GET参数初始化,以便重定向到它们,不正确/无效的提交应重新显示表单。。因此,流是“BIND,SUBMIT,SHOW”,流的退出点“在中间”。不要调用super.doPost(),也不要调用super.doGet()。它们的存在只是为了被重写。不要调用super.doPost()或super.doGet()。它们的存在只是为了被覆盖。