java - 使用 POST 将参数从 JSP 发送到 Servlet

标签 java jsp servlets netbeans

我正在构建一个简单的网络应用程序并尝试创建一个登录页面。该页面由一个 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 仍然不安全,但它比在查询字符串中包含密码要好得多,稍后我会考虑安全性。

对基本问题表示歉意,我在网上找到了很多教程,但似乎没有一个能回答这个具体问题。谢谢。

最佳答案

尝试

<form method="POST" action="Login>

注意:使用 method 而不是 type 来指定 GET/POST。

但它并不比使用 GET 更“安全”。它们仍然以明文形式存在于帖子正文中。如果您希望其安全,请确保使用 HTTPS。

编辑

您现在已经编辑了您的问题,并且您似乎使用的是方法,而不是类型。因此,如果将其更改为 POST 后仍然出现错误,请指定您收到的错误。

编辑2

您指定收到此 URL 不支持 HTTP 方法 POST 错误。这意味着您的 servlet 不接受 POST 方法。这很可能意味着您正在继承一些仅接受 GET 的基本 servlet。查看 servlet 的所有代码将会很有帮助。

关于java - 使用 POST 将参数从 JSP 发送到 Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16670533/

相关文章:

java - 从 Maven 运行 gwt - IntelliJ

java - 为什么 Object.class 与 new Object().getClass() 不同?

java - 在 Struts2 中使用拦截器传输用户数据

java - JSP 函数 - 如何在 TLD 中声明 long 作为参数

java - JFrame 不显示使用宽度和高度变量

java - 当数字太大时如何修复溢出错误?

html - struts2 元素的布局页面出现不需要的边框

java - 通过servlet进入登录页面后,如何将用户名值放入欢迎页面?

java - JVM 如何对用户的请求使用react

tomcat - 如何在没有网络传输时间的情况下测量请求的执行时间?