게시판1,2,3...jsp 여러개 <-> 게시판servlet 하나 <-> DB
게시판servlet 안에서는 insert.do, select.do 등 여러경로가 존재한다
@WebServlet("*.do")
*.do
: ~.do 로 선언된 HTTP호출에 대해 반응함
보안을 위해 직접적으로 jsp경로에 접근하는게 아니라
servlet을 호출해서 jsp파일을 돌려주는 간접접근 방식울 사용해야함
web-inf 폴더
에 존재한 클라이언트 경로에는 서버가 없으면 접근이 불가능해서 주소만으론 들어갈 수 없음
<jsp:forward page="list.do"></jsp:forward>
welcome-file
: 서버가 없어도 접속할 수 있는 사이트의 시작점. 메인화면. filter에서 여러개의 경로로 지정할 수 있다
index.jsp 호출 -> list.do 호출 -> db에서 전체 데이터 가져오기 -> list.jsp에 보여줌 -> index.jsp에서 포워딩
그래서 index.jsp라는 웰컴경로만으로 주소노출없이 데이터 표현가능
private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<BoardVO> list=dao.select();
String path=BOARD_URL+LIST+EXTENSION;
RequestDispatcher dispatcher=request.getRequestDispatcher(path);
request.setAttribute("list", list);
dispatcher.forward(request, response);
}//end list()
게시판 메인은 db에서 데이터를 가져와 table로 표현한다.
가독성을 위해 jstl을 사용함!
<tbody>
<c:forEach var="vo" items="${list }">
<tr>
<td>${vo.bno }</td>
<td>${vo.title }</td>
<td>${vo.userid }</td>
<td>${vo.cdate }</td>
</tr>
</c:forEach>
</tbody>
if문으로 여러 jsp페이지 중 연결되는 메소드를 호출한다
String requestURI = request.getRequestURI();
String requestMethod=request.getMethod();
System.out.println("호출 경로 : "+requestURI);
System.out.println("호출 방식 : "+requestMethod);
if(requestURI.contains(REGISTER+SERVER_EXTENSION)) {
System.out.println("register 호출 확인");
if(requestMethod.equals("GET")) {
registerGET(request, response);
}else if(requestMethod.equals("POST")) {
registerPOST(request, response);
}
}
페이지를 이동하거나 <a>
태그로 서블릿에 이동하는 경우 get방식이 사용된다
private void registerGET(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path=BOARD_URL+REGISTER+EXTENSION;
RequestDispatcher dispatcher=request.getRequestDispatcher(path);
dispatcher.forward(request, response);
}//end registerGET()
jsp에서 데이터를 받아 DB에 데이터를 저장하는 경우 post방식이 사용된다.
get방식과 post방식의 경로는 동일하지만 method로 구분할 수 있다.
private void registerPOST(HttpServletRequest request, HttpServletResponse response) throws IOException {
String userid=request.getParameter("userid");
String title=request.getParameter("title");
String content=request.getParameter("content");
BoardVO vo=new BoardVO(0, title, content, userid, "");
System.out.println(vo);
int result=dao.insert(vo);
if(result==1) {
PrintWriter out=response.getWriter();
out.print("<head>"+"<meta charset='UTF-8'"+"</head>");
out.print("<script>alert('게시물 등록 성공');</script>");
out.print("<script>location.href='"+MAIN+EXTENSION+"';</script>");
}
}//end registerPOST()