我正在为一个网站开发电子邮件验证链接。当用户注册并填写完他们的个人数据(并且通过了所有检查)时,他们会被发送到一个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"的值是来自DB的屏蔽用户id。我不明白它怎么会要求你初始化整个URL来获得值,而你在从URL中获得值之前并不知道值是什么。
有没有一种简单的方法来获取值和整个URL?即使我可以在"?"之后得到所有东西,我知道基本URL,如果可以从"?"以及之后。请帮我做那个部分。谢谢
接口HTTPServlet请求包含一个方法getRequestURL,该方法返回一个StringBuffer,您可以使用它来检查整个URL的格式。您可以在jsp页面中获得它,其中包含:
<%=request.getRequestURL()%>
如果你使用的是上面指定的请求格式,那么你的第二个问题:
如何获取8位代码和"u"的值?
可以通过操纵StringBuffer在?和&用于8位代码。或者使用另一种请求方法,Servlet请求.getParameter(java.lang.String名称)
不过,为了获取每个参数,我不确定它将如何处理8位代码中的未命名参数。让我知道情况如何。
不要将8位代码视为未命名的参数。把它想象成一个没有值的参数。
request.getParameterNames()将为您提供8位数的代码以及"u"。所以你可以这样循环:字符串代码=";
for(String paramName : request.getParameterNames()) {
if(!paramName.equalsIgnoreCase("u"))
code = paramName;
}