환영 페이지 Welcome.jsp
사용자가 올바른 비밀번호를 입력하면 switch.jsp는 JSP 페이지를 제어하여 Welcome.jsp 시작 페이지를 지정합니다. 이 섹션에서는welcome.jsp 페이지를 개발합니다. Welcome.jsp는 타사 태그 라이브러리를 사용해야 하기 때문에 JBuilder에서 몇 가지 구성을 수행하여welcome.jsp를 개발하기 전에 이 태그 라이브러리를 도입해야 합니다.
JBuilder에 타사 태그 라이브러리 구성
Apache 오픈 소스 조직은 많은 유용한 태그 라이브러리를 제공합니다. Welcome.jsp는 Apache의 날짜/시간 태그 라이브러리를 사용해야 JSP에서 다양한 시간 표시를 제공할 수 있습니다. /2009-07/02/jakarta-taglibs-datetime-1.0.1.zip.
태그 라이브러리에는 일반적으로 두 개의 파일이 포함됩니다. 하나는 클래스 패키지 JAR 파일이고 다른 하나는 확장자가 .tld인 태그 설명 파일입니다. 다운로드한 압축 파일의 압축을 푼 후 taglibs-datetime.jar 및 taglibs-datetime.tld 파일을 <project 디렉터리>/datetimeTag 디렉터리에 배치합니다.
프로젝트에서 타사 태그 라이브러리를 사용하려면 JBuilder에서 태그 라이브러리를 미리 구성하고 프로젝트에서 이를 참조해야 합니다. 태그 라이브러리 구성은 클래스 라이브러리 구성과 유사하며 라이브러리 구성 대화 상자를 통해서도 수행됩니다. JBuilder 클래스 라이브러리와 태그 라이브러리는 라이브러리 구성 대화 상자의 왼쪽 트리에 나열됩니다. 클래스 라이브러리는 다음과 같이 표시됩니다. 아이콘, 태그 라이브러리는 다음과 같이 나타납니다. 상. 다음으로 JBuilder에 datetime 태그 라이브러리를 구성합니다.
1. 도구->구성->라이브러리->라이브러리 구성 대화 상자.
라이브러리 구성 대화 상자의 왼쪽 하단에 있는 추가... 버튼을 클릭하면 아래와 같이 새 라이브러리 마법사 대화 상자가 나타납니다.
그림 17 새 라이브러리 마법사 대화 상자 |
이 라이브러리에 이름: datetimeTag라는 이름을 지정하고 확인을 눌러 라이브러리 구성 대화 상자로 돌아갑니다.
2. 태그 라이브러리 파일을 지정합니다.
라이브러리 구성 대화 상자로 돌아오면 왼쪽 트리에 datetimeTag 노드가 나타납니다. 클래스 라이브러리 파일이 지정되지 않았기 때문에 다른 노드와 달리 눈에 띄게 빨간색으로 표시됩니다. datetimeTag를 클릭하고 라이브러리 설정 페이지로 전환합니다. 프레임워크에 아래와 같이 탭 페이지에서:
그림 18 프레임워크로 전환 |
프레임워크 드롭다운 상자에서 사용자 정의 JSP 태그 라이브러리 옵션을 선택하고 탭 페이지 오른쪽 하단의 추가... 버튼을 클릭하면 그림과 같이 새 태그 라이브러리 정의 대화 상자가 나타납니다. 아래에:
그림 19 태그 라이브러리를 지정하는 설명 파일 |
Define New Tag Library 대화 상자에서 TLD 파일 뒤의... 버튼을 클릭하고 <project Directory>/datetimeTag/taglibs-datetime.tld 파일로 이동합니다. 확인 후 JBuilder는 일반적으로 나머지 설정을 자동으로 채웁니다. 이러한 JBuilder 자동 보충 설정을 변경할 필요가 없습니다. 그중 Prefix는 이 태그 라이브러리에 대한 참조 접두사를 지정합니다. 확인 버튼을 클릭하여 라이브러리 구성 대화 상자로 돌아갑니다. datetimeTag 노드는 아래와 같이 일반 색상으로 표시됩니다.
그림 20 태그 라이브러리를 올바르게 구성한 후의 효과 |
날짜/시간 태그 라이브러리 구성을 완료하려면 라이브러리 구성 대화 상자에서 확인 버튼을 클릭하세요.
3. 현재 프로젝트에서 새로 구성된 이 태그 라이브러리를 참조하십시오.
프로젝트->프로젝트 속성...->경로->필수 라이브러리 탭으로 전환->추가... 버튼을 클릭하여 JBuilder 클래스 라이브러리에서 datetimeTag를 선택합니다. 구성이 성공적으로 완료되면 프로젝트 속성 대화 상자가 다음과 같이 표시됩니다.
그림 21 프로젝트 참조 라이브러리 |
환영 JSP 페이지 생성
1. 파일->새로 만들기…->웹->JSP 아이콘을 두 번 클릭하여 JSP 생성 마법사를 시작하고 JSP 파일 이름을 Welcome으로 지정한 후 다음을 클릭하여 다음 단계로 진행합니다.
2. Welcome.jsp 페이지에서 datetimeTag 태그 라이브러리를 참조하세요.
마법사의 2단계에서는 JBuilder에서 다양한 태그 라이브러리를 선택할 수 있습니다. 이전 섹션에서 구성한 datetimeTag 태그 라이브러리도 다음 그림과 같이 태그 라이브러리 목록에 나타납니다.
그림 22 참조 태그 라이브러리 |
datetime 태그를 펼치고 taglibs-datetime을 확인한 후 Next를 클릭하여 다음 단계로 이동합니다.
3. switch.jsp의 세션 도메인에 있는 userBean 객체를 참조합니다.
그림 23 switch.jsp의 세션에 있는 userBean을 참조합니다. |
Add Bean...을 클릭하여 bookstore.User 클래스를 선택하고 ID 열에 Bean 이름을 ses_userBean으로 지정하고 범위 열에서 세션 범위를 선택합니다. ses_userBean은 switch.jsp에서 userBean에 지정된 이름입니다. 웹 컨테이너는 이 이름을 기반으로 세션에서 개체를 검색합니다. 이 개체를 찾을 수 없으면 스위치 다음에 Welcome.jsp가 호출되기 때문에 bookstore.User 개체를 생성합니다. .jsp. 따라서 세션이 만료되지 않는 한 userBean 객체를 찾을 수 있습니다.
마침을 직접 클릭하여 Welcome.jsp 파일을 생성합니다. 코드는 다음과 같습니다.
코드 목록 15 Welcome.jsp 시작 페이지
1. <%@ 페이지 contentType="text/html; charset=GBK" %> 2. <%@ taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt" %> 3. <html> 4. <머리> 5. <제목> 6.환영합니다 7. </제목> 8. 〈/머리〉 9. <jsp:useBean id="ses_userBean"scope="session" class="bookstore.User" /> 10. <jsp:setProperty name="ses_userBean" property="*" /> 11. <바디 bgcolor="#ffffff"> 12. <h1> 13. JBuilder가 생성한 JSP 14. </h1> 15. </body> 16. </html> |
마법사의 2단계에서 참조된 태그 라이브러리는 2행의 참조된 태그 라이브러리 선언 코드에 따라 설정됩니다. 3단계에서 설정한 Bean은 코드의 9~10번째 라인에 해당합니다.welcome.jsp에는 Bean 값을 채울 필요가 없으므로 10번째 라인의 코드는 수동으로 제거해야 합니다.
다음으로,welcome.jsp 파일의 날짜/시간 태그 라이브러리를 참조하고 이를 사용하여 현재 시간 형식 문자열을 생성합니다. Welcome.jsp 파일을 열고 소스 보기 페이지로 전환하십시오. 먼저 <body></body>에서 JBuilder가 생성한 코드를 지우고 <body></body>에 "<dt:"를 입력합니다. JBuilder는 다음과 같이 TagInsight 함수를 사용하여 이 태그 라이브러리에 사용 가능한 모든 태그 항목을 표시합니다. 그림에 표시된 대로:
그림 24 TagInsight를 사용하여 태그 라이브러리 입력
TagInsight를 사용하면 태그 라이브러리에 사용 가능한 태그를 쉽게 입력할 수 있으므로 태그 라이브러리의 코드 입력 속도가 크게 향상되고 정확성이 보장됩니다. Welcome.jsp에서는 태그 라이브러리를 사용하여 현재 형식화된 시간 문자열을 얻습니다. 또한 ses_userBean을 통해 사용자 이름도 얻습니다. Welcome.jsp의 최종 코드는 다음과 같습니다.
코드 목록 16welcome.jsp는 태그 라이브러리와 Session 개체를 참조합니다.
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp" %> 2. <%@taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt"%> 3. <html> 4. <머리> 5. <제목>환영합니다</제목> 6. </머리> 7. <jsp:useBean id="ses_userBean"scope="session" class="bookstore.User"/> 8. <body bgcolor="#ffffff">당신은 9. <%=ses_userBean.getUserName()%>, 로그인을 환영합니다. <br> 10. 현재 시간은<dt:format Pattern="MM/dd/yyyy hh:mm"><dt:currentTime/></dt:format>입니다. 11. <br><a href="quit.jsp">여기</a>를 클릭하여 시스템을 종료하세요. 12. </body> 13. </html> |
또한 JBuilder는 datetime 태그 라이브러리 설명 파일 taglibs-datetime.tld를 WEB-INF에 복사하고 web.xml 파일을 변조하여 taglibs-datetime.tld의 주소를 선언했습니다.
코드 목록 17 web.xml에서 태그 설명 파일 선언
1. <?xml 버전="1.0" 인코딩="UTF-8"?> 2.… 3. <웹앱> 4. <태그립> 5. <taglib-uri>http://jakarta.apache.org/taglibs/datetime-1.0</taglib-uri> 6. <taglib-위치>/WEB-INF/taglibs-datetime.tld</taglib-위치> 7. </taglib> 8. </웹앱> |
위에 표시된 것처럼 web.xml의 4~7번째 줄에서 JBuilder는 웹 컨테이너가 필요한 정보를 올바르게 찾을 수 있도록 datetime 태그 라이브러리의 설명 파일을 자동으로 추가합니다.
웹 디렉토리를 생성하기 위해 프로젝트를 컴파일할 때 JBuilder는 datetime 태그 라이브러리의 JAR 파일 taglibs-datetime.jar을 WEB-INF/lib 디렉토리에 복사합니다.
사용자가 성공적으로 로그인하면 Welcome.jsp 페이지로 리디렉션됩니다. 페이지 효과는 다음과 같습니다.
그림 25 Welcome.jsp 효과 페이지 |
사용자가 "여기" 링크를 클릭하면 quit.jsp에 연결됩니다. quit.jsp 페이지는 세션을 지운 후 세션에서 참조된 개체를 바인딩 해제하고 리소스를 해제합니다.
quit.jsp 종료 처리 페이지
HTTP 프로토콜은 요청/응답 방식으로 작동하므로 클라이언트가 시스템을 종료할 때 웹 서버에 적시에 세션을 삭제하도록 알리기 위해 적극적으로 요청을 보내야 합니다. 그렇지 않으면 웹 서버는 기다리기만 합니다. 세션이 만료되기 전에 세션이 만료될 때까지.
quit.jsp를 사용하여 시스템에서 사용자 종료를 처리합니다. quit.jsp는 세션을 로그아웃하고 적시에 리소스를 해제하는 역할을 합니다.
·세션을 로그아웃합니다.
·브라우저 창을 닫습니다.
코드는 다음과 같습니다:
1. <%@ 페이지 contentType="text/html; charset=GBK" %> 2.<% 3. 세션.무효화(); 4. %> 5. <스크립트 언어="javaScript" > 6. 윈도우.오프너 = null; 7. 창.닫기(); 8. </스크립트> |
3행은 세션에서 로그아웃하는 역할을 담당하며 원래 세션에 배치된 개체는 바인딩 해제되고 가비지 수집이 리소스를 해제할 때까지 기다립니다. 이 예에서는 세션에 ses_userBean이라는 userBean 객체가 있습니다(이는 switch.jsp의 세션에 배치됩니다). session.invalidate()를 호출한 후 userBean은 세션에서 바인딩 해제되고 해당 valueUnbound() 메서드는 트리거된 다음 가비지 수집을 기다립니다.
5~8번째 줄은 윈도우 닫기를 담당하는 자바스크립트 스크립트 프로그램입니다. 스크립트 프로그램(window.open())을 통해 웹페이지가 열리지 않는 경우 window.close()를 호출하기 전에 window.opener 객체를 설정해야 합니다. 6행에 표시된 대로 창을 닫는 스크립트는 null입니다. 그렇지 않으면 브라우저가 닫히는 것을 확인하는 대화 상자를 표시합니다. 저자는 이 문제가 많은 웹 프로그래머에게 문제가 있다는 것을 발견하여 특별히 지적했습니다.
실제 경험:
사용자가 시스템을 종료하면 세션을 로그아웃해야 합니다. 그렇지 않으면 서버에서 세션이 만료될 때까지 세션 개체가 지워지지 않습니다. 세션의 최대 비활성 시간은 30분(기본 시간)이라고 가정합니다. 세션 개체를 수동으로 지우지 않으면 이러한 개체가 차지하는 시스템 리소스는 사용자가 시스템을 종료한 후 30분이 지날 때까지 해제되지 않습니다. |