我正在学习Java EE和Maven,我正在尝试一个简单的dopost。但我得到了(这个URL不支持HTTP方法POST)可能是什么问题 的login.jsp
<form action="/login" method="post" >
<div class="login-container less">
<div class="well-login">
<div class="control-group">
<div class="controls">
<div>
<input type="text" placeholder="Username or Email" class="login-input user-name">
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<div>
<input type="password" placeholder="Password" class="login-input user-pass">
</div>
</div>
</div>
<div class="clearfix">
<button class="btn btn-inverse login-btn" type="submit" value="submit">Login</button>
</div>
<div class="remember-me">
<input class="rem_me" type="checkbox" value=""> Remeber Me
</div>
</div>
</div>
</form>
登录Servlet
package webapp;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = "/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
super.doPost(request, response);
response.getWriter().println("success");
}
}
看不到错误的来源?从我这一切来看,每一件事都显得很蠢 SOS
答案 0 :(得分:4)
删除此行:
super.doPost(request, response);
实现doPost
基类中的HttpServlet
方法无条件地返回HTTP错误(HTTP 1.1为405,HTTP 1.0为400)。 doGet
,doPut
和doDelete
都以相同的方式实施。
如果您希望servlet支持POST请求,请覆盖doPost
但不要调用超类方法。
答案 1 :(得分:0)
当您的页面位于web-inf
文件夹中时,需要保护其免受Http访问的资源放在WEB-INF下,并且过滤器附加到视图(jsp/html/.doc/.txt/xml)
以阻止直接访问。
所以在doGet()
中使用getServletContext()
request.getServletContext().getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
由于您不会从doPost()
方法导航任何其他网页,因此请使用include()
方法
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("<h1>success</h1> ");
request.getServletContext().getRequestDispatcher("/WEB-INF/views/login.jsp").include(request, response);
}
删除你在dopost()内部覆盖super.doPost(request, response);
以及<form action="login" method="post" >
删除&#34; /&#34;从登录