[2022-08-26] TIL - 21일차

2022. 8. 26. 17:42Golfzon tech/TIL

😁 Today I Learned

  • Controller
  • doGet
  • doPost
  • insert, delete, selectOne, selectAll, searchList
  • setAttribute() , getAttribute()

BoardController

 

package test.com.controller;

import java.io.IOException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import test.com.model.BoardVO;

@WebServlet({ "/b_insert.do", "/b_update.do", "/b_delete.do", "/b_selectAll.do", "/b_insertOk.do", "/b_updateOk.do",
		"/b_deleteOk.do","/b_searchList.do","/b_selectOne.do" })
public class BoardController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public BoardController() {
		super();
		System.out.println("board() 생송자~~~");
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String sPath = request.getServletPath();
		System.out.println("doGet : " + sPath);
		if (sPath.equals("/b_insert.do")) {
			RequestDispatcher rd = request.getRequestDispatcher("board/insert.jsp");
			rd.forward(request, response);
		} else if (sPath.equals("/b_insertOk.do")) {
			
			response.sendRedirect("b_insert.do");

		} else if (sPath.equals("/b_update.do")) {
			// 최종 때까지는 이 정도까지 하면 좋다.
			if (request.getParameter("num") != null) {
				String num = request.getParameter("num");
				System.out.println(num);

//				BoardVO vo = new BoardVO();
//				vo.setNum(Integer.parseInt(num));

//				BoardVO vo2 = dao.selectOne(vo);
				// 아직 안나옴.
				BoardVO vo2 = new BoardVO();
				vo2.setNum(Integer.parseInt(num));
				vo2.setTitle("제목1");
				vo2.setContent("내용1");
				vo2.setWriter("작가1");

				request.setAttribute("vo2", vo2);
				RequestDispatcher rd = request.getRequestDispatcher("board/update.jsp");
				rd.forward(request, response);
			} else {
				response.sendRedirect("b_selectAll.do");
			}

		} else if (sPath.equals("/b_updateOk.do")) {
			// 최종 때까지는 이 정도까지 하면 좋다.
			if (request.getParameter("num") != null) {
				String num = request.getParameter("num");
				System.out.println(num);
				System.out.println();

				response.sendRedirect("b_selectAll.do");
			}

		}

		else if (sPath.equals("/b_delete.do")) {
			RequestDispatcher rd = request.getRequestDispatcher("board/delete.jsp");
			rd.forward(request, response);
		}

		else if (sPath.equals("/b_deleteOk.do")) {
			String num = request.getParameter("num");

			response.sendRedirect("b_selectAll.do");
		}

		else if (sPath.equals("/b_selectAll.do")) {
			List<BoardVO> vos = new ArrayList<BoardVO>();

			for (int i = 0; i < 10; i++) {
				BoardVO vo2 = new BoardVO();
				vo2.setNum(i + 1);
				vo2.setTitle("제목1" + i);
				vo2.setContent("내용1" + i);
				vo2.setWriter("작가1" + i);
				vo2.setWdate(new Timestamp(System.currentTimeMillis()));
				vos.add(vo2);
			}

			request.setAttribute("vos", vos);

			RequestDispatcher rd = request.getRequestDispatcher("board/selectAll.jsp");
			rd.forward(request, response);
		} else if (sPath.equals("/b_searchList.do")) {
			String num = request.getParameter("num");
			System.out.println(request.getParameter("searchKey"));
			System.out.println(request.getParameter("searchWord"));

			List<BoardVO> vos = new ArrayList<BoardVO>();

			for (int i = 0; i < 5; i++) {
				BoardVO vo2 = new BoardVO();
				vo2.setNum(i + 1);
				vo2.setTitle("제목1" + i);
				vo2.setContent("내용1" + i);
				vo2.setWriter("작가1" + i);
				vo2.setWdate(new Timestamp(System.currentTimeMillis()));
				vos.add(vo2);
			}

			request.setAttribute("vos", vos);
			
			RequestDispatcher rd = request.getRequestDispatcher("board/selectAll.jsp");
			rd.forward(request, response);

//			response.sendRedirect("b_selectAll.do");
		}
		else if (sPath.equals("/b_selectOne.do")) {
			String num = request.getParameter("num");
			
			BoardVO vo2 = new BoardVO();
			vo2.setNum(Integer.parseInt(num));
			vo2.setTitle("제목23");
			vo2.setNum(Integer.parseInt(num));
			vo2.setNum(Integer.parseInt(num));
			
			request.setAttribute("vo2", vo2);
			
			RequestDispatcher rd = request.getRequestDispatcher("board/selectOne.jsp");
			rd.forward(request, response);
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		String sPath = request.getServletPath();
		System.out.println("doPost : " + sPath);

		System.out.println(request.getParameter("title"));
		System.out.println(request.getParameter("content"));

		if (sPath.equals("/b_insertOk.do")) {
			response.sendRedirect("b_selectAll.do");
		}
//		doGet(request, response); // doGet으로 넘기기 싫으면 지우면 
	}

}

 

  • 생성자 내부는 딱 한번 실행 된다.
  • if 문으로 path 주소를 나눠 실행하게 한다.

 

BoardVO

package test.com.model;

import java.io.Serializable;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Objects;

public class BoardVO implements Serializable{
	
	// BoardVO - num, title, content, writer, wdate(Date 타입)
	
	private int num; // 번호 
	private String title; // 제목 
	private String content; // 내용 
	private String writer; // 작가
//	private	Date wdate; // 날씨   // 더 길게 뽑으려면 Timestamp 로 바뀜.
	private	Timestamp wdate;
	
	// 매개변수 없는 생성자.
	public BoardVO() {
//		System.out.println("BoardVO 빈 생성자.. ");
	}
	
	// 매개변수 있는 생성자.
	public BoardVO(int num, String title, String content, String writer, Timestamp wdate) {
		super();
		this.num = num;
		this.title = title;
		this.content = content;
		this.writer = writer;
		this.wdate = wdate;
	}


	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public Timestamp getWdate() {
		return wdate;
	}
	public void setWdate(Timestamp string) {
		this.wdate = string;
	}

	@Override
	public int hashCode() {
		return Objects.hash(content, num, title, wdate, writer);
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		BoardVO other = (BoardVO) obj;
		return Objects.equals(content, other.content) && num == other.num && Objects.equals(title, other.title)
				&& Objects.equals(wdate, other.wdate) && Objects.equals(writer, other.writer);
	}

	@Override
	public String toString() {
		return num + " " + title + " " + content + " " + writer + " " + wdate;
	}
	
} // end class
  • 만들어두었던 VO

 

  • 입력 잘 되어있으면 목록으로 가기나 삭제 하고 삭제 이후에 목록을 보여줄 . Redirect 써주는걸 권장한다…!!!
728x90

'Golfzon tech > TIL' 카테고리의 다른 글

[2022-08-30] TIL - 23일차  (0) 2022.08.30
[2022-08-29] TIL - 22일차  (0) 2022.08.29
[2022-08-25] TIL - 20일차  (0) 2022.08.26
[2022-08-24] TIL - 19일차  (2) 2022.08.24
[2022-08-22] TIL - 18일차  (0) 2022.08.22