【发布时间】:2013-05-16 06:02:06
【问题描述】:
我正在构建一个简单的网络应用程序并尝试创建一个登录页面。该页面由一个 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,而不是相反。您可以/应该使用 Request Dispatcher 将 POST 数据从 JSP 发送到 Servlet 吗?以及如何从 Servlet 访问这些参数? (对于 POST 是否有等效的 request.getParameter()?)
我知道使用 POST 仍然不安全,但它比在查询字符串中包含密码要好得多,我稍后会考虑安全性。
对于这个基本问题,我深表歉意,我在网上找到了很多教程,但似乎没有一个能回答这个具体问题。谢谢。
【问题讨论】:
-
使用 POST 时遇到什么错误?
-
我在使用 POST 时遇到的错误是 HTTP Status 405 - HTTP method POST is not supported by this URL
-
请多做一点研究。您可以将 “HTTP 状态 405 - 此 URL 不支持 HTTP 方法 POST” 复制粘贴到 Google 搜索输入字段中,甚至只是在 Stack Overflow 上(右上角)。
标签: java jsp servlets netbeans