当前位置: 首页 > 知识库问答 >
问题:

Java类中URL参数的使用

尉迟宣
2023-03-14

我想做一个基本的“忘记密码”系统,我给每个用户随机生成的令牌,并存储在数据库中。用户必须在表单上输入他的电子邮件来请求密码重置的链接。然后,他收到一封带有特定链接的电子邮件,例如:http://localhost:8080/login/reset-password.jsp?token=fd6256666910438486e76760952ea71d,其中参数“token”在数据库中检索与他的电子邮件相关联的令牌值。

现在,我的问题是,如何在获取URL中的令牌值的同时更新密码?

我试图从URL请求参数,但我不知道这里缺少什么,因为当我调试时,它显示reset_token为NULL,因此,没有任何更新。请帮忙。

这是我的桌子:

CREATE TABLE user (
id bigint identity NOT NULL,
username varchar(50) NOT NULL,
email varchar(50) NOT NULL,
password varchar(50) NOT NULL,
attempts int DEFAULT 3,
state varchar(50) DEFAULT 'Active’,
reset_token varchar(50),
time_token TIMESTAMP,
PRIMARY KEY (id)
);

下面是我的servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String password = request.getParameter("password");
        String token = request.getParameter("token");



                ForgotPasswordHandler.UpdatePassword(password, token);

                String message = "Password changed!";
                request.setAttribute("message", message);
                request.getRequestDispatcher("reset-password.jsp?token=" + token).forward(request, response);   



    } 

这是ForgotPasswordHandler.java中的方法:

public static void UpdatePassword(String password, String token) throws SQLException {

            PreparedStatement ps = null;
            try
            {
                if (con == null){
                    System.out.println("Failed connection");
                } else {
                    ps = con.prepareStatement(
                        "UPDATE user SET password = ? WHERE reset_token = ?");

                    ps.setString(1,password);
                    ps.setString(2,token);

                    ps.executeUpdate();   

                   if (!con.getAutoCommit()) {
                      con.commit();
                   }
                }
            }
            catch (Exception e) {
                    e.printStackTrace(System.out);    
            } 
            finally {
                if (ps != null) {
                    ps.close();
                }
            }

共有1个答案

夏侯野
2023-03-14

因此,经过长时间的搜索,我发现token参数没有检索任何东西,因为在post请求中,它从主体而不是URL获取值,所以我简单地在表单中添加了一个隐藏的输入,如下所示:

<input type="hidden" name="token" value="<%= request.getParameter("token")%>">

而且效果很好。希望这对将来的人有所帮助。

 类似资料:
  • 在Java中,如何对url上的查询参数进行编码?我知道,这似乎是一个显而易见的问题。 有两个微妙之处我不确定: URL上的空格应该编码为"或"吗?在chrome中,如果我输入“http://google.com/foo=?bar我”chrome将其更改为编码 是否有必要/正确地将冒号":"编码为;?Chrome没有。 注意事项: 似乎不起作用,它似乎是用于编码要提交表单的数据。例如,它将空格编码为

  • 问题内容: 我将Express与Node一起使用,并且我有一个要求用户可以将URL请求为:。 这样的请求将返回JSON响应。 上述调用之前的JSON数据如下: 通过上述请求,响应JSON数据应为: 我已经配置了Express路由,如下所示: 但这是行不通的。我不确定如何传递多个参数,也就是说,我不确定是否正确的方法。是吗? 问题答案: 如果那不起作用,请尝试使用console.log(req.pa

  • jQuery获取地址栏url参数 获取url参数内容

  • 问题内容: 我正在尝试将URL作为php中的url参数传递,但是当我尝试获取此参数时我什么也没收到 我正在使用以下网址形式: 我正在努力通过: 但是什么也没回来。问题是什么? 问题答案: 不是函数或语言构造,而只是一个变量(数组)。尝试: 特别是,它是一个超全局变量:一个由PHP填充的内置变量,并且在所有作用域中都可用(您可以在没有global关键字的函数内部使用它)。 由于该变量可能不存在,因此

  • 问题内容: 在JavaScript中,我想将一个变量设置为URL的GET部分中参数的值。 因此在JavaScript中: 会是什么? 问题答案: 这是一些。

  • 首先我要感谢所有聪明的程序员。更新后反应路由器Dom我面临这个问题。在这里我想提到一件事,我是一个“类组件”爱好者。 然而,这是我反应的基础组件。 这是我的下一个组件 我的路线在这里: 有人能告诉我,我怎么能通过它的url参数从基础组件中获取后组件中的数据?"匹配"对象在当前的react-router-dom更新中不工作。我需要类组件的帮助。

  • 我有一个要求。你能建议一下实现这一目标的可能方法吗。 我想根据每个路由中传递的URL更改应用程序的主题。我正在使用以下技术。-前端:AngularJS-后端:节点。js 例如:localhost/x/关于localhost/y/关于 我通过使用Location传递参数,通过cookies实现了这些。登录时进行搜索。但我在所有路线上都需要那个主题参数。基于这个主题,我们需要改变。有人能提出可能的方法