java使用POST将参数从JSP发送到Servlet
我正在构建一个简单的web应用程序,并尝试创建一个登录页面。该页面由一个JSP和一个加载Servlet的表单组成
我已使用GET方法使表单正常工作:
JSP如下所示:
<form method="get" action="Login">
Email:<input name="email"/>
Password:<input name="password"/>
<input type="Submit" value="Log in"/>
并在Servlet中:
@WebServlet(name = "Login", urlPatterns = {"/Login"})
public class Login extends HttpServlet {
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
//Assign variables from the request parameters
String loginFormEmail = request.getParameter("email");
String loginFormPassword = request.getParameter("password");
这段代码可以工作,但它在URL字符串中包含用户名和密码,因此这显然不是一个好的做法。我试图用POST来代替,但是我得到了一个错误。(HTTP状态405-此URL不支持HTTP方法POST)
我需要知道如何使用POST将参数从JSP发送到Servlet。我认为这可能涉及使用RequestDispatcher对象,但我找到的所有教程都解释了如何使用RequestDispatcher将数据从Servlet发送到JSP,而不是相反。您是否可以/应该使用请求调度器将POST数据从JSP发送到Servlet?如何从Servlet访问这些参数?(POST是否有一个等效的request.getParameter())
我知道使用POST仍然是不安全的,但这比在查询字符串中包含密码要好得多,稍后我会考虑安全性
对于这个基本的问题,我在网上找到了很多教程,但是没有一个能回答这个问题。多谢各位
# 1 楼答案
试试看
注意:
method
而不是type
用于指定GET/POST但它实际上并不比使用GET更“安全”。它们仍以明文形式出现在帖子正文中。如果你想让它安全,请确保使用HTTPS
编辑
您现在已经编辑了您的问题,似乎您使用的是
method
,而不是type
。因此,如果在将其更改为POST
后仍有错误,请指定您得到的错误Edit2
您指定您将收到
HTTP method POST is not supported by this URL
错误。这意味着您的servlet不接受POST
方法。这很可能意味着您继承了一些只接受GET
的基本servlet。查看servlet的所有代码会很有帮助# 2 楼答案
尝试重写HttpServlet方法doPost()和doGet():
# 3 楼答案
我建议你用
doPost()
方法代替processRequest()
# 4 楼答案
重写} 方法
Login
类中的^{这可能需要您更改可能被重写的
service()
方法,以调用processRequest()
方法,而不考虑HTTP方法。这取决于Login
类实现的其余部分,您还没有展示它们然后更改
<form>
以发出POST
请求# 5 楼答案
在元素中使用method=“POST”属性