파일 업로드, 다운로드

 

Servlets.com

Home What's New? COS File Upload Library Servlet Polls Mailing Lists Servlet Engines Servlet ISPs Servlet Tools Documentation Online Articles The Soapbox "Java Servlet Programming, Second Edition" "Java Enterprise Best Practices" Speaking & Slides About Ja

www.servlets.com

라이브러리 다운로드를 위해 위 사이트로 이동

 

좌측 COS File Upload Library 클릭 후 하단의 cos-22.05.zip 파일 다운로드

 

파일 세팅

 

저장될 폴더 생성

 

파일 세팅 ( lib 내의 cos.jar 는 위에 사이트에서 다운로드 받은 zip 파일 풀어서 lib 폴더 내에 있는 cos.jar 파일 가져오면 된다 )

 

 

 

 

 

파일 업로드 구현

upload_form.jsp 에 간단히 파일 업로드 폼 작성

 

upload.jsp 간단히 작성

 

FileOperation.java 작성

 

FileOperation.java 추가 작성

 

파일 업로드 정상적으로 되는 것 확인 ( 파일 이름이 중복되면 넘버링되어 저장됨 )

 

 

 

 

 

파일 목록 출력과 다운로드 구현

업로드 된 파일 목록을 띄워주면서 다운로드 가 가능한 기능을 만들 download_form.jsp 작성

 

FileOperation.java 에 업로드된 파일 목록을 가져와서 반환하는 getFileList() 메소드 생성

 

download_form.jsp 에 이미지를 출력하면서 이미지에 링크를 추가

 

download.jsp 내용 작성

 

FileOperation.java 파일에 fileDown() 메소드 작성

 

파일 다운로드 구현 완료
728x90

 

 

 

 

 

페이징

페이징 방식

 

회원 정보를 페이징하여 출력하기

 

페이징 처리를 위해 m_list.jsp 수정

 

페이징 처리를 위해 기존 MemberDAO.java 에 있떤 getList() 메소드를 변경 및 getTotalCount() 메소드와 getOperation() 메소드 추가

 

페이징 처리 완료
728x90

 

 

 

 

 

회원 가입, 삭제, 수정, 로그인 구현

파일 세팅

 

sql 문 작성

 

파일 세팅 완료

 

 

 

 

 

로그인 구현

header.jsp 작성

 

index.jsp 파일 생성 후 작성

 

m_login.jsp 작성

 

m_login_check.jsp 작성

 

MemberDAO.java 에 기본 DB 접근 준비 코드 작성

 

MemberDTO.java 에 컬럼명으로 변수 생성 및 getter / setter 선언

 

MemberDAO.java 에 쿼리문 실행 결과를 dto 에 각각 setter 를 사용하여 저장한 뒤 return

 

m_login_check.jsp 에서 DAO 객체를 통해 가져온 값과 입력 값을 비교 후 result 라는 변수를 생성, 로그인 성공이라면 session 을 발급하여 m_login.jsp 로 result 파라미터 값을 전달하면서 리다이렉트 시킨다

 

m_login.jsp 파일에서 전달 받은 loginId 세션이 null 이면 로그인 폼을 출력, null 이 아니라면 userName 세션의 값으로 출력 후 로그아웃 버튼 출력

 

m_logout.jsp 파일 작성 ( 세션을 모두 삭제하고 다시 로그인 페이지로 리다이렉트 하는 코드 작성 )

 

코드 실행 영상

 

 

 

 

 

멤버 목록 출력 및 개인 정보 출력 구현

header.jsp 에서 로그인 상태일때 logout 으로 경로 변경 및 m_list.jsp 로 경로 추가

 

m_list.jsp 작성

 

MemberDAO.java 에 getList() 메소드 생성하여 sql 문 실행 값을 dto 에 저장하여 반환 및 자원을 모두 사용한 뒤 닫아주는 작업까지 진행

 

m_list.jsp 에서  가져온 값 출력 및 a 태그 달아서 상세 페이지로 넘기는데 이때 세션 값을 확인하여 로그인 상태가 아니면 로그인 페이지로, 로그인 상태면 상세 페이지로 이동시킨다

 

m_info.jsp 작성

 

코드 실행 영상

 

 

 

 

 

회원가입 구현

m_login.jsp 에 회원가입 경로 추가

 

m_register_form.jsp 작성

 

m_register.jsp 작성

 

MemberDAO 에 register() 메소드 생성 ( 생성 성공 시 1 반환, 실패 시 0 반환 )

 

코드 실행 영상

 

 

 

 

 

회원 수정, 삭제 구현

회원 삭제, 수정 기능 버튼 추가

 

m_modify_form.jsp 작성

 

m_modify.jsp 작성

 

MemberDAO.java 에 modify() 메소드 정의 ( 성공 시 1 반환, 실패 시 0 반환 )

 

m_delete.jsp 작성

 

MemberDAO.java 에 delete() 메소드 작성

 

코드 실행 영상

 

 

 

 

 

!!! 문제 발생 !!!

회원 수정 이후 redirect 로 회원의 id 값을 넘기는 과정에서 url 에 한글이 들어가면 encoding 오류가 생기는 것을 확인 >

한글을 미리 인코딩 처리하여 변수로 담아 사용하니 해결

문제 해결

728x90

'BE > JSP' 카테고리의 다른 글

[JSP] 파일 업로드, 다운로드  (0) 2024.05.02
[JSP] 페이징  (0) 2024.05.02
[JSP] JSTL - 파라미터 값 받기  (0) 2024.05.01
[JSP] EL ( Expression Language ), JSTL ( if, for, exception )  (1) 2024.05.01
[JSP] 액션 태그, bean 객체 활용  (0) 2024.04.30

 

 

 

 

 

파라미터 값 받기

ex03_form.jsp

 

입력 받은 값을 출력 ( jstl 문법으로 param."파라미터 이름" 또는 여러개의 파라미터 값이면 paramValues."파라미터 이름" 으로 불러온다

 

코드 실행 결과

 

 

 

 

 

DAO, DTO 활용하기

TestDAO.java, TestDTO.java 파일 생성 후 작성

 

ex04_all_data.jsp, ex04_one_date.jsp 작성 ( bean 객체를 사용하여 TestDAO 에 있는 데이터를 dao 라는 변수로 저장 > dao 의 getList() 메소드를 사용하여 얻어지는 값들을 list 변수에 저장 > 해당 list 를 for Each 문을 사용하여 dto 라는 변수로 받아서 사용

728x90

 

 

 

 

 

EL

EL

 

EL 연산자

 

EL 의 출력방법, jstl 의 if 문, 반복문은 Spring 에서도 사용되니 기억하기 !!!

 

파일 세팅

 

파일 세팅 완료, 미리 ojdbc8.jar 도 세팅함

 

EL 문법의 ${} 는 자바스크립트에서 사용하는 표현 문법인 ${} 과 같이 사용할 수 없다

( jsp 파일에서는 자바스크립트의 ${} 를 사용할 수 없음 )

 

ex01.jsp 에 EL 문법의 단순 출력식 표현 > 결과물

 

EL 연산

 

login.jsp 에 로그인 폼 간단히 작성, result.jsp 에서는 기존 파라미터 값 받아오는 코드와 el 문법으로 파라미터 값을 받아오는 코드 작성

 

 

 

 

 

EL scope

파일 세팅

 

set.jsp 와 get.jsp 를 작성 과 결과물

 

 

 

 

 


 

 

 

 

 

JSTL

 

Apache Taglibs - Apache Standard Taglib: JSP[tm] Standard Tag Library (JSTL) implementations

<!-- Copyright 1999-2011 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/

tomcat.apache.org

JSTL 다운로드 사이트

 

jakarta-taglibs-standard-1.1.2.zip 다운로드

 

다운로드 받은 zip 파일 압축 해제 후 lib 폴더에 있는 jstl.jar 파일과 standard.jar 파일 복사하여 프로젝트 내 lib 파일에 붙여넣기

 

파일 세팅

 

파일 세팅 완료

 

JSTL 이란?

 

JSTL 태그

 

JSTL core 기능

 

JSTL 문법을 사용하려면 taglib 으로 jstl 의 core 를 불러와서 c 라는 이름으로 사용한다고 정의해줘야 한다

 

JSTL 문법

 

forEach 문 사용과 forTokens 를 사용해서 특정 문자를 기준으로 잘라서 표현

 

예외처리 ( catch 문 안에 내용이 예외를 발생시킨다면 해당 예외를 result 라는 변수에 담는다 )

 

Scope 정의 및 확인 ( import 로 ex02_test.jsp 파일의 내용을 불러옴 include 와 같은 역할 )

 

ex02_delete.jsp 에서 세션을 삭제하고 다시 ex02_session.jsp 로 리다이렉트로 보냄

 

다양한 절대경로의 표현 방식

 

코드 실행 영상
728x90

 

 

 

 

 

액션 태그

jsp 액션 태그

 

 

 

 

 

forward 태그

파일 세팅

 

파일 세팅 완료

 

login.jsp 작성

 

check.jsp 에 로그인 실패 시 코드 작성

sendRedirect() : 클라이언트에게 주소를 전송한 뒤 클라이언트가 서버에 전달받은 주소를 다시 요청

forward() : 클라이언트에게 주소를 요청하지 않고 서버에서 처리하여 내부의 경로를 출력

 

액션 태그를 사용하여 로그인 성공 시 코드 작성

 

main.jsp 에서는 request 값이 forward 로 넘어와서 scope 의 범위 내에서 작동하기 때문에 id 와 msg 파라미터를 페이지가 이동되었음에도 사용할 수 있다.

 

 

 

 

 

include 태그

파일 세팅

 

파일 세팅 완료

 

ex01.jsp 작성

 

jsp_include.jsp 와 tag_include.jsp 를 작성

 

각각 jsp 액션 태그와 기본 태그를 사용하여 작성

 

ex01.jsp 에 변수 생성 후 각 페이지에서 확인

>> jsp 액션 태그를 사용해서는 include 로 가져온 변수를 사용할 수 없다. ( 기존 태그를 사용해야 함 )

 

 

 

 

 

useBean 태그

파일 세팅

 

create table mem_jsp(
id varchar2(20) primary key,
pwd varchar2(20),
name varchar2(20),
addr varchar2(100),
tel varchar2(20)
);

insert into mem_jsp values('aaa','aaa','홍길동','산골짜기','010-xxx-xxx');
insert into mem_jsp values('bbb','bbb','김개똥','개똥별','010-xxx-xxx');
insert into mem_jsp values('ccc','ccc','고길똥','마포구','010-xxx-xxx');

commit;

sql 문 실행

 

파일 세팅 완료

 

MemberDTO.java 에 DB 에 저장된 데이터 형식 선언 후 getter / setter 생성

 

ex01.jsp 에서 bean 객체에 DTO 객체를 담아 setter 를 이용해 값을 저장하고 getter 를 이용해 불러와 출력

 

register_form.jsp 에 작성

 

register.jsp 에 기존 방식으로 저장하여 사용하는 코드 작성

 

register_form.jsp 에 넘어온 값들을 setProperty 로 한꺼번에 DTO 에 저장 후 각 값에 1 기입 후 전송

단, setProperty 를 이용해서 bean 객체에 저장할때 넘어오는 이름과 DTO 의 변수 이름이 동일해야 한다

 

index.jsp 파일 작성

 

register_form.jsp 와 show_list.jsp 파일에 index.jsp 를 include

 

MemberDAO.java 에 DB 연동 코드 작성

 

ojdbc8.jar 추가

 

show_list.jsp 에 MemberDAO 를 객체화하여 실행시킨 뒤 콘솔창에 --- 드라이브 로드 성공 --- 문구가 출력되면 정상적으로 DB 에 연동되었다는 의미

 

jsp 태그로 bean 객체를 만들어 memberDAO 를 객체를 생성

 

MemberDAO.java 파일에 DB 에서 mem_jsp 테이블의 정보를 DTO 에 담아서 return 하는 getList() 메소드 선언

 

이후 show_list.jsp 에서 이 getList() 메소드를 사용하여 list 변수에 담고 해당 list 사이즈를 출력하면 콘솔 창에 DB 에 저장된 행의 갯수인 3이 출력됨

 

가져온 값을 table 에 출력

 

register.jsp 에 DB 에 회원을 추가하는 코드를 추가

 

MemberDAO.java 에 DB 에 데이터를 저장하는 register 메소드를 정의

 

회원가입 이후 DB 에 저장된 모습 바로 확인됨

728x90

 

 

 

 

 

DB 연동

파일 세팅, ojcbc8 도 lib 폴더에 넣어놔야 함

 

create table member_jsp(
id varchar2(20) primary key,
name varchar2(20),
kor number,
eng number,
math number
);
insert into member_jsp values('aaa','Hong',100,100,100);
insert into member_jsp  values('bbb','Kim',90,90,90);
insert into member_jsp  values('ccc','Go',80,80,80);

commit;

sql 문 실행

 

driver.jsp 작성, 연동 성공 문구 콘솔창에 출력되어야 DB 연동 성공 ( 11 버전 : xe, 이후 버전 : orcl )

DriverManager 와 Connection 클래스 import 필요

 

select_all.jsp 에서 driver.jsp 파일을 include 해서 con 객체를 받아와서 출력 및 각 name 에 a 태그 추가

 

쿼리문 실행 결과를 담은 ResultSet 의 구성 rs.next() 를 사용하여 다음 값이 있는지 확인

 

select_all.jsp 페이지에서 이름을 클릭했을때 a 태그로 파라미터 값과 함께 전달되는 것 select_one.jsp 에서 확인

 

select_all.jsp 에서 넘겨받은 파라미터 값을 가지고 select_all.jsp 에서 DB 에 접근하여 내용을 표시

728x90

 

 

 

 

 

response

ex01.jsp 를 실행하면 응답으로 redirect 가 실행되어 네이버가 출력

 

파일 3개 세팅 check.jsp, login.jsp, main.jsp

 

login.jsp, check.jsp, mian.jsp 작성

 

getWriter() 메소드를 사용하여 script 를 이용해 alert 창을 띄울 수도 있다

 


 

 

 

 

Scope

Scope

 

파일 세팅

 

set_scope.jsp 에서 scope(page, request, session, application) 를 생성, scope 생성 시 괄호의 앞 내용은 키 뒷 내용은 값이다.

 

page : 요청한 페이지 내에만 유지 ( 페이지가 이동되면 삭제 )

request : 요청한 페이지에서 다음 페이지까지 유지된다

session : 현재 켜져있는 브라우저에서만 작동 ( 예를 들어, 크롬에서 scope 를 받고 네이버 웨일로 동일 웹을 작동시키면 session 이 유지되지 않음, 주로 로그인에서 사용 )

application : 작동하는 브라우저를 변경해도 application 은 유지되며 서버가 종료되면 application 도 삭제

 

request 를 다음페이지 까지 유지하고 싶으면 forward 를 사용하여 전달 받은 request 값을 전달해야 한다.

이런 식으로 전달하지 않으면 페이지를 임의로 이동시킨다고 해서 scope 가 다음 페이지까지 저장된 상태로 넘어가지 않는다.

 

 

 

 


 

 

 

 

 

cookie

쿠키 : 클라이언트에서 관리

파일 세팅

 

쿠키 생성

testCookie 라는 key 로 myCookie 라는 내용을 생성, cookie.setMaxAge(5) 로 5초동안 쿠키를 유지

 

스크립트를 사용하여 팝업창을 출력하게끔 설정

 

popup.jsp 간단히 작성

 

요청으로 부터 getCookies() 메소드를 사용해 쿠키의 목록을 Cookie 자료형의 배열로 받아와서 출력

 

최초 요청시에는 기본 발급 쿠키만 존재하지만 5초 내에 새로고침을 하여 요청을 다시 보내면 쿠키 값을 출력한다

 

testCookie 라는 이름의 쿠키가 없을때만 팝업을 출력 ( boolean 값으로 조절 )

 

test.jsp 파일 추가

 

ex01.jsp 에서는 test.jsp 경로로 가는 a 태그를 추가, test.jsp 에서는 현재 쿠키 값을 보여주는 코드를 작성

 

테스트 해보면 cookie 는 발급된 파일의 상위 파일이 실행될때는 존재하지 않는다.

자신의 상위 파일이 실행될때도 쿠키값을 존재하게 하려면 cookie.setPath() 메소드를 사용하여 쿠키의 경로를 설정해줘야 한다.

 

쿠키를 최상위 위치에서 부터 쿠키를 사용할 수 있게 설정 후 쿠키가 정상적으로 확인

 

ex01.jsp 에 쿠키 삭제 경로 추가

 

쿠키는 삭제하는 코드가 따로 없기 때문에 쿠키의 유지 시간을 0초로 조정하여 응답하여 삭제시킨다

※ 쿠키는 삭제하는 코드가 따로 없기 때문에 쿠키의 유지 시간을 0초로 조정하여 응답하여 삭제시킨다

 

 

 

 

 


 

 

 

 

 

session

세션 : 서버에서 관리

파일 세팅

 

set.jsp 에서 세션 설정, get.jsp 에서 세션 출력

 

del.jsp 에서 세션 삭제

 

session.removeAttribute("age") : age 라는 키의 세션을 삭제시킨다.

session.setMaxInactiveInterval(5) : 5초 후 모든 세션을 만료시킨다.

session.invalidate() : 모든 세션을 만료시킨다.

 

간단하게 login.jsp 에 입력받는 폼 작성

 

로그인 정보를 검증하는 check.jsp 작성

 

main.jsp 작성

 

logout.jsp 작성

 

세션으로 로그인을 관리하는 페이지 작성 완료

728x90

+ Recent posts