2011-10-03 7 views
1

가능한 한 쉽게 양식을 채워야하는 시나리오가 있습니다. 폼에 채울 값은 처음에 사용자가 물어보고 데이터베이스에 저장됩니다.servlets/jsp와 javascript 함수간에 세션 변수를 공유 할 수 있습니까?

사용자가 버튼을 클릭하면 jsp/servlet에서 얻은 값으로 폼의 모든 필드를 자동으로 채우는 javascript 함수가 호출됩니다.

서블릿/JSP의 도움으로 데이터베이스에서 값을 가져 오려고합니다. 이제 자바 스크립트 함수가이 값을 채울 수있는 방법이 있어야합니다. 서블릿/JSP로 얻을 수있다 ...

jsp/servlets과 javascript 함수간에 이러한 데이터/변수 공유를 수행 할 수 있습니까? javascript 함수는 jsp (양식에서 채워야하는 값을 검색하는)의 일부입니다.

답변

1

요청이 동시에 전송되면 (예 : 양식 제출 버튼),이 작업에 JS가 반드시 필요한 것은 아닙니다. JSP/EL이 서블릿에 의해 미리 채워진 데이터를 기반으로 입력 값으로 즉시 출력하게하십시오. 예를 들어, 그 ${user} 가정하여 서블릿에 의해 제조 된 전형적인 자바 빈즈이다

<input type="text" name="name" value="${fn:escapeXml(user.name)}" /> 
<input type="text" name="city" value="${fn:escapeXml(user.city)}" /> 
<input type="text" name="country" value="${fn:escapeXml(user.country)}" /> 

요청이 예 AJAX 사용 (비동기 전송되면

합니다 (fn:escapeXml()은 XSS 공격을 방지하는 데 불과하다)), 서블릿이 JS에서 쉽게 파싱 할 수있는 형식으로 데이터를 반환하도록해야한다.

{ 
    "username": "Bauke Scholtz", 
    "city": "Willemstad", 
    "country": "Curaçao" 
} 

(user가 얻어진 JSON 객체 임) 아약스 응답 콜백 함수에서 다음과 같이 다음 사용할 수있는 :

document.getElementById("name").value = user.name; 
document.getElementById("city").value = user.city; 
document.getElementById("country").value = user.country; 

jQuery이 같은 일이 훨씬 쉬워집니다. 또한 How to use Servlets and Ajax?

1

브라우저의 Javascript 클라이언트는 서버의 환경에 직접 액세스 할 수 없습니다 (다른 서버 솔루션을 사용하기로 결정한 날에 모든 페이지가 파손되면 어떻게 될지 상상해보십시오). 당신은 기본적으로 두 가지 선택이있다 : (아마도 양식 HTML이 dinamically 등 등, 필요에 따라 생성)

  • 혹시 당신이 클라이언트에 서비스를 제공하는 페이지에서 필요한 모든 데이터를 포함

  • 수동으로 XMLHttpRequest (일명 AJAX)를 통해 추가 정보를 dinamically 요청하십시오. 페이지를로드 한 후 dinamically 필요한 데이터를 확인할 수있는 유일한 방법입니다.

관련 문제