이번 폴더구조는 다음과 같다.




이미지 파일 첨부


images.zip





이번에는 JSP 프로젝트에 JDBC 기능을 사용한다.


WEB-INF 폴더 아래에 lib 폴더를 만들고


ojdbc6.jar을 복사하자.(JDBC 할 때 build Path 추가와 같은 작업)


이 파일은 jdbc를 공부할 때 어디있는지 한번 설명을 했었다. (https://qdgbjsdnb.tistory.com/196?category=726465)


위의 글 설명 그대로


sql을 사용하기 위한 Library 파일을 불러온다.


계속 사용했던 oracle에 설치 폴더에 있는 파일을 불러온다.


경로는 설치 경로 + oraclexe/app/oracle/product/11.2.0/server/jdbc/lib 에 ojdbc6이라는 파일이 존재한다.



출처: https://qdgbjsdnb.tistory.com/196?category=726465 [하위^^]

sql을 사용하기 위한 Library 파일을 불러온다.


계속 사용했던 oracle에 설치 폴더에 있는 파일을 불러온다.


경로는 설치 경로 + oraclexe/app/oracle/product/11.2.0/server/jdbc/lib 에 ojdbc6이라는 파일이 존재한다.



출처: https://qdgbjsdnb.tistory.com/196?category=726465 [하위^^]

sql을 사용하기 위한 Library 파일을 불러온다.


계속 사용했던 oracle에 설치 폴더에 있는 파일을 불러온다.


경로는 설치 경로 + oraclexe/app/oracle/product/11.2.0/server/jdbc/lib 에 ojdbc6이라는 파일이 존재한다.



출처: https://qdgbjsdnb.tistory.com/196?category=726465 [하위^^]으

sql을 사용하기 위한 Library 파일을 불러온다.


계속 사용했던 oracle에 설치 폴더에 있는 파일을 불러온다.


경로는 오라클 설치 경로 + oraclexe/app/oracle/product/11.2.0/server/jdbc/lib 에 ojdbc6이라는 파일이 존재한다.




파일을 찾아서 lib 폴더에 복사하면 된다.







01_testPerson.jsp는 선호도 조사로 선택한 항목, 입력 값 등을 통해서


해당하는 이미지를 출력한다.


또한 선택을 안했을 경우의 예외처리도 전부 JSP 파일에서 구현한다.





02_memberJoin.jsp는 JSP에서 데이터 베이스에 접근하여 새로운 정보를 추가하여 회원가입을 구현한다.



index.jsp

------------------------------------------------------------------------------------------------------------------------------------

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>MVC Model1</h1>
    <p>jsp도 서블릿이다!</p>
    <h3><a href="views/01_testPerson.jsp">선호도 조사</a></h3>
    <h3><a href="views/02_memberJoin.jsp">회원가입</a></h3>
</body>
</html>

------------------------------------------------------------------------------------------------------------------------------------


01_testPerson.jsp, 01_testPersonResult.jsp

------------------------------------------------------------------------------------------------------------------------------------

01_testPerson.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h2>개인 취향 테스트(MVC)</h2>
    당신의 취향을 테스트합니다.<br>
    데이터 입력 후 확인 버튼을 누르세요
   
    <form action="01_testPersonResult.jsp" name="personFrm" method="post">
        <ul style="list-style: none; line-height: 200%;">
            <li>이름은? <input type="text" name="name" size="10"></li>
            <li> 좋아하는 색?
                <input type="radio" name="color" id="color-red" value="빨강">
                <label for="color-red">빨강</label>
                <input type="radio" name="color" id="color-blue" value="파랑">
                <label for="color-blue">파랑</label>
                <input type="radio" name="color" id="color-yellow" value="노랑">
                <label for="color-yellow">빨강</label>
            </li>
            <li>좋아하는 동물?
                <select name="animal" id="animal">
                    <option value="강아지">강아지</option>
                    <option value="고양이">고양이</option>
                    <option value="금붕어">금붕어</option>
                </select>
            </li>
            <li>좋아하는 음식?(모두 고르세요)
                <input type="checkbox" name="food" id="food1" value="짜장면">
                <label for="food1">짜장면</label>
                <input type="checkbox" name="food" id="food2" value="짬뽕">
                <label for="food2">짬뽕</label>
                <input type="checkbox" name="food" id="food3" value="탕수육">
                <label for="food3">탕수육</label>
                <input type="checkbox" name="food" id="food4" value="양장피">
                <label for="food4">양장피</label>
                <input type="checkbox" name="food" id="food5" value="팔보채">
                <label for="food5">팔보채</label>
            </li>
            <li>
                <br>
                <input type="submit" value="확인">&nbsp;&nbsp;
                <input type="reset" value="취소">
            </li>
        </ul>
    </form>
   
</body>
</html>






01_testPersonResult.jsp



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    //1.전달 파라미터 한글 처리
    request.setCharacterEncoding("utf-8");

    //2.전달된 파라미터 변수에 담기
    String name = request.getParameter("name");
    String color = request.getParameter("color");
    String animal = request.getParameter("animal");
    String[] foodArr = request.getParameterValues("food");
   
   
   
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
    <div id="container">
        <div id="header">
            <h2><span style="color: blue;"><%= name %></span>님의 개인 취향 테스트</h2>
        </div>
        <div id="color">
            <span class="title">당신이 좋아하는 색깔은?</span>
        </div>
       
        <div id="animal">
            <span class="title">당신이 좋아하는 동물은?</span>
        </div>
        <div id="food">
            <span class="title">당신이 좋아하는 음식은?</span>
        </div>
   
    </div>
    <script>
        $(function(){
            <%
                if(color != null){
                switch(color){
                    case "빨강" :
            %>
                            $("#color").append("<img src='<%=request.getContextPath()%>/images/red.png'>");
            <%                break;
                    case "파랑" :
            %>
                            $("#color").append("<img src='<%=request.getContextPath()%>/images/blue.png'>");
            <%                break;
                    case "노랑" :
            %>
                            $("#color").append("<img src='<%=request.getContextPath()%>/images/blue.png'>");
            <%                break;
                }
                }else{
            %>
                    $("#color").append("선택한 색깔이 없습니다 ㅜㅜ");
            <%
                }
            %>
        });
    </script>
    <script>
        $(function(){
            <%
                switch(animal){
                    case "강아지" :
            %>
                            $("#animal").append("<img src='<%=request.getContextPath()%>/images/dog.png'>");
            <%                break;
                    case "고양이" :
            %>
                            $("#animal").append("<img src='<%=request.getContextPath()%>/images/cat.png'>");
            <%                break;
                    case "금붕어" :
            %>
                            $("#animal").append("<img src='<%=request.getContextPath()%>/images/fish.png'>");
            <%                break;
                }
            %>
        });
    </script>
    <script>
        $(function(){
            <%
                try{
                for(int i = 0; i < foodArr.length; i++){   
                    switch(foodArr[i]){
                        case "짜장면" :
            %>
                            $("#food").append("<img src='<%=request.getContextPath()%>/images/jjm.png'>");
            <%
                            break;
                        case "짬뽕" :
            %>
                            $("#food").append("<img src='<%=request.getContextPath()%>/images/jjbong.png'>");
            <%
                            break;
                        case "탕수육" :
            %>
                            $("#food").append("<img src='<%=request.getContextPath()%>/images/tangsy.png'>");
            <%
                            break;
                        case "양장피" :
            %>
                            $("#food").append("<img src='<%=request.getContextPath()%>/images/yang.png'>");
            <%
                            break;
                        case "팔보채" :
            %>
                            $("#food").append("<img src='<%=request.getContextPath()%>/images/palbc.png'>");
            <%
                            break;
                    }   
                }
                }catch(Exception e){
            %>
                            $("#food").append("선택한 음식이 없습니다 ㅜㅜ");
            <%
                }
            %>
        });
    </script>
</body>
</html>

------------------------------------------------------------------------------------------------------------------------------------





02_memberJoin.jsp, 02_memberJoinResult.jsp

------------------------------------------------------------------------------------------------------------------------------------

02_memberJoin.jsp



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <div align="center">
        <h2>회원 가입 정보 입력</h2>
        <br>
        <form action="02_memberJoinResult.jsp" method="post">
            <input type="text" placeholder="아이디" name="userId" id="userId">
            <br>
            <input type="password" placeholder="패스워드" name="password" id="password">
            <br>
            <input type="text" placeholder="이름" name="userName" id="userName">
            <br>
            <input type="text" placeholder="나이" name="age" id="age">
            <br>
            <input type="email" placeholder="이메일" name="email" id="email">
            <br>
            <input type="tel" placeholder="휴대폰" name="phone" id="phone">
            <br>
            <input type="text" placeholder="주소" name="address" id="address">
            <br>
            <label>성별 : </label>
            <input type="radio" name="gender" id="male" value="M">
            <label for="male">남</label>
            <input type="radio" name="gender" id="female" value="F">
            <label for="female">여</label>
            <br>
            <label>취미 : </label>
            <input type="checkbox" name="hobby" id="hobby0" value="운동">
            <label for="hobby0">운동</label>
            <input type="checkbox" name="hobby" id="hobby1" value="등산">
            <label for="hobby1">등산</label>
            <input type="checkbox" name="hobby" id="hobby2" value="독서">
            <label for="hobby2">독서</label>
            <input type="checkbox" name="hobby" id="hobby3" value="게임">
            <label for="hobby3">게임</label>
            <input type="checkbox" name="hobby" id="hobby4" value="여행">
            <label for="hobby4">여행</label>
            <br><br>
            <input type="submit" value="가입">&nbsp;&nbsp;
            <input type="reset" value="취소">
        </form>
    </div>


</body>
</html>





02_memberJoinResult.jsp



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.sql.*"%>
<%
    //1.한글 인코딩 처리
    request.setCharacterEncoding("utf-8");

    //2.전송값 꺼내서 변수에 기록
    String userId = request.getParameter("userId");
    String password = request.getParameter("password");
    String userName = request.getParameter("userName");
    int age = Integer.parseInt(request.getParameter("age"));
    String gender = request.getParameter("gender");
    String email = request.getParameter("email");
    String phone = request.getParameter("phone");
    String address = request.getParameter("address");
   
    String[] hobbies = request.getParameterValues("hobby");
   
    //String[]을 구분자로 연결하는 String의 스태틱메소드 join
    String hobby = String.join(",", hobbies);
   
    //3.비즈니스로직 작성
    Connection conn = null;
    PreparedStatement pstmt = null;
    int result = 0;
    String msg = "";
   
    String query = "INSERT INTO MEMBER VALUES(?,?,?,?,?,?,?,?,?,SYSDATE)";
   
    try{
        Class.forName("oracle.jdbc.driver.OracleDriver");
       
        conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "jsp", "jsp");
       
        pstmt = conn.prepareStatement(query);
        pstmt.setString(1, userId);
        pstmt.setString(2, password);
        pstmt.setString(3, userName);
        pstmt.setString(4, gender);
        pstmt.setInt(5, age);
        pstmt.setString(6, email);
        pstmt.setString(7, phone);
        pstmt.setString(8, address);
        pstmt.setString(9, hobby);
       
        result = pstmt.executeUpdate();
       
        if(result > 0){
            conn.commit();
            msg = "성공적으로 회원 가입 되었습니다.";
        }else{
            conn.rollback();
            msg = "회원 가입에 실패했습니다.";
        }
       
       
    }catch(Exception e){
        e.printStackTrace();
    }finally {
        try{
            pstmt.close();
            conn.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
   
   
   
   
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <ul style="list-style: none; line-height: 200%">
        <li>아이디 : <%= userId %></li>
        <li>패스워드 : <%= password %></li>
        <li>이름 : <%= userName %></li>
        <li>나이 : <%= age %></li>
        <li>이메일 : <%= email %></li>
        <li>성별
            <span id="gender" style="font-weight: bold;
            color: <%
                    String genderColor = "";
                    if("M".equals(gender)){
                        genderColor = "blue";
                    }else{
                        genderColor = "red";
                    }
                %><%=genderColor%>"><%=gender %></span>
        </li>
        <li>휴대폰 : <%= phone %></li>
        <li>주소 : <%= address %></li>
        <li>취미 : <%= hobby %></li>
   
    </ul>
    <hr>
    <p><%= msg %></p>


</body>
</html>

------------------------------------------------------------------------------------------------------------------------------------





주목해야 할 점은 html문 중간중간에 <%%>를 사용하여 연산된 데이터를 표현하는 것


또한 Jquery 문에도 조건문과 섞어서 사용하는 방법을 주목하자.












+ Recent posts