-
게시판 만들기 과정도, jsp의 예외처리, 파일 업로드 다운로드PROGRAMMING/Web 2022. 6. 7. 19:54
게시판 만들기 (요약)

1. home
- user == null일 때는 로그인과 회원가입이 보이게 한다.
- nav는 요청파라미터값을 받아 이름에 맞는 메뉴를 하이라이트시킨다.
2. 회원가입- 추가된 것 : 자바스크립트를 이용해 <form> 입력값을 확인한다. submit(제출) 버튼을 누르면 submitRegisterForm()함수가 실행된다. id, password 등의 필수 요소를 확인하고 입력되지 않았다면 '' false를 반환해 값을 제출하지 못하게 한다.
- 전하고 싶은 정보가 있다면 url 뒤에 붙이자.
- fail=id&id=hong -> 너는 id때문에 회원가입 실패했는데 그 id는 hong이야. 글고 이 값을 우리가 변수에 넣어서 alert 등으로 사용할 수도 있당.
3. 로그인, 로그아웃- 로그인 : 사용자 인증작업을 수행한다.
- 사용자 정보를 session에 담는 이유는 1. 클라이언트당 하나 생성되며 2. 요청 응답 완료돼도 서버에서 계속 유지되며 3. 모든 서블릿/jsp에서 같은 클라이언트라면 같은 객체를 사용하기 때문이다.
- 로그아웃 : 세션객체를 무효화시킨다. 세션객체가 폐기되면 세션객체에 저장한 사용자정보도 사라진다.
- HttpSession의 라이프 사이클 : 클라이언트가 웹 애플리케이션 서버에 처음으로 요청 보낼 때 / 로그인할 때 서버가 생성 -> 일정 시간 접속 없으면/로그아웃하면 폐기. 속성 추가/조회/삭제 가능. 우리는 session.setAttribuue("LOGINED_USER", user);을 사용해 속성에 이름 붙이고 사용한다. user가 null이면 로그아웃되었거나 로그인하지 않은 것.
4. 게시글 목록
- home에서 list.jsp 요청한다.
- list에서 3페이지를 눌렀다고 하면, list는 자기 자신을 다시 요청한다. -> page=3
- 3page에서 글을 선택했다고 하면, URL엔 no=98&page=3이 붙어서 요청된다.
5. 게시글 등록- 입력화면에서 내용을 적고 등록 내용을 누른다.
- post 형식으로 add.jsp에게 전달되어 저장작업을 마친 후 list.jsp를 리다이렉트한다.
6. 게시글 상세- 상세정보 조회가 이루어진다.
- datail 자체는 page가 필요 없지만, 수정, 삭제, 추천이 연결되어 있어서 파라미터 전달 위해 page 받는다.
- 수정, 삭제, 추천 버튼이 있다.
7. 게시글 추천- sample_user_like에서 작업한다. 조회작업이 아니기에 수정, 저장 후 detail로 리다이렉트한다.
8. 게시글 삭제- 삭제 버튼을 누르면 delete.jsp를 요청해 삭제작업을 수행한 후 list를 리다이렉트한다.
- 만약 3페이지 글을 삭제했다면 삭제 후에도 3페이지로 유지되게 한다.
9. 게시글 수정- 기존 입력값을 조회하고, 새로운 값을 입력한 후, 통째로 update한 후, detail을 리다이렉트한다.
- 수정 버튼을 누르면 글번호, 페이지번호, 제목, 내용이 전달된다.
- 수정을 취소할 시 앞의 상세페이지로 되돌아가게 한다.
주문을 취소하는 것도, 장바구니를 없애는 것도 수정이다. 이름만 다르고 코딩하는 것은 비슷하다.
JSP의 예외처리

- 클라이언트가 게시글no=1000을 요청했을 때, no=1000은 존재하지 않는다. 에러가 발생한다.
- 이렇게 클라이언트 요청 처리 중 오류가 발생하면 에러페이지로 클라이언트의 요청을 내부이동시킨다. 내부이동이라서 에러페이지의 요청객체 응답객체는 detail.jsp와 같은 것을 바라본다.
- error페이지는 isErrorPage=true가 설정되어 있어야 한다. 내부에 저장된 예외객체를 가져오는 코드가 생기고, 우리는 이 코드를 사용해 오류메세지를 조회하는 것이 가능하다.
- error객체의 실행결과인 html컨텐츠가 클라이언트에게 전해진다.
- 단점은 콘솔창에 에러가 뜨지 않는다는 것이다. <% exception.printStackTrace(); %>를 따로 적어주자.
파일 업로드 다운로드- enctype를 지정하지 않으면
- enctype="application/x-www-form-urlencoded"이 기본값이다.
- 폼입력값은 GET방식의 쿼리스트링과 같은 형태로 변환되어 요청메세지의 바디부에 포함되어 서버로 전달된다.
title=첨부파일업로드 연습&content=첨부파일 업로드 연습입니다.&upfile=sample.gif- 첨부파일 필드가 form태그 안에 포함되어 있는 경우에는
- enctype="multipart/form-data"를 사용한다.
- 각 필드입력값을 지정된 boundary 텍스트로 구분해서 서버로 전달한다.
- HttpServletRequest객체의 getParameter(String name)으로 요청파라미터값을 조회할 수 없다.
----WebKitFormBoundaryCivtFJWIO44A6vKt746 // 바운더리텍스트 Content-Disposition: form-data; name="title" 첨부파일업로드 연습'PROGRAMMING > Web' 카테고리의 다른 글
AJAX, 게시판 카테고리 (0) 2022.06.09 크롬 요소 소스 보기, MIME, AJAX, 서버와 자바스크립트의 데이터 교환, JSON (0) 2022.06.08 [ JSP ] 로그인하기, 장바구니 담기 해야 할 것 (0) 2022.06.01 [ JSP ] 로그인하기(HttpSession), 로그인 활용(cart), 절대주소와 상대주소 (0) 2022.05.31 [ JSP ] 서블릿(Servlet)의 주요 객체 (0) 2022.05.30