[JSP] Servlet 서블릿 작성 + 글쓰기 Servlet 서블릿/DAO
by mini_min[JSP] Servlet 서블릿 작성 + 글쓰기 Servlet 서블릿/DAO
✔️ 서블릿 작성하기
게시판을 만들기 위해, 서블릿과 JSP 파일이 필요하다.
가장 먼저 알아둬야할 것은, 서블릿은 JSP 보다 최상위 우선순위를 가진다는 것이다.
👩💻 게시판을 만들 BoardServlet 은 HttpServlet 을 상속받으며, 시리얼UID 가 필요하다.
- doGet 방식과 doPost 방식을 재정의한다.
- 포워딩 처리, 그리고 JSP 을 실행할 메소드를 작성한다.
- doGet, doPost 모두 execute 메소드로 넘어간다.
@WebServlet("/bbs/*")
public class BoardServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
execute(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
execute(req, resp);
}
protected void forward(HttpServletRequest req, HttpServletResponse resp, String path) throws ServletException, IOException {
// 포워딩
RequestDispatcher rd = req.getRequestDispatcher(path);
rd.forward(req, resp);
}
protected void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
👩💻 execute 메소드
req.getRequestURI() 했을 때 뜨는 uri : /study3/bbs/list.do
uri 에 표시되는 값을 기준으로 필요한 메소드가 실행되고 그에 맞는 JSP 파일들이 화면에 보일 것이다.
처음에 실행하면 숑~ execute 로 넘어가는 것이다.
uri 처음이 list.do 이기 때문에 글 리스트 메소드로 다시 넘어간다.
protected void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
//uri : /study3/bbs/list.do
//cp 부터 끝까지 주소(QueryString 제외)
String uri = req.getRequestURI();
if(uri.indexOf("list.do")!= -1) {
list(req, resp);
}else if(uri.indexOf("write.do")!= -1) {
writeForm(req, resp);
}else if(uri.indexOf("write_ok.do")!= -1) {
writeSubmit(req, resp);
}else if(uri.indexOf("article.do")!= -1) {
article(req, resp);
}else if(uri.indexOf("update.do")!= -1) {
updateForm(req, resp);
}else if(uri.indexOf("update_ok.do")!= -1) {
updateSubmit(req, resp);
}else if(uri.indexOf("delete.do")!= -1) {
delete(req, resp);
}
}
✔️ 글쓰기 등록
📓 writeForm / writeSubmit
👩💻 글쓰기 폼 (write.jsp) 로 포워딩해준다.
👩💻 글쓰기 등록해서 글 등록하기
protected void writeForm(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//글쓰기
forward(req, resp, "/WEB-INF/views/bbs/write.jsp");
}
클라이언트에게 파라미터를 받고, DAO 를 실행하여 DB에 내용을 저장한다. 이후 다시 list.do 로 리다이렉트한다.
protected void writeSubmit(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//글 저장
BoardDAO dao = new BoardDAO();
String cp = req.getContextPath();
try {
//폼 데이터 : 이름, 제목, 패스, 내용
//번호:시퀀스, 등록일:SYSDATE, 조회수:0, ip는 클라이언트 ip
BoardDTO dto = new BoardDTO();
dto.setName(req.getParameter("name"));
dto.setSubject(req.getParameter("subject"));
dto.setContent(req.getParameter("content"));
dto.setPwd(req.getParameter("pwd"));
//클라이언트 ip
dto.setIpAddr(req.getRemoteAddr());
dao.insertBoard(dto);
} catch (Exception e) {
e.printStackTrace();
}
//등록 후에는 list.do 로 리다이렉트한다.
resp.sendRedirect(cp+ "/bbs/list.do");
}
📓 글쓰기 등록 - DAO
public void insertBoard(BoardDTO dto) throws SQLException{
PreparedStatement pstmt = null;
String sql;
try {
//insert into 테이블명(컬럼,컬럼) values (값,값)
sql = " INSERT INTO bbs(num, name, pwd, subject, content, ipAddr, "
+ " reg_date, hitCount ) "
+ " VALUES(bbs_seq.NEXTVAL, ?, ?, ?, ?, ?, SYSDATE, 0 )";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, dto.getName());
pstmt.setString(2, dto.getPwd());
pstmt.setString(3, dto.getSubject());
pstmt.setString(4, dto.getContent());
pstmt.setString(5, dto.getIpAddr());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
throw e;
} finally {
if(pstmt != null) {
try {
pstmt.close();
} catch (Exception e2) {
}
}
}
}
'JSP' 카테고리의 다른 글
[JSP] 글 수정,삭제 Servlet 서블릿/DAO (0) | 2022.10.06 |
---|---|
[JSP] 글 리스트 Servlet 서블릿/DAO (1) | 2022.10.05 |
[JSP] Servlet 서블릿 게시판 만들기 (개요) (0) | 2022.10.05 |
[JSP] JSTL - fmt 태그 / function 태그 (0) | 2022.10.04 |
[JSP] JSTL - <c:import> / <c:forTokens> (0) | 2022.10.04 |
블로그의 정보
개발자 미니민의 개발로그
mini_min