본문 바로가기

Servlet&JSP 프로그래밍

뉴렉처[Servlet/JSP] 강의 복습 85강~94강

85강 - Index 페이지 추가하기

관리자, 일반 유저가 볼 수 있는 Index 페이지를 추가해보자!

 

1. 사용자의 ../index 페이지를 요청했을때 받아서 처리할 수 있는 Controller 생성

 

1) IndexController 클래스 생성

public class IndexController extends HttpServlet {

}

 

2) IndexController에서 doGet 메서드 오버라이딩

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                    

   request.getRequestDispatcher("/WEB-INF/view/index.jsp").forward(request, response);

}

 

3) WebServlet url 설정

@WebServlet("/index") //사용자가 url ../index 로 요청이 들어오면 IndexController에서 받겠다는 것을 설정

 

2. WEB-INF 폴더 내 view 폴더에서 index.html 페이지의 내용을 index.jsp 파일을 추가해서 넣어준다.

 

86강 - Admin 페이지를 위한 서비스 목록 추가하기

 

 

//공지사항을 모두 삭제하는 메소드 (삭제 완료된 공지사항의 개수를 리턴)
public int removeNoticeAll(int[] ids){

   return 0;
}

//공개된 공지사항의 개수를 리턴하는 메소드
public int pubNoticeAll(int[] ids){

   return 0; 
}

 

//공지사항을 등록하는 메소드(등록 성공시 1을 반환, 등록 실패시 0을 반환)
public int insertNotice(Notice notice){

   return 0;
}

 

//선택한 공지사항을 삭제하는 메소드(삭제 성공시 1을 반환, 삭제 실패시 0을 반환) 
public int deleteNotice(int id){

   return 0;
}

 

//공지사항을 수정하는 메소드(수정 성공시 1을 반환, 수정 실패시 0을 반환)
public int updateNotice(Notice notice){

   return 0;
}

 

//최근 등록한 공지사항 순으로 리스트를 보여주는 메소드
public List<Notice> getNoticeNewstList(){
   
   return null;
}

 

 

87강 - admin/index 페이지 만들기

88강 - admin/index 페이지 추가하기

 

89강 - 다중 선택 값 POST 하기

* 오류의 종류

1. 404 오류: URL이 없는 경우 (WebServlet에 등록을 안 한 경우)

==> URL 오류

2. 405 오류: URL이 있는데 받는 메서드가 없는 경우

(ex. Post로 보냈는데 처리하는 doPost() 메서드가 정의 안되어있는 경우)

==> 메서드 오류

3. 403 오류: URL과 메서드는 있는데 권한이 없는 경우

==> 보안 오류

 

* View에서 Key값이 같고 Value가 다른 경우에는 서버에서 문자열 배열로 받는다.

==> request.getParameterValues("key");

ex.

같은 Key의 예

String[] openIds = request.getParameterValues("open-id");

String[] delIds = request.getParameterValues("del-id");

 

 

 

문제점 발생!!!!!

"일괄공개" 버튼을 눌렀을때와 "일괄삭제" 버튼을 눌렀을때 서버에 openIds와 delIds 의 데이터가 전달이 된다.

==> 서버측에서는 어떤 버튼을 눌러서 값이 전달되었는지 알아야한다.

따라서 버튼의 식별이 필요한 상황!!

 

90강 - 다중 Submit 요청 구분하기

<input type="submit" class="btn-text btn-default" name="cmd" value="일괄공개">
<input type="submit" class="btn-text btn-default" name="cmd" value="일괄삭제">

 

두 개의 버튼을 식별할 수 있어야한다.

 

둘 중에 하나를 눌렀을때 서버에는 cmd라는 key값으로 누른 버튼의 value 값이 서버에 전달된다.

ex. 일괄공개 버튼을 눌렀을때

서버에 key값: "cmd" / value값: "일괄공개"

 

String cmd = request.getParameter("cmd"); //클라이언트에 cmd의 key값으로 가지고 있는 value값을 String cmd에

저장한다.

 

91강 - 일괄삭제 구현하기

일괄 삭제를 하는 서비스 함수 구현

 

sql문을 delete notice where id in (1, 4, 5, 6, 7); 와 같이 요청한 id값이 in() 안에 들어가야한다.

 

sql문을 delete notice where id in(ids) //ids는 삭제 요청한 id값의 배열임

위와 같이 ids라는 배열변수에 넣으면 DB에 전달되는 실제 쿼리식은 delete notice where id in (14567) 이 된다.

 

콤마가 없기 때문에 이상한 쿼리식이 완성되버린다. 따라서 param이라는 문자열 변수를 만들어서 

"1, 4, 5, 6, 7" 으로 만들어 쿼리식에 넣어주면 된다.

ex.

String params = ""; // ids값을 sql의 문자열로 꽃아주기 위한 변수

 

for (int i = 0; i < ids.length; i++) {

   params += ids[i];

   if (i < ids.length - 1) { // 마지막에는 쉼표를 넣지 않기 위해서 이다.

      params += ",";

   }

}

 

String sql = "delete notice where id in (" + params + ")";


92강 - 공지사항 등록을 위한 Controller/View 준비하기

93강 - pub 컬럼 추가에 대한  변경사항 처리

94강 - 공지사항 등록하기

 

 

 

 

 

[출처]

뉴렉쳐 
www.youtube.com/watch?v=u6-D8CJbsmo&list=PLq8wAnVUcTFVOtENMsujSgtv2TOsMy8zd&index=14