팝업창을 뜨게 하실려면 일단 javascript를 쓰셔야 겠네요~ <A href="javascript:window.open('admin.jsp')">관리자 창</A> 이렇게 하시면 창이 뜨겠죠... 그리고 admin.jsp 팝업 창에서
<script language="javascript"> <!-- function sendit() { if (document.frm.num.value == "") { alert("관리자 번호를 입력하세요."); document.frm.find.focus(); return false; } document.frm.submit(); } //--> </script> <form name = "frm" action="admin_end.jsp"> 관리자 번호 : <input type=text name = num> <a href="javascript:sendit()">확인</a> </form>
하시면 입력받은 값이 admin_end.jsp로 넘어가죠 admin_end.jsp에서는 String num = request.getParameter("num"); 받으셔서 데이터베이스에서 비교하시고 하셔서 값이 있을때는 다음 페이지로(물론 값도 함께 넘겨 줘야죠~~) 없을때는 이전 페이지로 가면 되겠죠.. <% String num = request.getParameter("num"); String query = "select num from admin where num = '"+num+"'"; rs = stmt.executeQuery(query); if(rs.next()){ %> <script language="javascript"> <!-- opener.location.href="main.jsp?value3=<%=rs.getString("num")%>";//다음 페이지에 관리번호를 넘긴다 window.close();//팝업창 닫기 //--> </script> <% }else{ %> <script language="javascript"> <!-- alert("관리자 번호 입력 오류"); window.location.href="admin.jsp";//관리자 번호가 없는 경우 이전 창으로 간다~ //--> </script> <% } %>
jsp에서는 여러가지 java package들을 import 할 수 있는데, 흔히 많이 쓰고 있는. java.sql.* 이라던가, java.util.*... 등등은 아주 쉽게 jsp 페이지 최상단에
<%@ page import="java.sql.*" %>
위와 같이 입력함으로써 import 할 수 있다.
하지만 본인이 직접 만든 클래스를 import 하는 것은 생각보다 쉽지 않은데, 은근히 여러가지 문제들이 도사리고 있기 때문이다.
여기에.. 그 쉬우면서도 어려운 문제들을 정리함으로써 한방에 깔끔하고 쉽게 jsp 에서 class import 를 완수해보자!!
1. import 하고자 하는 class 파일은 반드시 package화 되어있어야 한다. 어떻게 하는가?.... 매우 쉽다. java 페이지 최상단에 패키지 선언만 해주면 된다. 요렇게!
package myPackage;
그리고 가볍게 compile 하여, class 파일을 생서하자!
2. import 하고자 하는 class 파일을 CLASSPATH에 위치시킨다. 이때, 기본적인 위치는.. 다음과 같다. TOMCAT_HOME\WEB-INF\classes\myPackage\ 여기에 본인이 작성한 MyClass.class 파일을 위치시킨다.
3. jsp 페이지에서 class 파일을 import 한다. 역시 jsp 페이지 최상단에 아래와 같은 내용을 추가한다.
<%@ page import="myPackage.MyClass" %>
이렇게 import 한 class 내의 메소드를 사용하기 위해서는, java와 똑같다. 예를 들어, static method를 사용하기 위해서는 MyClass.myStaticMethod(); non-static method를 사용하기 위해서는 MyClass mc = new MyClass(); mc.myNonStaticMethod();
이렇게 하면 되는 것이다.
이렇게 해서 jsp 페이지 내에서 직접 만든 클래스 파일의 import 를 문제없이 성공시킬 수 있다.
그렇다면, 여기서 뽀나쓰!!!
조금 더 advantage하게.. 본인이 직접 만든 class 내에서 어떤 파일을 읽는 작업을 한다고 해보자.
예를 들어, DB에서 무언가를 읽어오는 jsp 파일이라면, 최악의 경우는..
jsp 파일 내에 DB_IP, DB_NAME, USER_ID, USER_PASSWD 를 모두 지정하여 직접 connect 하는 경우이다. 이럴 경우, 서버를 옮길 때마다 존재하는 모든 jsp 파일의 DB 정보를 갱신해 주어야 하는 문제가 발생한다.
이보다 조금 나은 상황은 DBUtil.java 등의 파일을 만들어, 해당 java 파일 내에서, DB 정보를 입력해주어 jsp 파일 내에서는.. DBUtil.getConnection(); 을 하는 경우이다. 이 때에는.. 서버를 옮길 때마다 존재하는 모든 jsp 파일 내의 DB 정보를 갱신해야 하는 수고는 더는 대신, 이미 컴파일되어 버린 DBUtil.class 의 source 파일인 DBUtil.java 를 수정하여 다시 compile 해야 하는 수고를 거쳐야 한다.
그럼 가장 이상적인 방법은 무엇인가? DBUtil.java 파일 내에는 어떤 DB 정보도 입력하지 말고, DB_IP, USER_ID, USER_PASSWD 등의 정보를 담은 텍스트 파일을 DBUtil.java 에서 불러오는 것이다.
일반 java 프로그래밍을 할 때는.. 그냥 java(또는 class) 파일과 읽어서 사용하고자 하는 텍스트 파일을 같은 디렉토리에 넣고 사용하면 되지만, jsp 를 통한 웹프로그래밍을 할 때는 사정이 다르다.
tomcat은 class 파일은 CLASSPATH인... WEB-INF\classes 아래에서 읽어오지만, 해당 클래스 내에서 쓰거나 읽고자 하는 파일은 (상대 또는 절대 경로 없이 썼을 경우) TOMCAT_HOME에서 읽어오기 때문이다. 즉, 본인과 같은 경우에는.. 아래 주소가 되겠다.
다운 받은 commons-beanutils.jar는 자신의 /WEB-INF/lib/ 에 복사합니다
III. DbUtils란 무엇인가요?
DbUtils는 JDBC 작업을 좀더 쉽게 할수있도록 해주는 작은 클래스 집합입니다.
IV. 왜 DbUtils를 사용해야 하는가요?
① resource 누출에 대한 어떠한 가능성도 없습니다 JDBC코딩을 하는데 있어서 쉽지않고 양도 만만치 않으며 지루해 지기 쉽습니다 이러다 보면 자기도 모르게 Connection 누수를 발생시킬수 있는데 이러한 가능성을 배재해 줍니다
② 코드의 가독성이 높아집니다 데이터베이스 처리하는데 필요한 코드의 양을 절대적으로 줄여야 합니다. 남아있는 코드로 당신의 의도를 정확하게 나타내어야 합니다.
③ ResultSet으로 부터 JavaBean property로 세팅을 해줍니다! 더이상 setter메소드를 이용하여 ResultSet으로부터 컬럼값을 가져오는 코딩을 하지 않아도 됩니다 ResultSet 각각의 row는 bean instance의 에 완벽하게 전달해 줍니다