0

我正在为网站制作电子邮件验证链接。当用户注册并填写完他们的个人数据(并且通过了所有检查)时,他们会被发送到一个 jsp 页面,说明一封电子邮件已发送到他们作为用户名输入的地址,并带有一个链接以单击以验证电子邮件地址。所以这部分一切都很好,我生成了链接(现在只使用我的本地主机),它看起来像这样作为示例http://localhost:9999/javawork/msc/validate/?6FRQ8RAT&u=1s3w1Iih64egX01188HT。当他们单击链接时,它会转到 jsp 页面index.jsp在验证文件夹中。此时我需要获取整个 URL 并将其发送到函数以确保 URL 格式正确(出于安全目的)。如果通过并且格式没问题,我需要在“?”之后立即获取 8 位代码。还有'u'的值。然后,我将这些值发送到一个函数,检查它们是否与我们数据库中的内容匹配,如果匹配,我会使用验证日期更新数据库记录,以便我们知道他们已经验证了他们的电子邮件地址。

所以我的问题是首先,如何抓取整个 URL 以检查格式,其次,如何抓取 8 位代码和 'u' 的值?我一直在网上查找,所有示例都需要创建多个函数或类,并使用 URL 类。他们都希望我创建一个 URL 对象的实例并使用整个 URL 对其进行初始化。但它不是静态 URL,每个注册用户都会有所不同,因为它会生成一个随机的 8 位代码进行检查,而“u”的值是来自数据库的屏蔽用户 ID。我不明白它如何要求您初始化整个 URL 以获取值,当您在从 URL 获取值之前不知道值是什么时。

有没有一种简单的方法来获取值和整个 URL?即使我可以在“?”之后获取所有内容,我也知道基本 URL,并且可以构建一个新字符串来检查格式是否可以从“?”中获取 之后。请帮忙处理那部分。谢谢。

4

2 回答 2

1

接口 HTTPServletRequest 包含一个方法getRequestURL,它返回一个StringBuffer,您可以使用它来检查整个 URL 的格式。你可以在一个jsp页面中得到它:

<%=request.getRequestURL()%>

如果您使用上面指定的请求格式,那么您的第二个问题:

如何获取 8 位代码和“u”的值?

可以通过操纵 StringBuffer 在 ? 和 & 用于 8 位代码。或者使用另一种请求方法, ServletRequest.getParameter(java.lang.String name)

但是,要获取每个参数,我不确定它最终将如何处理 8 位代码的未命名参数。让我知道情况如何。

于 2012-07-27T15:51:10.377 回答
0

不要将 8 位代码视为未命名的参数。将其视为没有值的参数。

request.getParameterNames() 将为您提供 8 位代码以及“u”。所以你可以像这样循环: String code = "";

for(String paramName : request.getParameterNames()) {
    if(!paramName.equalsIgnoreCase("u"))
        code = paramName;
}
于 2013-11-19T16:17:39.077 回答