[SPRING] 게시판만들기2 [ Model 1/ 글삭제/ 글수정/ 글등록/ 검색하기]

🐷Jinie (juniorDeveloper)·2020년 11월 26일
1

JSP/MVC/SPRING

목록 보기
52/81

1. getBoard.jsp에 링크걸기

  • 글삭제, 글등록, 글목록 을 실행할 수 있는 링크를 적어준다.
  • 글삭제 기능의 경우 삭제할 seq를 받아야 실행할 수 있기때문에 링크에 seq를 함께 넘겨준다.

2. 글삭제 기능 (delete)

  • deleteBoard_proc.jsp 파일을 설정한다.
  • response.sendRedirect를 이용해서 삭제가 완료되면 목록보기페이지로 가도록 설정했다.
  • dao객체를 만들어 deleteBoard메서드를 이용한다.
  • 이때 파라미터는 웹에서 넘겨준 seq를 받아서 이용한다.
  • BoardDaoImpl 파일에 deleteBoard 메서드를 만들어준다.
private final String delete_sql = "delete  from  board  where seq=? ";
@Override
	public void deleteBoard(int s) {
		try {
			pstmt = con.prepareStatement(delete_sql);
			pstmt.setInt(1, s);
			pstmt.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			JDBCUtill.close(pstmt, con);
		}
	}
  • 25번 데이터를 지워보자

  • 25번 데이터가 없어진 것을 볼 수 있다.

3. 글등록 기능 (insert)

  • 글쓰기 페이지를 jsp로 만든다.
<form action="insertBoard_proc.jsp">
	 <table border=1 width=500>
		 <tr>
		 	<td>제목</td> <td><input type="text" name="title"></td>
		 </tr>
		 <tr>
		 	<td>작성자</td> <td><input type="text" name="writer"></td>
		 </tr>
		 <tr>
		 	<td>글내용</td> <td><textarea rows="5" cols="40" name="content"></textarea>  </tr>
		 <tr>
		 	<td colspan=2 align="center"><input type="submit" value="글등록">&emsp;<input type="reset" value="다시쓰기"></td>
		 </tr>
	 </table>
</form>

  • 글쓰기페이지에서 form으로 입력받은 값을 insertBoard_proc.jsp파일에서 받아 DAO메서드로 값을 넘겨준다.
<%@page import="com.springbook.biz.boarddao.BoardDaoImpl"%>
<%@page import="com.springbook.biz.boarddao.BoardDao"%>
<%@page import="com.springbook.biz.board.BoardVO"%>
<%@page import="com.springbook.biz.users.UserVo"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.springbook.biz.usersdao.*" %>
<%
	String title = request.getParameter("title");
	String writer = request.getParameter("writer");
	String content = request.getParameter("content");
	
	BoardVO vo = new BoardVO();
	vo.setTitle(title);
	vo.setWriter(writer);
	vo.setContent(content);
	BoardDao dao = new BoardDaoImpl();
	dao.insertBoard(vo);
	
	response.sendRedirect("getBoardList.jsp");
	
%>
  • 글등록이 완료되면 getBoardList.jsp로 돌아가서 등록된 글을 확인할 수 있는 글목록이 보여진다.
  • DAO에 insert기능의 메서드를 작성한다.
@Override
	public void insertBoard(BoardVO vo) {	
		try {
			pstmt = con.prepareStatement(insert_sql);
			pstmt.setString(1, vo.getTitle());
			pstmt.setString(2, vo.getWriter());
			pstmt.setString(3, vo.getContent());
			pstmt.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			JDBCUtill.close(pstmt, con);
		}
	}
  • 잘 실행되는지 테스트를 해보자

  • 목록에 잘 들어온 것을 볼 수 있고
    상세보기에서도 글내용을 잘 불러오는지 보자
  • 글내용도 잘 불러오고있다.

4. 글수정 기능 (update)

  • getBoard.jsp 파일의 submit type의 form action에 updateBoard_proc.jsp 로의 링크를 연결해준다.
<form action="updateBoard_proc.jsp">
  • 이때, seq가 쿼리의 where 조건의 기준이 되는 값이기 때문에, mainSeq로 기존의 데이터기준점인 seq를 hidden으로 값을 넘겨주었다.
  • 이렇게해서 수정하는 seq와 기존의 seq를 모두 쿼리문에 넣어서 실행해주어야 제대로 쿼리문이 실행된다.
  • updateBoard_proc.jsp를 작성한다. 각각 변수의 형에 맞게 웹에서 넘어온 자료형을 형전환해주는 부분이 중요하다.
<%@page import="java.sql.Date"%>
<%@page import="com.springbook.biz.board.BoardVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.springbook.biz.boarddao.*" %>
<%@ page import="com.springbook.biz.board.*" %>
<%
	int seq = Integer.parseInt(request.getParameter("seq"));
	String title = request.getParameter("title");
	String writer = request.getParameter("writer");
	String content = request.getParameter("content");
	Date regDate = Date.valueOf(request.getParameter("regdate"));
	int cnt = Integer.parseInt(request.getParameter("cnt"));
	
	BoardVO vo = new BoardVO();
	vo.setSeq(seq);
	vo.setTitle(title);
	vo.setWriter(writer);
	vo.setContent(content);
	vo.setRegDate(regDate);
	vo.setCnt(cnt);
	BoardDao dao = new BoardDaoImpl();
	dao.updateBoard(vo);
	
	response.sendRedirect("getBoardList.jsp");
%>
  • 마지막에 모든 처리가 끝나면 getBoardList.jsp를 연결해서 목록에서 수정내용을 확인할 수 있도록 진행한다.
  • 33번 글쓰기테스트를 수정해보자

  • 입력값으로 수정이 잘 이루어진 것을 볼 수 있다.

5. 세션 id값이 없으면 무조건 login.jsp로 가기

  • session.getAttribute값인 String id 가 null이거나 공백일경우 login.jsp로 링크를 걸고
    else면(id값이 있으면) 해당 문구를 출력하도록 진행한다.
  • session의 값이 없는상태에서는 사이트가 login.jsp로 연결되는 것을 볼 수 있다.
  • 로그인을 하면 로그인성공멘트와 함께 보려고하는 페이지가 잘 출력된다.

6. logout 구현하기

  • 로그아웃기능을 구현해보자
  • session.invalidate를 이용해서 session에 담긴내용을 없애준다.
  • session을 죽이는 방법은 2가지다.
  1. session.invalidate
  2. session변수에 값을 공백으로 대체대입.
  • 사용자가 보는 화면에 logout.jsp를 링크해준 문구 '로그아웃'을 생성한다.
<a href="logout.jsp">[로그아웃]</a>
  • 잘 작동하는지 테스트해보면
    화면에 [로그아웃] 버튼이 잘 보이고 클릭하면

    로그아웃 후 다시 로그인 화면이 등장한다.

7. 검색하기

  • getBoardList.jsp 아래에 검색할 수 있는 창을 만든다.
 <form action="getBoardList.jsp">
	 	<select name="ch1">
	 		<option value = "title"> 제목 </option>
	 		<option value = "content"> 내용 </option>
	 	</select>
	 	<input type="text" name="ch2">
	 	<input type="submit" value="검색하기">
	 </form>

  • 검색 카테고리 : ch1
    검색 내용 : ch2
  • 만약에 ch1이 null일경우를 설정해서 nullPointException을 방지해준다.
if(request.getParameter("ch1") == null || request.getParameter("ch1") == ""){
		String ch1="";
		String ch2="";
	}else{
		String ch1  = request.getParameter("ch1");
		String ch2 = request.getParameter("ch2");
		vo.setCh1(ch1);
		vo.setCh2(ch2);
	}
  • BoardDaoImpl을 작성하는데, 이때 주의할 점은 ?로 String변수값을 넣으면 '' 작은따옴표가 자동으로 쿼리에 들어간다는 점이다.
  • 따라서 칼럼명에 ''가 들어가면 올바른 칼럼을 검색할 수 없다.
    (검색결과가 없다고 나옴)
  • 또한, 검색하고자하는 검색내용에도 ''가 들어가면 쿼리문법오류가 발생한다.
  • 그러므로 쿼리문을 작성할때 아래와같이 작성하자
  • jd를 검색해보자
  • 검색확인완료!
profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글