2013-07-17 1 views
1

서블릿과 JSP를 사용하여 두 개의 웹 페이지를 만들었습니다. 첫 페이지에서 사용자는 이름, 성 및 휴대폰 번호를 입력하고 제출합니다. 그런 다음 사용자가 입력 한 세부 정보를 보여주는 다음 페이지로 리디렉션했습니다. 사용자가 동일한 페이지 (두 번째 페이지)의 값을 편집 할 수 있도록 "편집"버튼을 제공해야합니다. 내가 어떻게 그럴 수 있니?서블릿을 사용하여 동일한 페이지의 필드를 다시 채우는 방법

답변

1

두 가지 방법으로 가능합니다. 두 가지 대안의 첫 번째 부분은 동일합니다.

  • 첫 번째 페이지에서는 양식을 사용하여 사용자 데이터를 입력 할 수 있습니다.

    공공 무효의 doPost (HttpServletRequest 요청, HttpServletResponse 응답) {

    // 가져 매개 변수

    문자열 이름 = request.getParameters : 양식 조치에 corrsponding

  • 서블릿은이 같은 무언가를 ("이름"); 문자열 이름 = request.getParameters ("성"); ...

    가 //받은 매개 변수 에 대한 몇 가지 검증을 확인 ...

    //는 사용자 개체를 사용자 사용자 = 새 사용자 (이름, 사용자 이름)를 작성;

    //의 HttpSession에 보관

    는 invalidate() .setAttribute ("사용자"사용자);

    // 앞으로 전달 RequestDispatcher dispatcher = request.getRequestDispatcher ("대상 리소스는 scenaro에 따라 다릅니다. 아래를 참조하십시오.);

    dispatcher.forward (request, response);

  • }

전체 흐름을 수행하는 2 가지 차이점은 제 JSP에있다. 기본적으로

1) 두 번째 jsp가 없습니다. 서블릿은 양식이 포함 된 JSP로 다시 전달됩니다.이 경우에는 빈 양식 대신 이전에 제출 된 값인 텍스트 필드에 표시됩니다. 세션에서 "user"객체가 발견되면 첫 번째 JSP를 약간 변경하여 해당 값을 표시해야합니다. 또한 사용자가 직접 텍스트 필드를 변경할 수 있기 때문에이 경우에는 "편집"버튼이 필요하지 않습니다. 어쨌든 원하는 경우 '사용자'인스턴스가 세션에있는 경우 (예 : 사용자가 이미 데이터를 삽입 한 경우) 해당 텍스트 표시를 사용 중지하고 편집 버튼을 사용하여 수정할 수 있습니다 (간단한 자바 스크립트 사용).

2) 두 번째 jsp에는 양식이없고 레이블 만 포함되어있어 사용자가 삽입 한 '읽기 전용'보기입니다. 이 경우 서블릿은 두 번째 JSP로 전달됩니다. "편집"버튼은 단순히 첫 번째 JSP로 리디렉션 될 수 있습니다. 이 경우 앞에서 설명한 것과 같은 변경 사항으로이 페이지 (첫 번째 JSP)를 변경해야합니다. 따라서 기본적으로

  • 처음으로 insertUserData를 방문하십시오.jsp 세션에 사용자 인스턴스가 없습니다. jsp가 빈 텍스트 필드를 표시합니다.
  • 사용자가 데이터를 입력하고 제출합니다.
  • 서블릿은 사용자 객체를 생성하여 세션에 저장합니다. 다음으로 두 번째 JSP로 리디렉션
  • 입력 된 데이터의 읽기 전용보기가 표시됩니다. 사용자가 편집 버튼을 클릭합니다.
  • insertUserData.jsp가 표시되지만 사용자 개체가 세션에서 때문에, 텍스트 필드는 당신이 첫 번째 JSP를 다시 표시 할 수 있습니다 세션을 사용하여, 이전에 입력 한 데이터와 두 가지 접근 방식에 대해 유효

으로 마지막 음을 가득 데이터가 유효성 검사 오류의 경우에 입력, 사용자가 모든 정보를 다시 입력하지 않아도됩니다 (매우 지루한)

+0

적시에 답장을 보내 주셔서 감사합니다! 그러나 사용자가 원하는 필드 만 편집 할 수 있도록 각 필드에 편집 버튼이있을 것입니다. 그래서 두 번째 페이지에 "편집"버튼이 필요합니다. 그리고 예, 두 번째 페이지는 라벨에 표시됩니다. 양식이 아닙니다. 하지만 "편집"을 클릭하면 텍스트 상자에 가져와야합니다. 어쨌든 가능할까요? – Pramoth

+0

마지막 질문에 대한 요지가 있는지 모르겠습니다. 두 번째 페이지, 라벨, '수정'버튼이 있고 클릭하면 텍스트 필드가 채워진 첫 번째 페이지를 원하십니까? 네, 가능합니다 ... 위에서 설명한대로 세션을 사용하고 다음과 같은 논리로 각 텍스트 필드를 변경하십시오. "user"객체가 세션에있는 경우 user.xxx 속성을 값으로 삽입하십시오. 그렇지 않으면 값을 채우지 마십시오. – Andrea

+0

예. 편집 버튼을 클릭하면 필드가 동일한 두 번째 페이지에 채워집니다. 어떻게 얻을 수있는 샘플 코드를 제공 할 수 있습니까? \ – Pramoth

관련 문제