반응형

redirect  방법은 서블릿의 요청이 클라이언트의 웹 브라우저를 다시 거쳐 요청되는 방식입니다.

웹에서 첫번째 서블릿에 요청하고 첫번째 서블릿은 sendRedirect()메서드를 이용해 두번째 서블릿을 웹 브라우저를 통해서 요청

웹 브라우저는 sendRedirect()메서드가 지정한 두 번째 서블릿을 다시 요청합니다.

 

 

first를 서블릿매핑 하였지만 아래에 sendRedirect("second") 메서드를 이용해 웹 브라우저에게 다른 서블릿인 second로 재요청 하는걸 알 수 있습니다.

 

그러면 첫번째 서블릿의 요청을 받아 실행하는 두번째 서블릿입니다.

그러면 두번째 서블릿 매핑을 통해 실행되며 화면이 나오게 됩니다.

 

주소창에

 

이렇게 입력하였지만 뜨는건

이 화면이 뜨게 된답니다.

 

또 하나의 방법은

get방식을 이용해 이름/값 쌍으로 데이터를 다른 서블릿으로 전달합니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

forward : 하나의 서블릿에서 다른 서블릿이나 JSP와 연동하는 방법을 포워드(forward)라고 합니다.

기능 

1. 요청에 대한 추가 작업을 다른 서블릿에게 수행하게 합니다

2. 요청에 포함된 정보를 다른 서블릿이나 JSP와 공유할 수 있습니다.

3. 요청에 정보를 포함시켜 다른 서블릿에 전달할 수 있습니다.

4. 모델2 개발 시 서블릿에서 JSP로 데이터를 전달 하는 데 사용됩니다.

 

포워드의 4가지 방법

1. redirect 방법

-HttpServletResponse 객체의 sendRedirect()메서드를 이용합니다.

-sendRedirect("포워드 할 서블릿 또는 JSP")

2. Refresh 방법

- HttpServletResponse 객체의 addHeader()메서드 이용

- 형식: response.addHeader("Refresh", 경과시간(초); url = 요청할 서블릿 또는 JSP");

3. location 방법

- 자바스크립트 location 객체의 href속성을 이용합니다.

- location.href='요청할 서블릿 또는 JSP';

4. dispatch 방법

- 일반적으로 포워드 기능을 지칭하고 서블릿이 직접 요청하는 방법입니다.

- RequestDispatcher 클래스의 forward() 메서드를 이용합니다

- RequestDispatcher dis = request.getRequestDispatcher("포워드할 서블릿 또는 JSP"); dis.forward(request, response);

 

이후부터 각각의 포워딩을  사용해 보도록 하겠습니다.

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

SQL문을 잘못 입력 하였을때 뜨게 됩니다.

예를 들어

여기선 id가 들어가지 않아야 됩니다.

"delete from t_member where id=?" 이렇게 표현이 되어야 한다는 거죠

이렇게 수정해주시면 아래의 에러가 뜨지 않고 잘 작동 됩니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

커넥션 풀을 이용해 새 회원을 등록해 보겠습니다.

sec02.ex02패키지를 생성하고 아래의 클래스들을 만들겠습니다.

그 후에 WebContent에 MemberForm.html 파일을 생성해 줍니다.

 

첫번째로 우리의 화면을 담당해줄 html파일을 작성해 보도록 하겠습니다.

회원가입 화면이 있다고 상상하시고 거기에 아이디, 비밀번호 , 이름, 이메일을 입력하면 정보들을 서블릿으로 보내겠죠?

  command 값을 먼저 받아와 addMember이면 같이 전송된 회원정보를 받아 옵니다. 회원 정보를 MemberVO 객체에 설정한 후 MemberDAO의 메서드로 전달해 SQL문을 이용하여 테이블에 추가하겠습니다.

MemberServlet를 코딩해보겠습니다.

다음으로 MemberDAO를 코딩하겠습니다.

 

VO는 전에 실습했던 것과 같습니다.

여기까지 됬다면 이제 실행을 해보겠습니다.

주소는 localhost:8080/proj07/MemberForm.html

여기서 아이디나 비밀번호 이름 이메일 중에 하나만 비어있어도 아래의 alert 창이 뜨게 됩니다.

모두 알맞게 입력을 하면

 

이러한 화면이 뜨게 됩니다.

새 회원 가입하기를 클릭하면 다시 회원가입화면으로 가게되고

삭제를 누르면 삭제가 됩니다.

슈퍼맨을 삭제해 보겠습니다.

 

수고하셨습니당!

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

https://www.virtualbox.org/wiki/Downloads 접속해서 다운로드!

 

다운받은후 쭈욱~~ next 해서 설치

 

그러면 이러한 화면이 뜹니다.

환경 설정을 해주겠습니다.

기본 폴더를 설정해주시구요. 전 전 아래의 드라이버 폴더로 설정해주겠습니다.

그리고 호스트 키가 처음엔 오른쪽 CTRL로 되어있는데

노트북의 경우 없는 경우도 있으니

저는 왼쪽 CTRL+ALT로 해주겠습니다.

네트워크를 하나 만들도록 하겠습니다.

더블 클릭해서 설정해줍니다.

가상 머신을 만들겠습니다.

 

연습용이니까 동적할당으로 잡아주겠습니다.

깡통피시가 만들어졌습니다.

네트워크 설정할게요

우리는 네트워크 2개를 설정해주도록 하겠습니다.

확인!

저기를 클릭해 주시고 드라이버 이미지 선택하셔서

 

https://ubuntu.com/#download 여기에서 18.04 LTS 를 다운받아주세요.

다운받은 우분투 압출파일을 클릭해주도록 합시다

 

그 후 아래에 시작 버튼이 있는데 눌러주시면 아래와 같은 화면이 진행됩니다.

후에 이러한 창이 뜨는데 언어선택 해주세용!

우분투 설치하기 클릭

 

지금 설치 하시면 창이 하나 뜨는데 계속하기를 눌러주세요

다음으로 시간 설정도 Seoul로 되있네요. 계속하기!

계속하기

 

안의 내용들을 입력해주세요.

그 후 계속하기를 눌러주세요.

그러면 아래와 같이 설치가 진행됩니다.

 

중간에 엔터치라고 뜨는데 엔터 하시고

설치 하시다보면 재시작하라고 뜨는데 재시작 해주시면 됩니다.

그러면 아래와 같은 화면이 뜹니다.

 

우리가 등록했던 bituser가 있네요

암호 입력하고 로그인해 줍시다.

 

짜잔~!

 

반응형

'2020 > Linux' 카테고리의 다른 글

linux 파일 묶기(tar)  (0) 2019.12.02
Linux 파일관리 (find, grep, pipe)  (0) 2019.12.02
Linux 명령어 모음  (0) 2019.12.02
블로그 이미지

꽃꽂이하는개발자

,
반응형

아래의 데이터를 예를 들어 사용해 보겠습니다.

loc: 인덱스, 콜럼 아무것이나 사용가능

iloc: 행번호만 사용가능(정수)

# 정수만 사용가능하며 [0부터 시작하여 1번째 콜럼,3번째콜럼,-1이면 마지막 콜럼]

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

커넥션 풀

  온라인 쇼핑몰의 경우 동시에 수십에서 수백명까지 접속해서 조회, 주문등 다양한 기능을 사용하는데 앞의 방법처럼 데이터 베이스와 연동해 작업해야 한다면 너무 비효율적입니다.

 

이 문제를 해결하기 위해 현재는 웹 어플리케이션이 실행됨과 동시에 연동할 데이터베이스와의 연결을 미리 설정해둡니다.

  이렇게 미리 데이터베이스와 연결시킨 상태를 유지하는 기술을 커넥션 풀 (ConnectionPool)이라고 부릅니다.

 

JNDI

  실제 웹 어플리케이션에서 ConnectionPool 객체를 구현할 때는 Java SE에서 제공하는 javax.sql.DataSource 클래스를 이용합니다.

그리고 웹 어플리케이션 실행 시 톰캣이 만들어 놓은 ConnectionPool 객체에 접근할 때는 JNDI를 이용합니다.

  JNDI란 필요한 자원을 키/값 쌍으로 저장한 후 필요할 때 키를 이용해 값을 얻는 방법입니다.

 

아래와 같이 Servers에 들어가서 context.xml을 찾고 우측과 같이 코딩을 합니다

username과 password 는 본인이 아이디와 비밀번호를 넣어주시면 됩니다.

 

이제 설정을 마쳤으니 클래스를 만들어 연동해 보겠습니다.

sec02.ex01 패키지를 만들고 앞에서 사용한 MemberDAO, MemberServlet, MemberVO 클래스를 복사하겠습니다.

MemberDAO클래스에서 서블릿 매핑 이름을 /member2 로 바꿔줍니다.

 

아래의 import는 코딩하시면서 해주셔야 합니다. 단축키(ctrl+ shift +o)

아래에 주석처리된 부분은 저희가 커넥션 풀을 이용하였기 때문에 주석처리를 해줍니다.

 

앞에서 한 것과 결과는 같지만 이번에는 커넥션 풀을 이용해서 데이터베이스와 연동했다는 점에서 차이가 있습니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

앞에서는 statement를 이용해서 연동하였는데 이럴 경우 연동 할때마다 DMBS에서 다시 SQL문으로 컴파일해야 하므로 속도가 느리다는 단점이 있습니다

이럴 경우 PrepareStatement 인터페이스를 사용하면 SQL문을 미리 컴파일해서 재사용하므로 Statement 인터페이스보다 훨씬 빠르게 데이터 베이스 작업을 수행할 수 있습니다. 

  따라서 데이터베이스와 연동할 때 또는 반복 처리가 필요할 때는 PrepareStatement 인터페이스를 사용해야 합니다.

  또한 PreparedStatement 인터페이스에서는 실행하려는 SQL문에 "?"를 넣을 수 있습니다. 따라서 "?"의 값만 바꾸면 손쉽게 설정할 수 있어 Statement보다 SQL문 작성하기가 더 간단합니다.

 

sec01.ex02 패키지 내에

MemberServlet, MemberVO를 복사해서 넣어두고

MemberDAO 만 작성합니다.

기존의 statement 를 제거하고

preparedStatement 를 추가해줍니다.

 

 

반응형
블로그 이미지

꽃꽂이하는개발자

,