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)
<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="글등록"> <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가지다.
- session.invalidate
- 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를 검색해보자
- 검색확인완료!