본문으로 바로가기

[DATABASE,JDBC][Connection Pool을 활용한 회원 가입 ]

category JDBC 2018. 5. 2. 12:14


오랜 만에 글올립니다 ......... 너무 바쁜 관계로 인해서 .........  자주 최신화 하지 못한점 죄송합니다 


JDBC



Connection Pool을 활용한 회원 가입 만들어 보기 

(회원가입양식은 제 블로그에 있으니 찾아보시고 활용하시면 되겠습니다)


이해 하기 어려운 부분은  웬만하면 모두 주석 달았으니 따라 해보시면되겠습니다 


1번 일단 Server 안에  context 를   실행파일 속 META-INF에 넣어 주고 

 안에 파일을 수정해줍니다  자신에게 맞춰서 수정 해야한다 


1
2
3
4
5
6
7
8
9
10
11
12
<Context>
   <Resource name="jdbc/OracleDB"
           auto = "Container"
           driverClassName = "oracle.jdbc.driver.OracleDriver"
           type = "javax.sql.DataSource"
           url = "jdbc:oracle:thin:@Localhost:1521:orcl"
           username = "system"
           password = "121519"
           maxActive = "20"
           maxIdle = "10"
           maxWait = "-1"/>
</Context>
cs




2번 타일 탐색기에서  ojdbc6을 찾아서  lib파일 안에 넣어 줍니다 


3번 압축 파일 오려둔것을 lib파일에 넣어 줍니다  파일2개 입니다

 

4번 업로드 css튤 http://www.servlets.com/ 다운 받아옵니다  이파일또한 lib파일에 넣어 줍니다.



본격적인 코딩들어 갑니다 


프로젝트  상태 입니다 

(오류뜨는 부분은 <%@ page import="javax.sql.*" %>과 DataSource ds = (DataSource) 때문에 뜨는데 확실히 모르겠지만 안뜨는 컴퓨터도 있습니다  실행 하는데 아무 문제가 되지 않습니다  )

(1,2,3,4를  다완성 했을 때  프로 젝트 모습이다)


거의다  주석 잡아 놨으니  어려움없이 할수 있을 것이다 






▶login.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<center>
 
    <form action="loginAction.jsp" method="post"><!-- 입력한 정보를  loginAction.jsp에게 post방식으로넘겨 준다  submit으로 넘겨준다  -->
        <table border="2">
            <tr  align="center">
               <td  colspan="2">로그인 페이지</td>
            </tr>
            <tr >
                <td>아이뒤:</td>
                <td><input type="text" name="loginid"></td>
            </tr>
            <tr>
                <td>비밀번호:</td>
                <td><input type="password" name="loginpass"></td>
            </tr>
            <tr colspan="2" align="center">
                <td colspan="2"><input type="submit" value="로그인">&nbsp<a href="join.jsp"> 회원가입</a></td>
            </tr>
        </table>
 
    </form>
</center>
</body>
</html>
cs






▶join.jsp



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
      <% request.setCharacterEncoding("utf-8"); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
      <meta charset="utf-8">
     <title>회원가입</title>
<script>
    function changeColor()
    {
        var color = ["#FF0000""#00FF00""#0000FF","#000FFF","#00F0FF","#0F00FF","#F000FF"];
        var title = document.getElementById("body");
        var i = 0;
 
        setInterval(function(){
        title.style.color = color[i]; //title의 색상을 바꿈
        i = (i+1) % color.length;
    },50);
    }
    </script><!-- 색갈 디자인 부분  -->
     <script language="javascript">
         
          function Check(){
                       
               var idCheck = document.getElementById("ID");//아이디 찾아가기
               var passCheck = document.getElementById("pass");//아이디 찾아가기
               var passCheckch = document.getElementById("passch");//아이디 찾아가기
               var emailCheck = document.getElementById("email");//아이디 찾아가기
               var nameCheck = document.getElementById("names");//아이디 찾아가기
               var introCheck = document.getElementById("context");//아이디 찾아가기
 
               var tmp = introCheck.value.replace(/\s| /gi, '');// 자기 소개 호준 출력 
               var hobbyCheck = false;//취미 선택 
               var arrHobby = document.getElementsByName("hobby");//
 
               var jumins1=document.getElementById("jumin1");// 주민번호 1택스트 
               var jumins2=document.getElementById("jumin2");// 주민번호 2패스워드  
               var jumins3 = jumins1.value + jumins2.value;//1과 2를 합친곳 
 
                
 
 
               var email = RegExp(/^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/)//  이메일 ㅇ
               var id= RegExp(/^[a-zA-Z0-9]{4,12}$/)
               var pass= RegExp(/^[a-zA-Z0-9]{4,12}$/)
               var named= RegExp(/^[가-힣]+$/)
               var fmt = RegExp(/^\d{6}[1234]\d{6}$/)  //포멧 설정
               var buf = new Array(13);
 
 
 
 
               //아이디 공백 확인
               if(idCheck.value == ""){
                    alert("아이디 입력바람");
                    idCheck.focus();
                    return false;
               }
               //아이디 유효성검사
               if(!id.test(idCheck.value)){
                    alert("형식에 맞게 입력해주세요");
                    idCheck.value = "";
                    idCheck.focus();
                    return false;
               }
            
              //비밀번호 공백 확인
               if(passCheck.value == ""){
                    alert("패스워드 입력바람");
                    passCheck.focus();
                    return false;
               }
 
               //아이디 비밀번호 같음 확인
               if(idCheck.value == passCheck.value){
                    alert("아이디와 비밀번호가 같습니다");
                    passCheck.value= "";
                    passCheck.focus();
                     return false;
               }
 
                //비밀번호 유효성검사
               if(!pass.test(passCheck.value)){
                    alert("형식에 맞게 입력해주세요");
                    passCheck.value= "";
                    passCheck.focus();
                     return false;
               }
 
               //비밀번호 확인란 공백 확인
               if(passCheckch.value == ""){
                    alert("패스워드 확인란을 입력해주세요");
                    passCheckch.focus();
                    return false;
               }
               //비밀번호 서로확인
               if(passCheck.value != passCheckch.value){
                    alert("비밀번호가 상이합니다");
                    passCheck.value = "";
                    passCheckch.value = "";
                    passCheck.focus();
                    return false;
               }
 
               //이메일 공백 확인
               if(emailCheck.value == ""){
                    alert("이메일을 입력해주세요");
                    emailCheck.focus();
                    return false;
               }
 
               //이메일 유효성 검사
               if(!email.test(emailCheck.value)){
                    alert("이메일형식에 맞게 입력해주세요")
                    emailCheck.value= "";
                    emailCheck.focus();
                    return false;
               }
 
               //이름 공백 검사
               if(nameCheck.value == ""){
                    alert("이름을 입력해주세요");
                    nameCheck.focus();
                    return false;
               }
 
               //이름 유효성 검사
               if(!named.test(nameCheck.value)){
                    alert("이름형식에 맞게 입력해주세요")
                    nameCheck.value= "";
                    nameCheck.focus();
                    return false;
               }
 
               //주민번호 공백 검사
               if(jumins1.value == "" || jumins2.value == ""){
                    alert("주민등록번호를 입력해주세요");
                    jumins1.focus();
                    return false;
               }
               //주민번호 유효성 검사
               if (!fmt.test(jumins3)) {
                     alert("주민등록번호 형식에 맞게 입력해주세요");
                     return false;
                 }
 
                 //주민번호 존재 검사
                  for (var i = 0; i < buf.length; i++){
                    buf[i] = parseInt(jumins3.charAt(i));
               }
                    var multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];// 밑에 더해주는 12자리 숫자들 
                    var sum = 0;
 
                     for (var i = 0; i < 12; i++){
                         sum += (buf[i] *= multipliers[i]);// 배열끼리12번 돌면서 
                    }
                      if ((11 - (sum % 11)) % 10 != buf[12]) {
                         alert("잘못된 주민등록번호 입니다.");
                           return false;
                           }
               
 
               //주민등록번호 생년월일 전달
               var birthYear = (jumins3.charAt(6<= "2") ? "19" : "20";
               birthYear += jumins1.value.substr(02);
               var birthMonth = jumins1.value.substr(22);
               var birthDate = jumins1.value.substr(42);
               var birth = new Date(birthYear, birthMonth, birthDate);
               var yearr = document.getElementById("years");
               var monthss = document.getElementById("months");
               var datess = document.getElementById("dates");
                         
                yearr.value = parseInt(birthYear);
                monthss.value = parseInt(birthMonth);
                datess.value = parseInt(birthDate);
 
                   
 
 
               //취미 유효성 검사
               for(var i=0;i<arrHobby.length;i++){
                    if(arrHobby[i].checked == true) {
                       hobbyCheck = true;
                         break;
                    }
                }
                if(!hobbyCheck){
                    alert("하나이상 관심분야를 체크해 주세요");
                    return false;
                }
 
 
               //자기소개란 공백 검사
               if(tmp== ""){
                    alert("자기소개를 입력해주세요")
                    introCheck.value= "";
                    introCheck.focus();
                    return false;
               }
 
               return true;
          }
     </script>
  </head>
   <center>
 
 
  <body onload="changeColor()"" id = "body">
      <!-- <meta charset="utf-8"> -->
       <form   onsubmit="return Check()" method="post" action="usermain.jsp" >
     <table name="ta" border="1">
         <tr>
             <td colspan="2" align="center" bgcolor="9cceff"><font size="5"><b>
                 회원 기본 정보</b></font>
             </td>
         </tr>
         <tr>
             <td align="center" bgcolor="cde6ff" ><font size="4"><b>아이디</b></font></td>
             <td><input type="text" AUTOCOMPLETE="off" name = "ID" id="ID" size="20"><B> *4~12자의 영문 대소문자와 숫자로만 입력</B></td>
         </tr>
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>비밀번호</b></font></td>
             <td><input type="password" AUTOCOMPLETE="off" name ="pass" id="pass"  size="21"><B> *4~12자의 영문 대소문자와 숫자로만 입력</B></td>
         </tr>
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>비밀번호확인</b></font></td>
             <td><input type="password" AUTOCOMPLETE="off" name ="passch" id="passch"  size="21"></td>
         </tr>
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>메일주소</b></font></td>
             <td><input type="text" AUTOCOMPLETE="off" name ="email" id="email" size="40" ><b> 예)id@domain.com</b></td>
         </tr>
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>이름</b></font></td>
             <td><input type="text" AUTOCOMPLETE="off" name ="names" id="names" size="40" ></td>
         </tr>
          <tr>
             <td colspan="2" align="center" bgcolor="9cceff"><font size="5"><b>개인 신상 정보</b></font></td>
         </tr>
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>주민등록번호</b></font></td>
             <td><input type="text" AUTOCOMPLETE="off" name="jumin1" id="jumin1" size="10" > - <input type="password" name="jumin2" id="jumin2" size="15"></td>
         </tr>
         <tr>
            <td align="center" bgcolor="cde6ff"><font size="4" ><b>생일</b></font></td>
             <td><input type="text" AUTOCOMPLETE="off" value="1994" name ="years" id="years" size="4" readonly><b>년</b>
                 <input type="text" AUTOCOMPLETE="off" value="01" name = "months" id="months" style="width: 20px;" readonly><b>월</b>    
                 <input type="text" AUTOCOMPLETE="off" value="01" name = "dates" id="dates" style="width: 20px;" readonly><b>일</b>
               </td>
         </tr>  
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>관심분야</b></font></td>
               <td><input type="checkbox" name ="hobby" value="컴퓨터">컴퓨터
                  <input type="checkbox" name ="hobby" value="인터넷">인터넷
                  <input type="checkbox" name ="hobby" value="여행">여행
                  <input type="checkbox" name ="hobby" value="영화감상">영화감상
                  <input type="checkbox" name ="hobby" vlaue="음악감상">음악감상</td>
          </tr>
          <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>자기소개</b></font></td>
              <td><textarea name = "context" id="context" cols="80" rows="9"></textarea></td>
          </tr>
          </table>
<!-- <marquee behavior="alternate" scrollamount="300"> --><input type="submit" value="회원 가입">
<input type="reset" value="다시 입력"><!-- </marquee> -->
</form>
  </body>
 
 
 
 </center>
</html>
 
cs



▶usermain.jsp


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <% request.setCharacterEncoding("utf-8"); %>
    <%@ page import="java.sql.*" %><!--java sql  패키지에 있는 것을 다쓰기 위해 만들어 준다  -->
    <%@ page import="javax.sql.*" %><!--javax sql 패키지에 있는 것을 다쓰기 위해 만들어 준다    import -->
    <%@ page import="javax.naming.*" %><!--javax.naming  패키지에 있는 것을 다쓰기 위해 만들어 준다    -->
    <%
 
       Connection conn = null;// 혹사나 내부적으로 안될때 확인할수있게 (null값으로 지정해준다 )|Connection= 연결햐주는 역할을 한다 
    
 
        
        
        String ID = request.getParameter("ID");//파라미터 변수 ID에 저장된 변수를 얻어서 변수의 값을 String으로 리턴한다. 
        String PASS = request.getParameter("pass");
        
        String PASSCH =request.getParameter("passch");
        String EMAIL =request.getParameter("email");
        String NAMES =request.getParameter("names");
        int JUMIN1 = Integer.parseInt(request.getParameter("jumin1"));//컬럼 타입이  number 이기때문에 데이터베이스에 타입을 맞춰준다  
        int JUMIN2 = Integer.parseInt(request.getParameter("jumin2"));//int 형식을 문자로 변환시켜준다 
 
        int YEARS = Integer.parseInt(request.getParameter("years"));
        int MONTHS = Integer.parseInt(request.getParameter("months"));
        int DATES = Integer.parseInt(request.getParameter("dates")); 
        
         
           String[] HOBBY =request.getParameterValues("hobby"); // 체크박스 이기때문에  배열을 이용해서 체크하는 갯수에 맞춰서 반환  
           StringBuffer kk = new StringBuffer(); //배열을 하나의 String으로 보냄
           for (String s : HOBBY) {
                  kk.append(s).append("");
               }  
       String context =request.getParameter("context"); 
               
        String sql="INSERT INTO join(ID,PASS,PASSCH,EMAIL,NAMES,JUMIN1,JUMIN2,YEARS,MONTHS,DATES,HOBBY,context) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
        //sql문을 이용해서 자바에서  INSERT(삽입)할수 있게 한다  
            
        
    
    try {//예외
        Context init = new InitialContext();//객체개를 생성? 문맥을 받아서 |init=받아오는 역할을 한다  
        DataSource ds = (DataSource) init .lookup("java:comp/env/jdbc/OracleDB");//집적적인 오라틀 주소로 연결 (DB 연결 하는 것) 
        conn = ds.getConnection();// 만들어 진길을  연결 시켜준다 
        
        PreparedStatement stmt=conn.prepareStatement(sql);//위에있는 sql 데이터베이스로 들어가게된다 // ()안에 INSERT 문을 넣어도 상관은 없다 
        //Statement도 있기는 하지만 PreparedStatement는 한번 사용한 SQL문이저장되기 때문에 반복해서 사용할 경우 성능이 좋기 때문에 일반적으로는 PreparedStatement를 사용한다.
        
        stmt.setString(1,ID);// DB에 들어값을 세팅 해준다
        stmt.setString(2,PASS);
        stmt.setString(3,PASSCH);
        stmt.setString(4,EMAIL);
        stmt.setString(5,NAMES);
        
        stmt.setInt(6,JUMIN1);
        stmt.setInt(7,JUMIN2);
      
         stmt.setInt(8,YEARS);
        stmt.setInt(9,MONTHS);
        stmt.setInt(10,DATES); 
        
        stmt.setString(11,kk.toString());
        stmt.setString(12,context);
 
        
        if(stmt.executeUpdate()!= 0){//적용된 행의 갯수를 얻기 위한 메소드0과 같지 않으면  로그인 페이지로 넘어 간다 
      //execute 메쏘드는 SQL문이 여러개의 ResultSet 객체나 여러개의 갱신 카운트 또는 Result 객체들과 갱신 카운트들의 결합을 리턴하는 것이 가능할 때만 사용되어져야 한다
 
        out.println("<script>");
        out.println("alert('성공적으로 가입하였습니다.')");
        out.println("location.href='login.jsp'");
        out.println("</script>");
        }
    }catch(Exception e){
         out.println("<script>alert('중복된 아이디가 있습니다.')</script>");
         out.println("<script>history.back()</script>");
        e.printStackTrace();
    }finally{
      //  conn.close(); 
    }
 
       %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 
</body>
</html>
cs


▶admin.jsp


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 
<%@page import="org.apache.catalina.tribes.transport.DataSender"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
      <% request.setCharacterEncoding("utf-8"); %>
  <%@ page import ="java.sql.*"%>
  <%@ page import ="javax.sql.*"%>
  <%@ page import ="javax.naming.*"%>
  <!--관리자 모드과 사용 사 모드를 같이 관리해주는 단계이다   -->
  <%
  
  Connection conn=null;
  Context init = new InitialContext();
  DataSource ds =(DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
  conn = ds.getConnection();
  
  
  String ID =(String)session.getAttribute("sid");//loginAction에서 set해준 것을 받아 온다 
  try{
      
      if(ID.equals("admin")){// 만약 아이 뒤가  adimn이라면 
          
          String sql ="SELECT * FROM join";// 모든 (데이터)행을 가져온다
          PreparedStatement pstmt=conn.prepareStatement(sql);
          ResultSet rs=pstmt.executeQuery();
          int i=1
                  ;%>
    <cenetr>          
    <table border="1">
    <tr>
        <td align="center" colspan="4"><font size="5px"><b>관리자 계정으로 접속했습니다. </b></font></td>
    </tr>
     <% while(rs.next()){%>
        <tr>
            <td align="center"><% out.println(i); %></td><!--next() 할것이 없을 때 까 지 돌아간다   -->
            <td align="center"><% out.println(rs.getString(1)); %></td>
            <td align="center"><a href ="output.jsp?ID=<%=rs.getString(1) %>">보기</a></td<!-- 보기를 누르면 output.jsp로가서 아디위게 대한 정보를 보여준다  -->
            <td align="center"><a href ="delete.jsp?ID=<%=rs.getString(1) %>">삭제</a></td><!--  삭제시켜준다  -->
 
        </tr>
         <% 
        i++;}//1을 가져오고 나면 ++ 연산시켜 다음 데이터를 가져온다  결국 모든 데이터를 가져온다  %>
        </table>
        <a href="login.jsp">로그아웃</a>
        <%
        rs.close();
          }
      else{
          //admin이 아닌 사용자로 들어오게 되면 
          String sql ="SELECT * FROM join where id='"+ID+"'";// 아이뒤에 맞는 데이 터만 보게 된다 
          PreparedStatement pstmt=conn.prepareStatement(sql);
          ResultSet rs=pstmt.executeQuery();
        %>
    <cenetr>
    <table border="1">
    <tr>
        <td align="center" colspan="4"><font size="5px"><b><%=ID%>님이 접속했습니다. </b></font></td>
    </tr>
    <%while(rs.next()){%>
    <tr>
            
            <td align="center"><% out.println(rs.getString(1)); %></td>
            <td align="center"><a href ="output.jsp?ID=<%=rs.getString(1) %>">보기</a></td><!-- (output.jsp?ID에서보여줌 )접속한 아이뒤에대한 정보를 볼수있다   -->
            <td align="center"><a href ="modify.jsp?ID=<%=rs.getString(1) %>">수정</a></td><!-- 수정또한 가능하게된다  modify.jsp?ID 에서  -->
    </tr>
    </table>
    <a href="login.jsp">로그아웃</a>
    <% 
    
    }
    }
      
  }catch(Exception e){
      out.println("<h3>데이터 가져오기에 실패하였습니다 </h3>");
      e.printStackTrace();
  }finally{
      conn.close();
  }
  
  %>
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 
</body>
</html>
cs




▶loginActoin.jsp


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
     <% request.setCharacterEncoding("utf-8"); %><!--한글 깨짐 방지   -->
    <%@ page import="java.sql.*" %>
    <%@ page import="javax.sql.*" %>
     <%@ page import="javax.naming.*" %>
     <% 
     // 여기는  회원가입을  마치고 등록된 계정으로 로그인 했을때 그에 대한 것을 처리하는 페이지 이다!!
     
     Connection conn = null;
    String ID = (String)request.getParameter("loginid");// 로그인 페이지에서  파라미터 변수 ID에 저장된 변수를 얻어서 변수의 값을 String으로 리턴한다. 
    String pass = (String)request.getParameter("loginpass");// 비번
    
    session.setAttribute("sid", ID);//  계속 상태를 유지 하게 해준다 admin으로 갈 아이뒤 값을  ID로 셋 해준다 
    //out.println(session.getAttribute("sid"));
    String sql="SELECT * FROM join where id='"+ID+"'";// 입력한 아이디에 대한  데이터 불러 온다 
    
    try {
        Context init = new InitialContext();
        DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
        conn = ds.getConnection();
        PreparedStatement pstmt = conn.prepareStatement(sql);
        pstmt.executeUpdate();
        ResultSet rs = pstmt.executeQuery();
        
        if(rs.next()){// 아이뒤와 비번이  조건에 만족하면 
          if(ID.equals(rs.getString(1))==true & pass.equals(rs.getString(2))==true){
              rs.close();// 닫아주고
              response.sendRedirect("admin.jsp");//admin.jsp로 간다 
          }
       
        // 여기서부턴 유호성 검사 단계
          else if(pass.equals(rs.getString(2))==false){
              rs.close();
              out.println("<script>");
              out.println("alert('패스워드가 잘못입력되었습니다.')");
              out.println("location.href='login.jsp'");
              out.println("</script>"); 
              }
                
        
        }
        else{
            rs.close();
            out.println("<script>");
           
             out.println("alert('존재하지 않는 아이디입니다.')");
             out.println("location.href='login.jsp'");
             out.println("</script>"); 
         
        }
      
        
        }catch(Exception e){
        out.println("<h3>데이터 가져오기에 실패하였습니다.</h3>");
        e.printStackTrace();
    }finally{
        conn.close();
    }
    
    
    %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 
</body>
</html>
cs





▶modi.jsp


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    <% request.setCharacterEncoding("utf-8"); %>
    <%@ page import="java.sql.*" %>
    <%@ page import="javax.sql.*" %>
    <%@ page import="javax.naming.*" %>
    <%
    /*수정 패이지 
        modify.jsp에서  넘겨준   것을 수정할 것만 !
    */
    Connection conn = null;
    String pass = (String)request.getParameter("mopass");
  
    String passch = (String)request.getParameter("mopassch");
    String Email = (String)request.getParameter("moemail");
    String Name = (String)request.getParameter("monames");
    String intro = (String)request.getParameter("moIntroduce");
    String[] mohobby = request.getParameterValues("mohobby");
        StringBuffer moaa = new StringBuffer();
        for(String i:mohobby){
            moaa.append(i).append("");
        }
    String ID = (String)session.getAttribute("sid");
    //String sql="UPDATE join SET pass='"+pass+"'"+"passch='"+passch+"'"+"mail='"+Email+"'"+"name='"+Name+"'"+"introduce='"+ intro +"'"+"WHERE id='"+ID+"'";
    String sql = "UPDATE join SET PASS=?, PASSCH=?, EMAIL=?, NAMES=?, HOBBY=?, context=? WHERE id='"+ID+"'";
    //=? = 아직 미정이지만  컬럼명만 확실하게 해준다 그리고 값이 입력되게되면 =?는  그값이 된다 
    try {
        
            // 이분장은 왠만 하면 그냥 외우는 것이 좋다 세트>? 같은 느낌이다  
                Context init = new InitialContext();
             DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
             conn = ds.getConnection();
             PreparedStatement stmt = conn.prepareStatement(sql);
             
            
             stmt.setString(1, pass);// 수정 할 것에 대한 값을  셋해준다    
             stmt.setString(2, passch);
             stmt.setString(3, Email);
             stmt.setString(4, Name);
             stmt.setString(5, moaa.toString());
             stmt.setString(6, intro);
             
             if(stmt.executeUpdate()!=0){//  쉽게 말해서  수정할것이 있으면  조건에 만족 하게 되어서  로그인 페이지로 넘어 가게 된다
                 out.println("<script>");
                 out.println("alert('성공적으로 수정하였습니다.')");
                 out.println("location.href='login.jsp'");
                 out.println("</script>"); 
             
             
           
             
         }
             }catch(Exception e){
             out.println("<script>alert('중복된 아이디가 있습니다.')</script>");
             
            // out.println("<script>history.back()</script>");
             e.printStackTrace();
         }finally{
             conn.close();
         }
         %>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 
</body>
</html>
cs



▶modify.jsp


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
<%@page import="java.awt.TextArea"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <% request.setCharacterEncoding("utf-8"); %>
    <%@ page import="java.sql.*" %>
    <%@ page import="javax.sql.*" %>
    <%@ page import="javax.naming.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
      <meta charset="utf-8">
     <title>회원가입</title>
<script>
    function changeColor()
    {
        var color = ["#FF0000""#00FF00""#0000FF","#000FFF","#00F0FF","#0F00FF","#F000FF"];
        var title = document.getElementById("body");
        var i = 0;
 
        setInterval(function(){
        title.style.color = color[i]; //title의 색상을 바꿈
        i = (i+1) % color.length;
    },50);
    }
    </script><!-- 색갈 디자인 부분  -->
    <!-- 유효성검사/ 아이뒤 잘구별해야한다  -->
     <script language="javascript">
         
          function Check(){
                       
               var idCheck = document.getElementById("ID");//아이디 찾아가기
               var passCheck = document.getElementById("pass");//아이디 찾아가기
               var passCheckch = document.getElementById("passch");//아이디 찾아가기
               var emailCheck = document.getElementById("email");//아이디 찾아가기
               var nameCheck = document.getElementById("names");//아이디 찾아가기
               var introCheck = document.getElementById("context");//아이디 찾아가기
 
               var tmp = introCheck.value.replace(/\s| /gi, '');// 자기 소개 호준 출력 
               var hobbyCheck = false;//취미 선택 
               var arrHobby = document.getElementsByName("hobby");//
 
               var jumins1=document.getElementById("jumin1");// 주민번호 1택스트 
               var jumins2=document.getElementById("jumin2");// 주민번호 2패스워드  
               var jumins3 = jumins1.value + jumins2.value;//1과 2를 합친곳 
 
                
 
 
               var email = RegExp(/^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/)//  이메일 ㅇ
               var id= RegExp(/^[a-zA-Z0-9]{4,12}$/)
               var pass= RegExp(/^[a-zA-Z0-9]{4,12}$/)
               var named= RegExp(/^[가-힣]+$/)
               var fmt = RegExp(/^\d{6}[1234]\d{6}$/)  //포멧 설정
               var buf = new Array(13);
 
 
 
 
               //아이디 공백 확인
               if(idCheck.value == ""){
                    alert("아이디 입력바람");
                    idCheck.focus();
                    return false;
               }
               //아이디 유효성검사
               if(!id.test(idCheck.value)){
                    alert("형식에 맞게 입력해주세요");
                    idCheck.value = "";
                    idCheck.focus();
                    return false;
               }
            
              //비밀번호 공백 확인
               if(passCheck.value == ""){
                    alert("패스워드 입력바람");
                    passCheck.focus();
                    return false;
               }
 
               //아이디 비밀번호 같음 확인
               if(idCheck.value == passCheck.value){
                    alert("아이디와 비밀번호가 같습니다");
                    passCheck.value= "";
                    passCheck.focus();
                     return false;
               }
 
                //비밀번호 유효성검사
               if(!pass.test(passCheck.value)){
                    alert("형식에 맞게 입력해주세요");
                    passCheck.value= "";
                    passCheck.focus();
                     return false;
               }
 
               //비밀번호 확인란 공백 확인
               if(passCheckch.value == ""){
                    alert("패스워드 확인란을 입력해주세요");
                    passCheckch.focus();
                    return false;
               }
               //비밀번호 서로확인
               if(passCheck.value != passCheckch.value){
                    alert("비밀번호가 상이합니다");
                    passCheck.value = "";
                    passCheckch.value = "";
                    passCheck.focus();
                    return false;
               }
 
               //이메일 공백 확인
               if(emailCheck.value == ""){
                    alert("이메일을 입력해주세요");
                    emailCheck.focus();
                    return false;
               }
 
               //이메일 유효성 검사
               if(!email.test(emailCheck.value)){
                    alert("이메일형식에 맞게 입력해주세요")
                    emailCheck.value= "";
                    emailCheck.focus();
                    return false;
               }
 
               //이름 공백 검사
               if(nameCheck.value == ""){
                    alert("이름을 입력해주세요");
                    nameCheck.focus();
                    return false;
               }
 
               //이름 유효성 검사
               if(!named.test(nameCheck.value)){
                    alert("이름형식에 맞게 입력해주세요")
                    nameCheck.value= "";
                    nameCheck.focus();
                    return false;
               }
 
               //주민번호 공백 검사
               if(jumins1.value == "" || jumins2.value == ""){
                    alert("주민등록번호를 입력해주세요");
                    jumins1.focus();
                    return false;
               }
               //주민번호 유효성 검사
               if (!fmt.test(jumins3)) {
                     alert("주민등록번호 형식에 맞게 입력해주세요");
                     return false;
                 }
 
                 //주민번호 존재 검사
                  for (var i = 0; i < buf.length; i++){
                    buf[i] = parseInt(jumins3.charAt(i));
               }
                    var multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];// 밑에 더해주는 12자리 숫자들 
                    var sum = 0;
 
                     for (var i = 0; i < 12; i++){
                         sum += (buf[i] *= multipliers[i]);// 배열끼리12번 돌면서 
                    }
                      if ((11 - (sum % 11)) % 10 != buf[12]) {
                         alert("잘못된 주민등록번호 입니다.");
                           return false;
                           }
               
 
               //주민등록번호 생년월일 전달
               var birthYear = (jumins3.charAt(6<= "2") ? "19" : "20";
               birthYear += jumins1.value.substr(02);
               var birthMonth = jumins1.value.substr(22);
               var birthDate = jumins1.value.substr(42);
               var birth = new Date(birthYear, birthMonth, birthDate);
               var yearr = document.getElementById("years");
               var monthss = document.getElementById("months");
               var datess = document.getElementById("dates");
                         
                yearr.value = parseInt(birthYear);
                monthss.value = parseInt(birthMonth);
                datess.value = parseInt(birthDate);
 
                   
 
 
               //취미 유효성 검사
               for(var i=0;i<arrHobby.length;i++){
                    if(arrHobby[i].checked == true) {
                       hobbyCheck = true;
                         break;
                    }
                }
                if(!hobbyCheck){
                    alert("하나이상 관심분야를 체크해 주세요");
                    return false;
                }
 
 
               //자기소개란 공백 검사
               if(tmp== ""){
                    alert("자기소개를 입력해주세요")
                    introCheck.value= "";
                    introCheck.focus();
                    return false;
               }
 
               return true;
          }
     </script>
  </head>
   <center>
 
 
  <body onload="changeColor()"" id = "body">
  <!--수정부분--> 
    <!--usermain안에있는 회원가입 양식을 가져와서  각각의 이름명을 바꿔준다     -->
      <!-- <meta charset="utf-8"> -->
     <%
     
    
    Connection conn = null;// 혹사나 내부적으로 안될때  확인할수있게  (null값으로 지정해준다 )|Connection= 연결햐주는 역할을 한다 
    Context init = new InitialContext();
    DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
    conn = ds.getConnection();
    
    String ID = (String)request.getParameter("ID");// 파라메타에 저장 된 아이뒤값을 받아오고
    try {   
              String sql="SELECT * FROM join where id='"+ID+"'";// 입력한 아이뒤에 맞는것  조건식을 출력한다
            PreparedStatement pstmt = conn.prepareStatement(sql);//sql= 디비에 저장 해준다 
            ResultSet rs = pstmt.executeQuery();//pstmt.executeQuery() = SELECT * FROM join where id='"+ID에서 나온  결과 값을 rs로 넙겨 주는   
            
       while(rs.next()){%><!-- rs.next() =rs에 결과가 있다면  수정 /데이터 없으면  fals 있을대까지 -->
       
       <form   onsubmit="return Check()" method="post" action="modi.jsp" >
     <table name="ta" border="1">
         <tr>
             <td colspan="2" align="center" bgcolor="9cceff"><font size="5"><b>
                 회원 기본 정보</b></font>
             </td>
         </tr>
         <tr><!--rs.getString(1)%>=칼럼의   값을 받아오는 것이다  (인덱스 ) -->
             <td align="center" bgcolor="cde6ff" ><font size="4"><b>아이디</b></font></td>
             <td><input type="text" value="<%=rs.getString(1) %>" AUTOCOMPLETE="off" name = "moID" id="moID" size="20" readonly disabled><B> *4~12자의 영문 대소문자와 숫자로만 입력</B></td>
         </tr><!--disabled 로 아이디를 변경할 수없게 해준다  데신 원래 값은 보여준다   --><!--readonly 쓰는것 방 지  |disabled 차단  -->
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>비밀번호</b></font></td>
             <td><input type="password" value="<%=rs.getString(2) %>" AUTOCOMPLETE="off" id="mopass" name ="mopass" size="21"><B> *4~12자의 영문 대소문자와 숫자로만 입력</B></td>
         </tr>
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>비밀번호확인</b></font></td>
             <td><input type="password" value="<%=rs.getString(3) %>" AUTOCOMPLETE="off" id="mopassch" name ="mopassch" size="21"></td>
         </tr>
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>메일주소</b></font></td>
             <td><input type="text" value="<%=rs.getString(4) %>" AUTOCOMPLETE="off" name ="moemail" id="moemail" size="40" ><b> 예)id@domain.com</b></td>
         </tr>
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>이름</b></font></td>
             <td><input type="text" value="<%=rs.getString(5) %>" AUTOCOMPLETE="off" name ="monames" id="monames" size="40" ></td>
         </tr>
          <tr>
             <td colspan="2" align="center" bgcolor="9cceff"><font size="5"><b>개인 신상 정보</b></font></td>
         </tr>
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>주민등록번호</b></font></td>
             <!--onblur에서 "aaa();" 하면 해당 조건문 돌아가는건 알겠는데 커서를 text박스 밖에 가져가면 바로 저장이 이루어 지면서 페이지가 넘어가지네요;  -->
           
             <td><input type="text" AUTOCOMPLETE="off" value="<%=rs.getString(6) %>" name="jumin1" id="jumin1" size="10" > - <input type="password"  value="<%=rs.getString(7) %>" name="jumin2" name="jumin2" id="jumin2" size="15" maxlength="7" readonly disabled onblur="aaa()"></td>
         </tr>
         <tr>
            <td align="center" bgcolor="cde6ff"><font size="4" ><b>생일</b></font></td>
             <td><input type="text" AUTOCOMPLETE="off" alue="<%=rs.getString(8) %>" value="1994" name ="years" id="years" size="4" readonly disabled><b>년</b>
                 <input type="text" AUTOCOMPLETE="off" alue="<%=rs.getString(9) %>" value="01" name = "months" id="months" style="width: 20px;" readonly disabled><b>월</b>    
                 <input type="text" AUTOCOMPLETE="off" alue="<%=rs.getString(10) %>" value="01" name = "dates" id="dates" style="width: 20px;" readonly disabled><b>일</b>
               </td>
         </tr>  
         <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>관심분야</b></font></td>
               <td><input type="checkbox" name ="mohobby" value="컴퓨터">컴퓨터
                  <input type="checkbox" name ="mohobby" value="인터넷">인터넷
                  <input type="checkbox" name ="mohobby" value="여행">여행
                  <input type="checkbox" name ="mohobby" value="영화감상">영화감상
                  <input type="checkbox" name ="mohobby" vlaue="음악감상">음악감상</td>
          </tr>
          <tr>
             <td align="center" bgcolor="cde6ff"><font size="4"><b>자기소개</b></font></td>
              <td><textarea alue="<%=rs.getString(12) %>" name = "moIntroduce" id="context" cols="80" rows="9"></textarea></td>
          </tr>
          </table>
        <!-- <marquee behavior="alternate" scrollamount="300"> -->
        <input type="submit" value="수정">
        <input type="button" value="뒤로가기" onclick = "history.back();"><!-- </marquee> -->
 
   <%  }
         rs.close();
        }catch(Exception e){
        out.println("<h3>데이터 가져오기에 실패하였습니다.</h3>");
        e.printStackTrace();
    }finally{
        conn.close();
    }
    
    %>
</form>
  </body>
 
 
 
 </center>
</html>
cs




▶output.jsp


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
     <% request.setCharacterEncoding("utf-8"); %>
    <%@ page import="java.sql.*" %>
    <%@ page import="javax.sql.*" %>
    <%@ page import="javax.naming.*" %>
    <%
    
    Connection conn = null;
    Context init = new InitialContext();//Context를 사용할 객체 생성
    DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");// 데이터 베이스를 접속하는 것을 만든것에 경로 !
    conn = ds.getConnection();// Connection 연결 내용  만들어 준다 
    
    String ID = (String)request.getParameter("ID");//치고 들어 온것  (로그인 한것)
    try {
            
              String sql="SELECT * FROM join where id='"+ID+"'";// sql에  집어 넣을 명령문 
            PreparedStatement pstmt = conn.prepareStatement(sql);//PreparedStatement 연결 상태를  sql문을 넣어서 ㅁ준비시킨다 
            ResultSet rs = pstmt.executeQuery();// 디비로 날려주는 역할 
         while(rs.next()){
        %>
        <center><!--접속한  회원 정보에 대한것을  모두 볼수 있다  -->
        <table border="1">
        <tr>
        <td align = center colspan="4"><font size="5px"><b><%=ID %>님의 정보입니다.</font></td>
        </tr>
        <tr>
        <td>ID</td>
        <td align = center><% out.println(rs.getString(1)); %></td><!--컬럼번호 1에 대한것(ID)-->
        </tr>
        <tr>
        <td>Password</td>
        <td align = center><% out.println(rs.getString(2)); %></td><!--컬럼번호 2에 대한것(Pass)-->
        </tr>
        <tr>
        <td>E-mail</td>
        <td align = center><% out.println(rs.getString(4)); %></td><!--컬럼번호 4에 대한것(Email)-->
        </tr>
        <tr>
        <td>Name</td>
        <td align = center><% out.println(rs.getString(5)); %></td><!--컬럼번호 5에 대한것(Name)-->
        </tr>
        <tr>
        <td>SocialNumber</td>
        <td align = center><% out.println(rs.getInt(6)+""+"-"+rs.getInt(7)); %></td><!--컬럼번호 6,7에 대한것(SocialNumber)-->
        </tr>
        <tr>
        <td>Birth</td>
        <td align = center><% out.println(rs.getInt(8)+""+"년"+rs.getInt(9)+""+"월"+rs.getInt(10)+"일"); %></td><!--컬럼번호 8,9,10에 대한것(Birth)-->
        </tr
        <tr>
        <td>Hobby</td>
        <td align = center><% out.println(rs.getString(11)); %></td><!--컬럼번호 11에 대한것(Hobby)-->
        </tr>
        <tr>
        <td>Introduce</td>
        <td align = center><% out.println(rs.getString(12)); %></td><!--컬럼번호 12에 대한것(Introduce)-->
        </tr>
        </table>
        <a href="admin.jsp">뒤로가기</a>
        <%
  
         }
         rs.close();
        }catch(Exception e){
        out.println("<h3>데이터 가져오기에 실패하였습니다.</h3>");
        e.printStackTrace();
    }finally{
        conn.close();
    }
    
    %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 
</body>
</html>
cs



▶web.xml



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>jdbc</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <resource-ref>
          <description>Connection</description>
          <res-ref-name>jdbc/OracleDB</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
  </resource-ref>
</web-app>
cs




▶context.xml(Servers프로 젝트에서 복사해와서 lib파일에 넣어준다  자신의 정보에맞게 수정 )



1
2
3
4
5
6
7
8
9
10
11
12
<Context>
   <Resource name="jdbc/OracleDB"
           auto = "Container"
           driverClassName = "oracle.jdbc.driver.OracleDriver"
           type = "javax.sql.DataSource"
           url = "jdbc:oracle:thin:@Localhost:1521:orcl"
           username = "system"
           password = "121519"
           maxActive = "20"
           maxIdle = "10"
           maxWait = "-1"/>
</Context>
cs