2013-07-12 1 views
0

Java를 사용하여 작성한 웹 응용 프로그램, 데이터베이스 액세스를위한 JDBC, 뷰에 데이터를 전달하는 Struts2 및 지원을위한 jQuery가 있습니다. 보기 조작.Java, Struts2, jQuery : 다른 페이지로 리디렉션하지 않고 로그인 필드 유효성 확인

앱이 시작되면 Home.action이 실행되고 맨 위에 "로그인"링크가 포함 된 Home.jsp 페이지가 표시됩니다. 상단에는 '로그인'링크가 포함 된 다른보기가 있습니다.

사용자가 "SIGN IN"을 클릭하면 jQuery는 사용자 이름과 비밀번호 및 "로그인"텍스트 필드를 제공하는 숨겨진 창을 표시합니다.

여기 내 딜레마가 있습니다 ... 현재 "로그인"버튼을 클릭하면 Login.action이 실행되고 다시 Home.action으로 리디렉션됩니다. 그러나, 내가 정말로 원하는 것은 Login.action이 로그인을 수행하지만 동일한 페이지에 남아있는 것입니다. 사실 나는보기가 전혀 변경되거나 새로 고치기를 원하지 않습니다. 나는 단순히 로그인이 일어나기를 원하고 다른 모든 것은 동일하게 유지하기 만하면됩니다.

다음과 같은 두 가지 이유가 있습니다. 1) 사용자가 잘못된 필드 데이터를 입력하거나 로그인에 실패하면 아무데도 가지 않으려 고합니다. 난 그냥 사용자에게 오류를 표시하고 싶습니다. 2) 여러 페이지가 맨 위에 로그인 할 수있는 기능을 제공하기 때문에 임의로 Home.action으로 리디렉션하고 싶지 않습니다. 사용자가있는 곳에서 머물고 싶습니다.

커뮤니티에 대한 제 질문은 이미 제가 이미 사용한 기술로 어떻게 할 수 있습니까? 아니면 다른 기술을 추가 할 필요가 있습니까?

대단히 감사합니다.

답변

2

가능한 한 요약하려고합니다.

옵션 1 : SPA (단일 페이지 응용 프로그램)로 이동하십시오. jQuery 위에 다른 JavaScript 프레임 워크를 추가하여보다 쉽게 ​​사용할 수 있습니다. http://en.wikipedia.org/wiki/Single-page_application

옵션 2 :에 대한 자세한 내용은 당신은 당신의 자신의 자바 스크립트 MVC jQuery를 사용하여 프레임 워크 (또는 무엇이든 시장에서 사용할 수 있습니다)를 만들 수 있습니다.

Option1과 Option2 사이를 결정한 후에는 Presentation Layer + Business Layer의 두 가지 레이어가 표시됩니다.

마지막으로 웹 서비스로 Ajax 호출을하고 프레젠테이션 계층에서 리디렉션 또는 표시 동작을 제어 할 수 있습니다. 결론적으로 프레젠테이션은 비즈니스 계층과 완전히 독립적입니다. {로그인했습니다 : {이름 :

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#singInButton").click(function{ 
    var parameters = {SignIn:{username:"userNameFromField", password:"passwordFromField"}}; 
    $.post("signin", parameters, function(data, status){ 
      if(data.message === "SUCCESS") { 
       alert("Welcome back."); 
      }else{ 
       alert("Invalid credentials. Please, try again."); 
      } 
     }); 
    }); 
}); 
</script> 

이의이 같은 요청을 생성하는 것입니다 가정하자 우리 login.html의 일부가 될 것입니다 :

내가 예를 설명 할 수 있는지 보자 " userNameFromField ", password :"passwordFromField "}}

서버 측에서 유효한 자격 증명임을 확인했습니다. 그래서, 당신은 (미안 해요, 내가 스트럿츠에 익숙하지 않은,하지만 난 당신이 그것을 밖으로 알아낼 수 있습니다 확신) 같은 것을 반환 :

response.setContentType("application/json"); 
response.setResponseBody("SUCCESS"); 

마지막으로, 사용자 인터페이스가 경고 것 "이 다시 오신 것을 환영합니다.".응답을 보내지 않아도됩니다. 원하는 형식으로 올바른 형식으로 반환하십시오. 물론 손쉽게 문자열을 파싱 할 필요가 없도록 json 또는 xml 객체를 JavaObject로 변환하는 데는 수 백 프레임 워크가 필요합니다.

이 예제가 내가 말하고자하는 바를 명확히 할 수 있기를 바랍니다.

건배,

+0

안녕 Yori, 응답에 대한 감사합니다! 이것이 작동하는 방법을 이해하려고 노력하고 있습니다. 옵션 1을 사용하고 Ajax와 같은 것을 사용한다면, 로그인 버튼을 클릭합니다. 그러나 한 번 가고자하는 Login.action을 여전히 실행하고 있습니다. 끝났다. 내 웹 사이트를 탐색하기 위해 Struts 액션을 사용하는 것을 멈추고 대신 하나의 뷰만을 유지 (그리고 jQuery Ajax 호출을 통해 수정) 할 것을 제안하고 있습니까? Struts 액션 모델을 버리지 않고 내가 한 일을 성취 할 수있는 방법이 있습니까? (웹 사이트 탐색을위한 Struts에 더 익숙하기 때문에 묻습니다.) – user2507377

+0

제발 저의 예를보십시오. – Rafa

+0

이것은 struts에서 json 객체를 반환하는 매우 직선적 인 방법 인 것 같습니다. http://www.mkyong.com/struts2/struts-2-and-json-example/ – Rafa