2012-07-27 2 views
0

나는 웹 사이트에 대한 이메일 유효성 검사 링크를 위해 노력하고 있습니다. 사용자가 자신의 개인 데이터를 등록하고 완료하면 (그리고 모든 검사를 통과하면) 사용자 이름으로 입력 한 주소로 전자 메일이 전송되었음을 알리는 JSP 페이지로 보내지고 클릭하여 확인하는 링크가 표시됩니다 이메일 주소. 그 부분이 모두 훌륭하고 훌륭하기 때문에 링크를 생성합니다 (현재는 내 로컬 호스트 만 사용하고 있습니다). 예를 들어 http://localhost:9999/javawork/msc/validate/?6FRQ8RAT&u=1s3w1Iih64egX01188HT처럼 보입니다. 링크를 클릭하면 유효성 검사 폴더의 JSP 페이지 index.jsp으로 이동합니다. 이 시점에서 전체 URL을 가져 와서 함수에 보내 URL이 제대로 형식화되었는지 (보안상의 이유로) 확인해야합니다. 그것이 통과하고 형식이 좋으면, 나는 8 자리 코드를 '?' 또한 'u'의 값. 그런 다음 DB에있는 값과 일치하는지 확인하는 함수에 값을 보냅니다. 그렇다면 DB 레코드를 유효 날짜로 업데이트하여 전자 메일 주소의 유효성을 확인했습니다.거기에 자바에서 URL을 얻을 수있는 간단한 방법입니다

제 질문은 먼저 형식을 확인하기 위해 전체 URL을 어떻게 잡아야합니까? 둘째, 어떻게 8 자리 코드와 'u'값을 가져 옵니까? 온라인으로 살펴본 결과 모든 예제에서 여러 함수 나 클래스를 만들고 URL 클래스를 사용해야했습니다. 그리고 그들은 모두 URL 객체의 인스턴스를 만들고 전체 URL을 사용하여 초기화하려고합니다. 하지만 그것은 정적 URL이 아니며, 검사 할 임의의 8 자리 코드를 생성하기 때문에 등록하는 모든 사용자마다 다를 것이며 'u'값은 DB의 마스크 된 사용자 ID입니다. URL에서 가져올 때까지 값이 무엇인지 알지 못할 때 값을 가져 오기 위해 전체 URL을 초기화해야하는 방법을 이해할 수 없습니다.

값과 전체 URL을 가져 오는 간단한 방법이 있습니까? '?'뒤에 모든 항목을 가져올 수 있다고해도 기본 URL을 알 수 있으며 '?'문자를 통해 얻을 수있는 형식을 확인하기 위해 새 String을 작성할 수 있습니다. 이후. 그 부분을 도와주세요. 감사.

+0

클라이언트 또는 단순히'.jsp' 페이지에서 요청을 처리하기 위해 서블릿을 작성하고 있습니까? –

+0

그냥 JSP 페이지. DB에 대한 값을 확인하기 위해 Java 클래스에 이미 함수가 있습니다.URL 값을 얻기 위해 jsp 페이지가 필요하고, 부울 값을 반환하는 함수에 전달한 다음 JSP 페이지에 true가 반환되면 성공 메시지가 표시되고 false가 반환되면 실패 메시지가 표시됩니다. – kei23th

답변

1

인터페이스 HTTPServletRequest에는 전체 URL의 형식을 확인할 때 사용할 수있는 StringBuffer을 반환하는 getRequestURL 메서드가 포함되어 있습니다.

당신이, 당신의 두 번째 질문은 위에서 지정한 요청의 형식을 사용하는 경우
<%=request.getRequestURL()%> 

:

가 어떻게 8 자리를 잡아 않는 당신과 JSP 페이지에, 그것을 얻을 수 코드 및 'u'의 값은 무엇입니까?

StringBuffer를? 8 자리 코드는 &입니다. 또는 다른 요청 방법을 사용, ServletRequest.getParameter(java.lang.String name)

하지만, 내가 그것을 8 자리 코드의 이름이 매개 변수를 처리 끝낼 방법 확실하지 않다, 각 매개 변수를 잡아합니다. 그게 어떻게되는지 알려줘.

+0

그것은 내가 필요한 것입니다. 전체 URL이 있으면 '?' 네가 말했듯이. 정말 고마워. – kei23th

+1

'<% = request.getRequestURL() %>'는 나를 '?' 그러나 '?' 또는 후에 anythnig. 어떤 생각을 쿼리 문자열 매개 변수를 잡는 방법도? – kei23th

+0

당신은 훌륭한 점을 내 실수라고 생각합니다. 내가 제공 한 두 번째 방법은 트릭을 수행합니다. [request.getParameterNames()] (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html)는 [요청과 함께 사용할 수있는 매개 변수 이름의 Enummeration을 반환합니다 .getParameter (java.lang.String name)] (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getParameter%28java.lang.String%29) 매개 변수와 그 값을 얻습니다. – OYRM

0

이름없는 매개 변수로 8 자리 코드를 생각하지 마십시오. 값이없는 매개 변수로 생각하십시오.

request.getParameterNames()는 "u"뿐만 아니라 8 자리 코드도 제공합니다. 그래서 이렇게 반복 할 수 있습니다 : String code = "";

for(String paramName : request.getParameterNames()) { 
    if(!paramName.equalsIgnoreCase("u")) 
     code = paramName; 
} 
관련 문제