ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 게시판 만들기 과정도, 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"
    
    첨부파일업로드 연습

     

     

Designed by Tistory.