[54일차] JSP - 페이지 회원가입, 로그인

SOSO·2022년 7월 5일
0

학원

목록 보기
54/59

데이터베이스

  • 회원정보를 저장, 관리하기위한 테이블 생성
  • Unique한 값을 얻기 위한 시퀀스 생성
create table tboard(
  num number primary key,
  name varchar2(30) not null,
  title varchar2(150) not null,
  passwd varchar2(10) not null,
  content varchar2(4000) not null,
  reg_date date not null
);

create sequence tboard_seq;

CRUD 기능

  • Create : 글 작성
  • Read : 글 보기
  • Update : 글 수정
  • Delete : 글 삭제

Create

글 작성 기능


<%
	//전송된 데이터 인코딩 처리
	request.setCharacterEncoding("utf-8");

	//전송된 데이터 반환
	String name = request.getParameter("name");
	String title = request.getParameter("title");
	String passwd = request.getParameter("passwd");
	String content = request.getParameter("content");

	//DB연동
	Connection conn = null;
	PreparedStatement pstmt = null;
	String sql = null;
	
	try{
		//JDBC 수행 1단계 : 드라이버 로드
		Class.forName(driverName);
		//JDBC 수행 2단계 : Connection 객체 생성
		conn = DriverManager.getConnection(jdbcUrl,dbId,dbPass);
		
		//SQL문 작성
		sql = "INSERT INTO tboard (num,name,title,passwd,"
		    + "content,reg_date) VALUES (tboard_seq.nextval,"
		    + "?,?,?,?,SYSDATE)";
		
		//JDBC 수행 3단계 : PreparedStatement 객체 생성
		pstmt = conn.prepareStatement(sql);
		//?에 데이터 바인딩
		pstmt.setString(1,name);
		pstmt.setString(2,title);
		pstmt.setString(3,passwd);
		pstmt.setString(4,content);
		
		//JDBC 수행 4단계 : SQL문 실행
		pstmt.executeUpdate();
%>

Read

게시글 읽기

<%
	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	String sql = null;
	
	try{
		//JDBC 수행 1단계 : 드라이버 로드
		Class.forName(driverName);
		//JDBC 수행 2단계 : Connection 객체 생성
		conn = DriverManager.getConnection(jdbcUrl,dbId,dbPass);
		
		//SQL문 작성
		sql = "SELECT * FROM tboard ORDER BY num DESC";
		
		//JDBC 수행 3단계 : PreparedStatement 객체 생성
		pstmt = conn.prepareStatement(sql);
		
		//JDBC 수행 4단계 : SQL문을 테이블에 반영하고 결과행들을 
		//ResultSet에 담음
		rs = pstmt.executeQuery();
%>
		<table>
			<tr>
				<th>글번호</th>
				<th>제목</th>
				<th>작성자</th>
				<th>작성일</th>
			</tr>
<%		
	    while(rs.next()){
	    	int num = rs.getInt("num");
	    	String name = rs.getString("name");
	    	String title = rs.getString("title");
	    	Date reg_date = rs.getDate("reg_date");
%>
			<tr>
				<td><%= num %></td>
				<td><a href="s05_detailTest.jsp?num=<%=num%>"><%= title %></a></td>
				<td><%= name %></td>
				<td><%= reg_date %></td>
			</tr>
<%  	    	
	    }//end of while
%>
		</table>
<%	    	
	}catch(Exception e){
%>
		<div class="result-display">
			<span>오류 발생!</span>
		</div>
<%		
		e.printStackTrace();
	}finally{
		//자원정리
		if(rs!=null)try{rs.close();}catch(SQLException e){}
		if(pstmt!=null)try{pstmt.close();}catch(SQLException e){}
		if(conn!=null)try{conn.close();}catch(SQLException e){}
	}
	
%>

Update

글 수정


<%
	//전송된 데이터 인코딩 처리
	request.setCharacterEncoding("utf-8");
	
	//전송된 데이터 반환
	int num = Integer.parseInt(request.getParameter("num"));
	String name = request.getParameter("name");
	String title = request.getParameter("title");
	String passwd = request.getParameter("passwd");
	String content = request.getParameter("content");
	
	Connection conn = null;
	PreparedStatement pstmt = null;
	String sql = null;
	
	try{
		//JDBC 수행 1단계 : 드라이버 로드
		Class.forName(driverName);
		//JDBC 수행 2단계 : Connection 객체 생성
		conn = DriverManager.getConnection(jdbcUrl,dbId,dbPass);
		
		//SQL문 작성
		sql = "UPDATE tboard SET name=?,title=?,passwd=?"
		    + ",content=? WHERE num=?";
		
		//JDBC 수행 3단계 : PreparedStatement 객체 생성
		pstmt = conn.prepareStatement(sql);
		//?에 데이터 바인딩
		pstmt.setString(1, name);
		pstmt.setString(2, title);
		pstmt.setString(3, passwd);
		pstmt.setString(4, content);
		pstmt.setInt(5, num);
		
		//JDBC 수행 4단계 : SQL문 실행
		pstmt.executeUpdate();
%>
	<div class="result-display">
		<div class="align-center">
			글수정 완료!<br>
			<input type="button" value="글상세"
			   onclick="location.href='s05_detailTest.jsp?num=<%=num%>'">
		</div>
	</div>
<%		
	}catch(Exception e){
%>
	<div class="result-display">
		<div class="align-center">
			오류 발생! 글수정 실패!<br>
			<input type="button" value="글수정 폼"
			   onclick="location.href='s06_updateTestForm.jsp?num=<%=num%>'">
		</div>
	</div>
<%		
		e.printStackTrace();
	}finally{
		//자원정리
		if(pstmt!=null)try{pstmt.close();}catch(SQLException e){}
		if(conn!=null)try{conn.close();}catch(SQLException e){}
	}
	
%>

Delete

글 삭제



<%
	//전송된 데이터 인코딩 처리
	request.setCharacterEncoding("utf-8");

	//전송된 데이터 반환
	int num = Integer.parseInt(request.getParameter("num"));
	
	Connection conn = null;
	PreparedStatement pstmt = null;
	String sql = null;
	
	try{
		//JDBC 수행 1단계 : 드라이버 로드
		Class.forName(driverName);
		//JDBC 수행 2단계 : Connection 객체 생성
		conn = DriverManager.getConnection(jdbcUrl,dbId,dbPass);
		
		//SQL문 작성
		sql = "DELETE FROM tboard WHERE num=?";
		
		//JDBC 수행 3단계 : PreparedStatement 객체 생성
		pstmt = conn.prepareStatement(sql);
		//?에 데이터 바인딩
		pstmt.setInt(1, num);
		
		//JDBC 수행 4단계 : SQL문 실행
		pstmt.executeUpdate();
%>
		<div class="result-display">
			<div class="align-center">
				글삭제 완료!<br>
				<input type="button" value="목록 보기"
				 onclick="location.href='s02_selectTest.jsp'">
			</div>
		</div>
<%
	}catch(Exception e){
%>
		<div class="result-display">
			<div class="align-center">
				오류 발생! 글삭제 실패!<br>
				<input type="button" value="목록 보기"
			  onclick="location.href='s02_selectTest.jsp'">
			</div>
		</div>
<%		
		e.printStackTrace();
	}finally{
		//자원정리
		if(pstmt!=null)try{pstmt.close();}catch(SQLException e){}
		if(conn!=null)try{conn.close();}catch(SQLException e){}
	}
	
%>
profile
한다 열심히

0개의 댓글