有没有一种简单的方法来获取java中的URL

时间:2012-07-27 15:30:53

标签: url request.querystring

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

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

是否有一种简单的方法来获取值和整个URL?即使我可以在'?'之后获取所有内容,我也知道基本URL并且可以构建一个新的String来检查格式是否可以从'?'获取之后。请帮助这部分。感谢。

2 个答案:

答案 0 :(得分:1)

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

<%=request.getRequestURL()%>

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

  

如何获取8位数代码和'u'的值?

可以通过操纵StringBuffer来分解?和&amp;对于8位数代码。 或者使用其他请求方法, ServletRequest.getParameter(java.lang.String name)

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

答案 1 :(得分:0)

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

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

for(String paramName : request.getParameterNames()) {
    if(!paramName.equalsIgnoreCase("u"))
        code = paramName;
}
相关问题