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.
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
'Servlet&JSP 프로그래밍' 카테고리의 다른 글
Paging 페이징 구현 [JSP] (0) | 2022.07.22 |
---|---|
뉴렉처[Servlet/JSP] 강의 복습 75강~84강 (0) | 2021.02.05 |
뉴렉처[Servlet/JSP] 강의 복습 69강~74강 (0) | 2021.01.16 |
뉴렉처[Servlet/JSP] 강의 복습 58강~68강 (0) | 2021.01.15 |
뉴렉처[Servlet/JSP] 강의 복습 51강~57강 (0) | 2021.01.14 |