2012-03-26 2 views
0

이것이 가능하지 않다고 생각하므로 완전히 새로운 방식으로 문제를 조사해야합니다.Java - 파일에서 읽을 때 동적으로 사용자 이름과 암호를 루프에 삽입하십시오.

내 Java 프로그램이 웹 양식에 연결하여 로그인합니다. 코드의 다른 부분에 사용자 이름과 비밀번호가 있습니다. HTML 양식에는 분명히 다른 입력 유형이 포함됩니다. 사용자 및 사이트에 따라 각 필드의 이름이 다르게 지정됩니다. 다음은 샘플 웹 양식의이 형태에서

<FORM METHOD=POST ACTION="/my.form"> 
Username: 
<INPUT NAME="username"> 
<BR> 
Password 
<INPUT TYPE="PASSWORD" NAME="password"> 

<INPUT TYPE="HIDDEN" NAME="my-hidden-name" VALUE="someValue"> 

<BR><INPUT TYPE="SUBMIT" VALUE="Login"> 
</FORM> 

NAME 필드는 무엇이든 될 수 있으며, 사이트 형태로 사이트를 변경합니다. 나는 예를 들어 필드를 저장하는 PROPERTIES 파일을 요구함으로써이 문제를 해결 왔 : 이것은 위의 필드의 절반을 작동

username 
password 
my-hidden-name=someValue 
SUBMIT=Login 

. 문제는 usernamepassword 필드입니다.

나는 이미 사용자 이름과 암호를 가지고 있으므로, 단지 if(currentField=="password") string=mypass123 일 수 있습니다. 그렇다면 누군가가 사용자 이름/암호 필드가 user1 또는 passwordField이라고하는 양식을 만들거나 기본적으로 내가 입력 한 것 이외의 양식을 만들 경우 어떻게해야합니까? if() !!

누구든지 이름을 조합하여 처리 할 수있는 방법을 제안 할 수 있으며 어떤 사용자 이름과 암호 필드인지 식별 ​​할 수 있습니까? 현재 코드는 다음과 같습니다.

//Read file logic here 
Properties formProps=getDataFromResource(pathToFormFieldsPropfile); 

if(null!=formProps) 
{ 
    //Gets a list of all the field names, eg "username", "password", "submit" 
    Enumeration<?> formFields=formProps.keys(); 
    while(formFields.hasMoreElements()) 
    { 
     String tempString=(String) formFields.nextElement(); //This gets the field name 
     query+=tempString //Will contain field name 
       +"="  //Used as a divider in the querystring, ie field=value 
       +formProps.get(tempString) //Value corresponding to field 
       //+ URLEncoder.encode((String) formProps.get(tempString),Charset.defaultCharset().toString()) //The value needs to be encoded for POST 
       +"&"; //The trailing one of these will have to be removed at the end 
    } 
} 

감사합니다.

답변

0

이 문제를 해결하기 위해이 문제를 해결할 수있는 방법을 찾아 냈습니다.하지만 이상은 아닙니다.

기본적으로 사용자는 PROPERTIES 파일의 첫 번째 및 두 번째 빈 항목으로 사용자 이름과 비밀번호를 가져야합니다.

내 코드에서 다음과 같은 카운터가 있습니다. if ((counter++)==0), insert username 다음에 if ((counter++)==1), insert password, 그 다음에 else leave it blank이옵니다.

이 작업은 필요한 작업이지만 이상적이지 않을 수 있습니다.

PS, 나는 기본 방법은 정렬되지 않은 목록에 저장, 그들은 모든 주문하고 있는지 확인하기 위해 사용자 정의 속성 클래스를 구현했습니다.

0

아마도 id 요소를 사용하여 사용자 이름과 비밀번호로 사용되는 필드를 검색 할 수 있습니다.

그렇지 않으면 사용자 이름 및 비밀번호 입력란에 몇 가지 이름 지정 규칙을 따르도록 요청해야 할 수도 있습니다.

어쩌면 항상 __username 및 __password (또는 이와 비슷한)로 시작할 수 있습니다.

+0

죄송하지만 "id 요소"는 무엇입니까? – eoinzy

+0

명명 규칙은 사이트가 이미 만들어져 있으므로 필드 이름이 이미 있습니다. 나는 최악의 최악에 오면, 나는 특성이 밑줄 또는 앞에 추가 뭔가 파일에 다음, 사용자 이름을 넣어 처리를 수행하고, 마지막으로 추가되는 말머리 물건을 손질하도록 강제 할 수 있습니다 가정합니다. 이미 내가 선택한 어떤 패턴 으로든 필드가 이미 시작된 웹 사이트가 있으면 문제가 있습니다. – eoinzy

관련 문제