네이버 클라우드 부트캠프/복습 정리

44일차 JSP [ 커넥션풀, 마이페이지 만들기 ]

유정♡ 2024. 4. 23. 11:17

[ 데이터베이스 커넥션 풀 ]

     - 웹 페이지에 접속자의 수가 많게 되면 커넥션을 그만큼 걸어주어야하기 때문에 서버에 부하가 발생!!

        -> 서버가 다운되는 현상 발생!! -> 커넥션 풀 필요

     - DBCP(DataBase Connection Pool) : 접속 인원이 많은 웹 페이지에서 데이터베이스의 효율성과 속도를 높이기 위해 사용됨

        -> DBCP 매니저가 어느 정도의 연결을 확보해 놓고 있다가 클라이언트의 요청이 들어오면 연결해주고,

             클라이언트의 작업이 다 끝나면 연결을 다시 DBCP매니저에게 반환한다.

 

[ 자바빈, 폼 ]

   디비 먼저 만들고 !

       - 서버에서 입력한 값을 빈(useBean+setProperty)에다 저장

       - 빈에서 저장한 값을 가져와 테이블에 삽입


 

[ eclipse와 Mysql 연결 ]

    - JSP에서 직접 연결 하는 과정 !!!

[ MemberJoin.jsp JSP 파일 ]

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<body>
	<form action="MemberJoinProc.jsp" method="post">

		<table width="500" border="1">

			<tr height="50">
				<td width="150" align="center">아이디</td>
				<td widht="350" align="center"><input type="text" name="id"
					size="40"></td>
					
			<tr height="50">
				<td width="150" align="center">패스워드</td>
				<td widht="350" align="center"><input type="password"
					name="pass1" size="40"></td>
			<tr height="50">

				<td width="150" align="center">패스워드확인</td>
				<td widht="350" align="center"><input type="password"
					name="pass2" size="40"></td>
					
			<tr height="50">
				<td width="150" align="center">이메일</td>
				<td widht="350" align="center"><input type="email" name="email"
					size="40"></td>
					
			<tr height="50">
				<td width="150" align="center">전화번호</td>
				<td widht="350" align="center"><input type="tel" name="tel"
					size="40"></td>
					
			<tr height="50">
				<td width="150" align="center">당신의관심분야</td>
				<td width="350" align="center"><input type="checkbox"
					name="hobby" value="캠핑">캠핑 <input type="checkbox"
					name="hobby" value="등산">등산 <input type="checkbox"
					name="hobby" value="영화">영화 <input type="checkbox"
					name="hobby" value="독서">독서</td>
			</tr>

			<tr height="50">
				<td width="150" align="center">당신의직업은</td>
				<td width="350" align="center"><select name="job">
						<option value="교사">교사</option>
						<option value="변호사">변호사</option>
						<option value="의사">의사</option>
						<option value="기술사">기술사</option>
				</select></td>
			</tr>

			<tr height="50">
				<td width="150" align="center">당신의연령은</td>
				<td width="350" align="center"><input type="radio" name="age"
					value="10">10대 <input type="radio" name="age" value="20">20대
					<input type="radio" name="age" value="30">30대 <input
					type="radio" name="age" value="40">40대</td>
			</tr>

			<tr height="50">
				<td width="150" align="center">하고싶은말</td>
				<td width="350" align="center"><textarea rows="5" cols="40"
						name="info"></textarea></td>
			</tr>

			<tr height="50">
				<td align="center" colspan="2"><input type="submit"
					value="회원가입"> <input type="reset" value="취소"></td>
			</tr>

		</table>
	</form>
	</center>

</body>
[ MemberJoinProc.jsp JSP 파일 ]

<%@ page import="java.sql.Connection, java.sql.DriverManager, java.sql.PreparedStatement, java.sql.SQLException" %>
<%@ page import="kr.co.bit.MemberBean" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
<%
	request.setCharacterEncoding("UTF-8");

	//관심분야 같은 건 여러개 선택할 수 있어서(=복수)는 usebean(*맵핑)으로 못 받고 배열로 받아야함!!
	String []hobby=request.getParameterValues("hobby"); // 파라미터 이름을 전달해야 함
	String str="";
	
	//배열에 있는 내용을 하나의 문자열로 저장하겠다
	for(int i=0;i<hobby.length;i++) {
		str+=hobby[i]+"";
	}
%>

<!--  useBean을 이용하여 한꺼번에 데이터 받기 -->
<jsp:useBean id="mbean" class="kr.co.bit.MemberBean"> 
	<jsp:setProperty property="*" name="mbean" /> <!-- useBean안에 setProperty가 있어야 한다 -->
</jsp:useBean>

<%
	mbean.setHobby(str);
	
	String id="root";
	String pw="00000000";
	String url="jdbc:mysql://localhost:3306/yujung";
	
	try{
		Class.forName("com.mysql.cj.jdbc.Driver");
		
		//da에 접속 
		Connection con=DriverManager.getConnection(url,id,pw);
		String sql="insert into member values(?,?,?,?,?,?,?,?)";
		
		PreparedStatement pstmt=con.prepareStatement(sql);
		
		//?에 맞게 데이터를 맵핑
		//MemberBean필드에 저장되어 있는 값을 빼서 Member 테이블 필드에 삽입
		pstmt.setString(1, mbean.getId());
		pstmt.setString(2, mbean.getPass1()); //여기선 pass2는 DB에 넣어줄 필요 없음 !!!
		pstmt.setString(3, mbean.getEmail());
		pstmt.setString(4, mbean.getTel());
		pstmt.setString(5, mbean.getHobby());
		pstmt.setString(6, mbean.getJob());
		pstmt.setString(7, mbean.getAge());
		pstmt.setString(8, mbean.getInfo());
		
		pstmt.executeUpdate();
		
		con.close();
	}catch(Exception e){
		e.printStackTrace();
	}
%>
디비 완료 !!!
</body>
</html>

 


[ eclipse와 server.xml을 통헤 Mysql 연결 ]

    - Servers 파일에서 JDBC 연결 하고 JSP에선 코드만 가져와서 연결하는 과정

1) JSP 파일에 먼저 JDBC 연결 코드 작성 

[ serverTest.jsp JSP 파일 ]

<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.naming.Context"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
<%
	Context init=new InitialContext(); 
	DataSource ds=(DataSource) init.lookup("java:comp/env/jdbc/pool"); //정해져있는 코드
	Connection conn=ds.getConnection();
	out.print("db연동 성공");
	
%>
</body>
</html>

 

2) Servers -> server.xml -> Open With -> Text Editor 

 

3) 아래 코드 삭제 후 아래 코드 복붙

[ 이거 삭제 후 ]
<Context docBase="Tomcat" path="/Tomcat" reloadable="true" source="org.eclipse.jst.jee.server:Tomcat"/><Context docBase="A0419" path="/A0419" reloadable="true" source="org.eclipse.jst.jee.server:A0419"/><Context docBase="A0422" path="/A0422" reloadable="true" source="org.eclipse.jst.jee.server:A0422"/><Context docBase="A0423" path="/A0423" reloadable="true" source="org.eclipse.jst.jee.server:A0423"/></Host>

[ 이거 삽입 비번 이름 맞게 고쳐서 ]
<Context docBase="A0423" path="/A0423" reloadable="true" source="org.eclipse.jst.jee.server:A0423">
         <Resource auth="Container" driverClassName="com.mysql.cj.jdbc.Driver"
            name="jdbc/pool" password="00000000" type="javax.sql.DataSource"
            url="jdbc:mysql://localhost:3306/yujung" username="root"/>
     </Context>
      </Host>


[ 마이페이지 만들기 ]

 

1. MemberJoin.jsp (html로 폼 구조 만듦) -> "회원가입" 버튼 누르면 MemberJoinProc.jsp 페이지 이동

2. MemberJoinProc.jsp

    -> MemberJoin.jsp에서 입력했던 값들을 읽어 들인다.

    -> 회원들 삽입, 삭제, 수정을 위해 MemberDAO 클래스 만듦.

    -> insertMember라는 함수를 호출

    -> 회원가입을 하면 목록이 뜨도록 MemberArray.jsp

3. MemberDAO.java

     -> Mysql 데이터베이스에 연결하고 select, insert, update, delete 작업을 실행해주는 클래스 

     -> insertMember() : 한 사람의 회원 정보를 저장한다. (추가)

     -> 입력폼에서 적은 데이터들을 테이블에 저장한다. (setString)

     -> allSelectMember() : 모든 회원들을 조회한다 (select * from member). 모든 회원들이기 때문에 가변길이인 Vector를 사용해서 입력폼에서 적은 데이터들을 테이블에서 가져와 MemberBean필드에 저장 (setString)

     -> oneMember(String id) : 한 사람 회원을 조회(id 기준으로). 한 사람 회원이기 때문에 모든 정보를 담고 있는 MemberBean 클래스를 사용해서 입력폼에서 적은 데이터들을 테이블에서 가져와 MemberBean 필드에 저장 

     -> getPass(String id) : 매개변수 id를 기준으로 비밀번호가 맞는지 판단한다.

     -> updateMember(MemberBean mbean) : 회원정보를 수정하고 싶으면 비밀번호를 입력해 비밀번호가 맞으면 수정가능할 수있도록 구현(update)

     -> deleteMember(String id) : 비밀번호를 입력해 비밀번호가 맞으면 한 사람의 회원 삭제할 수 있도록 delete 명령(=쿼리) 써서 구현

4. MemberBean.java

    -> useBean을 사용해 데이터를 읽어들일 수 있도록 만듦(set: 저장, get:얻기)

5. MemberArray.jsp

    -> 모든 회원의 정보를 출력해야 하므로 MemberDAO에서 만든 Vector 객체 생성하고 allSelectMember() 함수 호출한다. 웹에 모든 회원 정보를 출력해야 한다. 폼에서 입력했던 값이 저장되었던 MemberBean.java에 있는 get() 호출하여 출력한다.

6. MemberIn.jsp 

     -> MemberArray에서 넘긴 id를 받아주고, 데이터베이스에서 한 회원의 정보를 가져온다.

     -> 버튼을 만들어 페이지 이동시킨다(수정, 삭제, 전체목록, 회원가입). 회원의 정보를 리턴받는다.

7. MemberUpdate.jsp

     -> 회원정보를 수정하기 위해 id를 기준으로 MemberDAO에서 만든 oneMember() 호출한다,

     -> "전체목록" 버튼을 만들어 MemberArray.jsp로 이동

     -> "회원수정" 버튼을 만들어 UpdateProc.jsp로 이동

8. UpdateProc.jsp

      -> "회원수정" 버튼 누르면 수정할 수 있도록 비밀번호가 일치하는지 확인하기 위해 MemberDAO에서 만든 getPass함수 호출해 입력했던 비밀번호(DB에서 가져옴)과 현재 입력한 비밀번호 일치하면 MemberDAO에서 만든 updateMember() 함수를 호출해서 수정할  수있도록 구현.

       -> 수정 후 다시 MemberArray.jsp로 이동 (잘 수정되었는지 확인) 

9. MemberDelete.jsp

      -> 회원정보 삭제하기 위해 id를 기준으로 id값 불러온다.

      -> "회원전체" 버튼을 만들어 MemberArray.jsp로 이동

      -> "삭제" 버튼을 누르면 DeleteProc.jsp로 이동 

10. DeleteProc.jsp

      -> UpdateProc.jsp와 비슷하게 비밀번호 확인해서 일치하면 MemberDAO에서 만든 deleteMember함수 호출해서 삭제됨.

       -> 삭제 후 다시 MemberArray.jsp로 이동. 비밀번호 안 맞으면 자바스크립트로 경고창 뜨게함 (alert) 

 

[ MemberJoin.jsp 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>
	<form action="MemberJoinProc.jsp" method="post">

		<table width="500" border="1">

			<tr height="50">
				<td width="150" align="center">아이디</td>
				<td widht="350" align="center"><input type="text" name="id"
					size="40"></td>
					
			<tr height="50">
				<td width="150" align="center">패스워드</td>
				<td widht="350" align="center"><input type="password"
					name="pass1" size="40"></td>
			<tr height="50">

				<td width="150" align="center">패스워드확인</td>
				<td widht="350" align="center"><input type="password"
					name="pass2" size="40"></td>
					
			<tr height="50">
				<td width="150" align="center">이메일</td>
				<td widht="350" align="center"><input type="email" name="email"
					size="40"></td>
					
			<tr height="50">
				<td width="150" align="center">전화번호</td>
				<td widht="350" align="center"><input type="tel" name="tel"
					size="40"></td>
					
			<tr height="50">
				<td width="150" align="center">당신의관심분야</td>
				<td width="350" align="center"><input type="checkbox"
					name="hobby" value="캠핑">캠핑 <input type="checkbox"
					name="hobby" value="등산">등산 <input type="checkbox"
					name="hobby" value="영화">영화 <input type="checkbox"
					name="hobby" value="독서">독서</td>
			</tr>

			<tr height="50">
				<td width="150" align="center">당신의직업은</td>
				<td width="350" align="center"><select name="job">
						<option value="교사">교사</option>
						<option value="변호사">변호사</option>
						<option value="의사">의사</option>
						<option value="기술사">기술사</option>
				</select></td>
			</tr>

			<tr height="50">
				<td width="150" align="center">당신의연령은</td>
				<td width="350" align="center"><input type="radio" name="age"
					value="10">10대 <input type="radio" name="age" value="20">20대
					<input type="radio" name="age" value="30">30대 <input
					type="radio" name="age" value="40">40대</td>
			</tr>

			<tr height="50">
				<td width="150" align="center">하고싶은말</td>
				<td width="350" align="center"><textarea rows="5" cols="40"
						name="info"></textarea></td>
			</tr>

			<tr height="50">
				<td align="center" colspan="2"><input type="submit"
					value="회원가입"> <input type="reset" value="취소"></td>
			</tr>

		</table>
	</form>
	</center>

</body>
[ memberJoinProc.jsp JSP 파일 ]

<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page import="kr.co.bit.MemberBean, kr.co.bit.MemberDAO" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
<%
    request.setCharacterEncoding("UTF-8");

    // 관심분야 같은 건 여러개 선택할 수 있어서(=복수)는 usebean(*맵핑)으로 못 받고 배열로 받아야함!!
    String[] hobby = request.getParameterValues("hobby"); // 파라미터 이름을 전달해야 함
    String str = "";

    // 배열에 있는 내용을 하나의 문자열로 저장하겠다
    for(int i=0;i<hobby.length;i++) {
        str+=hobby[i]+"";
    }
%>

<!--  useBean을 이용하여 한꺼번에 데이터 받기 -->
<jsp:useBean id="mbean" class="kr.co.bit.MemberBean"> 
    <jsp:setProperty property="*" name="mbean" /> <!-- useBean안에 setProperty가 있어야 한다 -->
</jsp:useBean>

<%
    mbean.setHobby(str);
    
    MemberDAO mdao = new MemberDAO(); //Data Access Object 
    mdao.insertMember(mbean);
    
    //회원가입이 되었다면 회원정보를 보여주는 페이지로 이동
    response.sendRedirect("MemberArray.jsp");
%>

</body>
</html>
[ MemberDAO.java 클래스 ]

package kr.co.bit;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class MemberDAO {

	String id = "root";
	String pw = "00000000";
	String url = "jdbc:mysql://localhost:3306/yujung";

	Connection conn;
	PreparedStatement pstmt;
	ResultSet rs;

	public void getCon() {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");

			conn = DriverManager.getConnection(url, id, pw);

		} catch (Exception e) {
		}
	}

	public void insertMember(MemberBean mbean) {
		try {
			getCon();
			String sql = "insert into member values(?,?,?,?,?,?,?,?)";

			PreparedStatement pstmt = conn.prepareStatement(sql);

			// ?에 맞게 데이터를 맵핑
			// MemberBean필드에 저장되어 있는 값을 빼서 Member 테이블 필드에 삽입
			pstmt.setString(1, mbean.getId());
			pstmt.setString(2, mbean.getPass1());
			pstmt.setString(3, mbean.getEmail());
			pstmt.setString(4, mbean.getTel());
			pstmt.setString(5, mbean.getHobby());
			pstmt.setString(6, mbean.getJob());
			pstmt.setString(7, mbean.getAge());
			pstmt.setString(8, mbean.getInfo());

			pstmt.executeUpdate();

			conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public Vector<MemberBean> allSelectMember() {
		Vector<MemberBean> v = new Vector<MemberBean>();

		try {
			getCon();

			String sql = "select * from member";
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();

			while (rs.next()) {
				MemberBean bean = new MemberBean();

				bean.setId(rs.getString(1));
				bean.setPass1(rs.getString(2));
				bean.setEmail(rs.getString(3));
				bean.setTel(rs.getString(4));
				bean.setHobby(rs.getString(5));
				bean.setJob(rs.getString(6));
				bean.setAge(rs.getString(7));
				bean.setInfo(rs.getString(8));

				v.add(bean); // 테이블에 삽입된 정보들을 다 꺼내서 Memberbean필드에 저장한다
								// 저장 후 백터에 삽입
			}
			conn.close();
		} catch (Exception e) {
		}
		return v;
	}

	public MemberBean oneMember(String id) {
		MemberBean bean = new MemberBean();

		try {
			getCon();
			String sql = "select * from member where id=?";

			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, id);

			rs = pstmt.executeQuery();

			if (rs.next()) {
				bean.setId(rs.getString(1));
				bean.setPass1(rs.getString(2));
				bean.setEmail(rs.getString(3));
				bean.setTel(rs.getString(4));
				bean.setHobby(rs.getString(5));
				bean.setJob(rs.getString(6));
				bean.setAge(rs.getString(7));
				bean.setInfo(rs.getString(8));
			}
			conn.close();
		} catch (Exception e) {
		}
		return bean;
	}

	public String getPass(String id) {
		String pass = "";
		try {
			getCon();

			String sql = "select pass1 from member where id=?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, id);

			rs = pstmt.executeQuery();

			if (rs.next()) {
				pass = rs.getString(1);
			}
			conn.close();
		} catch (Exception e) {
		}
		return pass;
	}

	public void updateMember(MemberBean mbean) {
		getCon();

		try {
			String sql = "update member set email=?, tel=? where id=?";

			pstmt = conn.prepareStatement(sql);

			pstmt.setString(1, mbean.getEmail());
			pstmt.setString(2, mbean.getTel());
			pstmt.setString(3, mbean.getId());

			pstmt.executeUpdate();
			conn.close();
		} catch (Exception e) {
		}
	}

	public void deleteMember(String id) { // id 기준으로 삭제
		getCon();

		try {
			String sql = "delete from member where id=?";

			pstmt = conn.prepareStatement(sql);

			pstmt.setString(1, id);

			pstmt.executeUpdate();
			conn.close();
		} catch (Exception e) {
		}
	}
}
[ MemberArray.jsp JSP 파일 ]

<%@page import="kr.co.bit.MemberBean, kr.co.bit.MemberDAO"%>
<%@page import="java.util.Vector"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
    <%
        // 모든 회원정보 가져온다 
        MemberDAO mdao = new MemberDAO();
    
        // 가변길이인 vector를 이용해 데이터를 저장한 후 -> 화면에 회원들 정보 출력 
        Vector<MemberBean> vec = mdao.allSelectMember();
    %>
    
    <center>
    	<table width="800" border="1">
    		<tr height="50">
    		<td width="150" align="center">아이디</td>
    		<td width="150" align="center">이메일</td>
    		<td width="150" align="center">전화번호</td>
    		<td width="150" align="center">취미</td>
    		</tr>
    		
    		<%
    			for(int i=0;i<vec.size();i++) {
    				MemberBean bean=vec.get(i); 
    		%>
    			<tr height="50">
    				<td width="150" align="center">
    				<a href="MemberIn.jsp?id=<%=bean.getId() %>"><%=bean.getId() %></a></td>
    				<td width="250" align="center"><%=bean.getEmail() %></td>
    				<td width="200" align="center"><%=bean.getTel() %></td>
    				<td width="200" align="center"><%=bean.getHobby() %></td>
    			</tr>
    		<%
    			}
    		%>
    	</table>
    </center>
</body>
</html>
[ MemberIn.jsp JSP 파일 ]

<%@page import="kr.co.bit.MemberBean"%>
<%@page import="kr.co.bit.MemberDAO"%>
<%@ 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>
<!-- 데이터베이스에서 한 회원의 정보를 가져 옴 -->
<%
	String id=request.getParameter("id");
	MemberDAO mdao=new MemberDAO();
	MemberBean mbean=mdao.oneMember(id); //해당하는 id의 회원정보를 리턴받을거임 
%>
<center>
	<h2>회원정보 상세보기</h2>
	<table width="400" border="1">
		<tr height="50">
			<td width="150" align="center">아이디</td>
			<td width="250" align="center"><%=mbean.getId() %></td>
		</tr>
		
		<tr height="50">
			<td width="150" align="center">비밀번호</td>
			<td width="250" align="center"><%=mbean.getPass1() %></td>
		</tr>
		
		<tr height="50">
			<td width="150" align="center">이메일</td>
			<td width="250" align="center"><%=mbean.getEmail() %></td>
		</tr>
		
		<tr height="50">
			<td width="150" align="center">전화번호</td>
			<td width="250" align="center"><%=mbean.getTel() %></td>
		</tr>
		
		<tr height="50">
			<td width="150" align="center">취미</td>
			<td width="250" align="center"><%=mbean.getHobby() %></td>
		</tr>
		
		<tr height="50">
			<td width="150" align="center">직업</td>
			<td width="250" align="center"><%=mbean.getJob() %></td>
		</tr>
		
		<tr height="50">
			<td width="150" align="center">아이디</td>
			<td width="250" align="center"><%=mbean.getId() %></td>
		</tr>
		
		<tr height="50">
			<td width="150" align="center">정보</td>
			<td width="250" align="center"><%=mbean.getInfo() %></td>
		</tr>
		
		<tr height="50">
			<td colspan="2" align="center">
			<button onclick="location.href='MemberUpdate.jsp?id=<%=mbean.getId() %>'">수정</button>
			<button onclick="location.href='MemberDelete.jsp?id=<%=mbean.getId() %>'">삭제</button>
			<button onclick="location.href='MemberArray.jsp'">전체목록</button>
			<button onclick="location.href='MemberJoin.jsp'">회원가입</button>
		</tr>
		
	</table>
</center>

</body>
</html>
[ UpdateProc.jsp JSP 파일 ]

<%@page import="kr.co.bit.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
<%
	request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="mbean" class="kr.co.bit.MemberBean">
	<jsp:setProperty property="*" name="mbean" />
</jsp:useBean>

<%
	String id=request.getParameter("id");
	MemberDAO mdao=new MemberDAO();
	
	//데이터베이스에서 패스워드 가져오기
	String pass=mdao.getPass(id);
	
	if(mbean.getPass1().equals(pass)) {
		mdao.updateMember(mbean);
		response.sendRedirect("MemberArray.jsp");
		
		//DB패스워드와 입력패스워드가 같다면 member 테이블 수정할 수 있다.
	}
	else{
%>
	<script type="text/javascript">
		alert("패스워드가 틀렸다. 다시 입력해라");
		history.go(-1);
	</script>
<%
	}
%>
</body>
</html>
[ MemberUpdate.jsp JSP 파일 ]

<%@page import="kr.co.bit.MemberDAO"%>
<%@page import="kr.co.bit.MemberBean"%>
<%@page import="java.lang.reflect.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
<%
	String id=request.getParameter("id");	
	MemberDAO mdao=new MemberDAO();
	MemberBean mbean=mdao.oneMember(id);
%>
<center>
	<h2>회원정보 수정하기</h2>
		<table width="400" border="1">
			<form action="UpdateProc.jsp" method="post">
				<tr height="50">
					<td width="150" align="center">아이디</td>
					<td width="250"><%=mbean.getId() %></td>
				</tr>
				
				<tr height="50">
					<td width="150" align="center">이메일</td>
					<td width="250">
						<input type="email" name="email" value="<%=mbean.getEmail() %>"></td>
				</tr>		
						
				<tr height="50">
					<td width="150" align="center">전화번호</td>
					<td width="250">
						<input type="tel" name="tel" value="<%=mbean.getTel() %>"></td>
				</tr>	
				
				<tr height="50">
					<td width="150" align="center">패스워드</td>
					<td width="250">
						<input type="password" name="pass1"></td>
				</tr>							
				
				<tr height="50">
					<td colspan="2" align="center">
					<input type="hidden" name="id" value="<%=mbean.getId() %>"> <!--hidden값(=숨겨서 서버에 전송한다)으로 걸어놈 !!! -->
					<input type="submit" value="회원수정">
				</form>	
				
				<button onclick="location.href='MemberArray.jsp'">전체목록</button> <!-- 회원정보상세보기 -> 회원목록전체보기 -->
				
				</td>
				</tr> 
			</form>
		</table>
</center>
</body>
</html>
[ DeleteProc.jsp JSP 파일 ]

<%@page import="kr.co.bit.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
<%
	request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="mbean" class="kr.co.bit.MemberBean">
	<jsp:setProperty property="*" name="mbean" />
</jsp:useBean>

<%
	MemberDAO mdao=new MemberDAO();
	
	//MemberDAO에서 패스워드 가져오기
	String pass=mdao.getPass(mbean.getId());
	
	if(mbean.getPass1().equals(pass)) {
		mdao.deleteMember(mbean.getId());
		response.sendRedirect("MemberArray.jsp");
		
		//DB패스워드와 입력패스워드가 같다면 member 테이블 삭제할 수 있다.
	}
	else{
%>
	<script type="text/javascript">
		alert("패스워드가 틀렸다. 다시 입력해라");
		history.go(-1);
	</script>
<%
	}
%>
</body>
</html>
[ MemberDelete.jsp JSP 파일 ]

<%@page import="kr.co.bit.MemberBean"%>
<%@page import="kr.co.bit.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
<%
	String id=request.getParameter("id");
	MemberDAO mdao=new MemberDAO();
	MemberBean mbean=mdao.oneMember(id);
%>
<center>
	<h2>회원정보 삭제하기</h2>
		<table width="400" border="1">
			<form action="DeleteProc.jsp" method="post">
				<tr height="50">
					<td width="150" align="center">아이디</td>
					<td width="250"><%=mbean.getId() %></td>
				</tr>
				
				<tr height="50">
					<td width="150" align="center">이메일</td>
					<td width="250">
						<input type="email" name="email" value="<%=mbean.getEmail() %>"></td>
				</tr>		
						
				<tr height="50">
					<td width="150" align="center">전화번호</td>
					<td width="250">
						<input type="tel" name="tel" value="<%=mbean.getTel() %>"></td>
				</tr>	
				
				<tr height="50">
					<td width="150" align="center">패스워드</td>
					<td width="250">
						<input type="password" name="pass1"></td>
				</tr>							
				
				<tr height="50">
					<td colspan="2" align="center">
					<input type="hidden" name="id" value="<%=request.getParameter("id") %>"> <!--hidden값(=숨겨서 서버에 전송한다)으로 걸어놈 !!! -->
					<input type="submit" value="회원삭제">
				</form>	
					
				<button onclick="location.href='MemberArray.jsp'">전체목록</button> <!-- 회원정보상세보기 -> 회원목록전체보기 -->
								
				</td>
				</tr> 
		</table>
</center>
</body>
</html>

 


[ 복습 ]

   1) Person.java : 본인 정보를 저장하는 자바 빈

   2) PersonForm.jsp : 이름, 별명, 직업, 이메일 입력받는 폼

   3) Person.jsp : 자바 빈에 저장하고 정보 얻어와 출력

[ PersonBean.java JavaBean 파일 ]

package kr.co.bit;

public class PersonBean {
	
	private String name;
	private String nik;
	private String job;
	private String email;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getNik() {
		return nik;
	}
	public void setNik(String nik) {
		this.nik = nik;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
	
}

——————————

[ personForm.jsp 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>
<form action="Person.jsp">
	이름: <input type="text" name="name"><br>
	별명: <input type="text" name="nik"><br>
	직업: <input type="text" name="job"><br>
	이메일: <input type="text" name="email"><br>
	<input type="submit" value="제출하기">
</form>
</body>
</html>

——————————

[ person.jsp 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>
<%
	request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="person" class="kr.co.bit.PersonBean" />
<jsp:setProperty property="*" name="person"/>

이름: <jsp:getProperty property="name" name="person"/><br>
별명: <jsp:getProperty property="nik" name="person"/><br>
직업: <jsp:getProperty property="job" name="person"/><br>
이메일: <jsp:getProperty property="email" name="person"/>
</body>
</html>

 

 

    1) param.js에서 유효성 체크

    2) param.jsp 폼 작성

    3) param.java Servlet 클래스로 전송된 값 출력

[ param.js JavaScript 파일 ]

function validateForm() {
    var id = document.getElementById("id").value;
    var age = document.getElementById("age").value;

    if (id == "" || age == "") {
        alert("아이디와 나이를 모두 입력하세요.");
        return false;
    }
    if (isNaN(age)) {
        alert("나이는 숫자만 입력 가능합니다.");
        return false;
    }
    return true;
}

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

[ param.jsp JSP 파일 ]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>Parameter Form</title>
    <script src="param.js"></script>
</head>
<body>
<form action="param" method="post" onsubmit="return validateForm()">
    아이디: <input type="text" id="id" name="id"><br>
    나이: <input type="text" id="age" name="age"><br>
    <input type="submit" value="전송">
</form>
</body>
</html>

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

[ param.java Servlet 클래스 ]

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        String id = request.getParameter("id");
        int age = Integer.parseInt(request.getParameter("age"));
        
        out.println("입력된 아이디: " + id + "<br>");
        out.println("입력된 나이: " + age + "<br>");
        
		}

 

 

1) movie.jsp

2) mivieBean.java

3) movie2.jsp

[ movie.jsp JSP 파일 ]

%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
<form action="movie2.jsp" method="post">
	<table>
		<tr><td>영화제목</td> 
		<td><input type="text" name="title"></tr>
		
		<tr><td>가격</td> 
		<td><input type="text" name="price"></tr>
		
		<tr><td>감독</td> 
		<td><input type="text" name="director"></tr>
		
		<tr><td>시놉시스</td>
		 <td><textarea name="synopsis"></textarea></tr>
		 
		<tr><td>장르</td> 
		<td><select name="genre">
			<option value="호러">호러
			<option value="멜로">멜로
			<option value="코미디">코미디
		</select>
		</table>
		
		<input type="submit" value="전송">
</form>
</body>
</html>

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

[ MovieBean.java JavaBean ]

package kr.co.bit;

public class movieBean {
	
	private String title;
	private String price;
	private String director;
	private String synopsis;
	private String genre;
	
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
	public String getDirector() {
		return director;
	}
	public void setDirector(String director) {
		this.director = director;
	}
	public String getSynopsis() {
		return synopsis;
	}
	public void setSynopsis(String synopsis) {
		this.synopsis = synopsis;
	}
	public String getGenre() {
		return genre;
	}
	public void setGenre(String genre) {
		this.genre = genre;
	}
}

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

[ movie2.jsp JSP 파일 ]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
<!-- useBean으로 세팅해 getPropert로 출력 -->
<%
	request.setCharacterEncoding("UTF-8");
%>

<jsp:useBean id="movie" class="kr.co.bit.movieBean">
  <jsp:setProperty property="*" name="movie"/>
</jsp:useBean>

	영화제목 : <%=movie.getTitle() %><br>
	가격: <%=movie.getPrice() %><br>
	감독 : <%=movie.getDirector() %><br>
	시놉시스 : <%=movie.getSynopsis() %><br>
	장르 : <%=movie.getGenre() %><br>
</body>
</html>

 

 

1) itemForm.jsp

2) item.jsp

3) itemBean.java

[ itemForm.jsp JSP 파일 ]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
	<form method="get" action="item.jsp">
		name : <input type="text" name="name"><br>
		가격 : <input type="text" name="price"><br>
		desc1 : <input type="text" name="desc1"><br>
		<input type="submit" value="전송">
	</form>
</body>
</html>

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

[ item.Bean.java JavaBean 파일 ]

package kr.co.bit;

public class itemBean {
	
	private String name;
	private int price;
	private String desc1;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public String getDesc1() {
		return desc1;
	}
	public void setDesc1(String desc1) {
		this.desc1 = desc1;
	}
}

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

[ item.jsp JSP 파일 ]

<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<body>
<%
	request.setCharacterEncoding("UTF-8");
%>

<jsp:useBean id="item" class="kr.co.bit.itemBean">
	<jsp:setProperty property="*" name="item" />
</jsp:useBean>

<%
	String id="root";
	String pw="00000000";
	String url="jdbc:mysql://localhost:3306/yujung";
	
	try{
		Class.forName("com.mysql.cj.jdbc.Driver");
		
		//da에 접속 
		Connection con=DriverManager.getConnection(url,id,pw);
		String sql="insert into item values(?,?,?)";
		
		PreparedStatement pstmt=con.prepareStatement(sql);
		
		//?에 맞게 데이터를 맵핑
		//itemBean필드에 저장되어 있는 값을 빼서 item 테이블 필드에 삽입
		pstmt.setString(1, item.getName());
		pstmt.setInt(2, item.getPrice());
		pstmt.setString(3, item.getDesc1());
		
		pstmt.executeUpdate();
		
		con.close();
	}catch(Exception e){
		e.printStackTrace();
	}
%>

db에 <%=item.getName() %>값 삽입(=추가) 완료 !!

</body>
</html>

db에서 값 들어간거 확인 완료 !!

 

728x90