본문 바로가기
[ Developer ]/JSP

[JSP] 서블릿이란? Servlet

by 김현섭. 2016. 5. 4.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Servlet
HTML에 JSP(java)를 한번에 프로그래밍 하는 것이 아닌 HTML의 CSS 같은 설정 외 Java를 다른 부분으로 빼내서 구현하는 것
Model 2 개발 방법 ( 디자인, 개발을 나눠 유지보수 쉽게 하는 방식)

Servlet은 new -> other에 있다


그럼 다음과 같은 Servlet 파일이 생성된다



doPost 메소드를 보면


2개를 doPost로 보내고 2개를 doGet으로 받는다

doGet 메소드에서


저 줄을 지운 후 이 문장을 추가해 준다


밑의 doPost메소드에서도 내용을 삭제해 준다



# 기본적인 Servlet 구조



그리고 이전의 cal3에서 사용 했던 request 문장을 가져온다



그리고 윗 부분의 주석

을 보면 Java가 실행될 수 있는 URL이다
하지만 최신부분이기에 실무에서는 사용되지 않는다


URL값을 복사해와서 HTML cal3의 form method의 action 주소값을 바꿔준다


그리고 서버에 등록 후 접속 하면 실행된다


프로그램 결과


결과를 갖는데 Console에 결과를 찍고 또한 브라우저에서 출력을 한다
또한 브라우저의 결과값 주소를 보면 

와 같이 우리가 설정한 주소로 된다

또한 결과값이 한글이 깨지는데


위의 부분을 추가해 주면 결과값이 정상적으로 출력된다
또한 브라우저에서 유니코드(UTF-8)로 인코딩 설정을 해주면 깨지지 않는다


출력값을 (텍스트)만 브라우저에 출력한 것




# Servlet 이용해서 HTML 보내기

out.print()를 이용해서 html을 작성하면 HTML을 나타낼 수 있다


# Servlet 실무 방식
이 부분을 지운 후 Ctrl + Shift + M 으로 import 해준다

그러면 사이트를 찾을 수 없어서 에러가 발생한다

해결하려면 소스를 추가해줘야 한다


이 소스 파일에 Servlet을 등록해줘야 한다


서블릿을 추가한 후


name은 서블릿이름
class에서는 패키지명.서블릿이름을 작성한다


잘 작성되었다면

위와 같이 마우스 올리면 링크처럼 연결이 되어야 한다


서블릿을 등록했다면 URL과 연동(Mapping)을 시켜줘야 한다



Mapping 할 URL은 이름이 같지 않아도 된다 (임의 지정)



그렇되면 메소드 post를 실행해주는 form에서 action 주소를 변경시켜줘야 한다



로 변경

프로그램 실행 시


주소값을 보면 addition으로 간 것을 볼 수 있다




# 새로운 Servlet 만들기


doGet에는 doPost 설정 후 doPost에 작업


# result.jsp로 결과값 보내주기

AdditionResult2로 서블릿 생성 후 작성


rd.forward로 페이지를 보내주는 것이다

또한 서블릿 등록한다



그리고 form 요청 메소드에 기존 URL을  Result URL로 바꿔준다

결과 값은


# forward
결과는 result.jsp 페이지지만 주소값을 보면 addition2가 나온다
이게 forward 특징인데 상대방에서 주소값을 숨기고 싶을 때 포워드를 이용한다


# forward한 페이지에서 결과값 보기

request.setAttribute (앞으로 보여줄 페이지에 데이터 전달)
request.setAttribute(" key ", value);
HashMap과 같이 key value 형태로 저장되기 때문에 key값만 받아오는 곳에서 key로 받는다면 그 값을 전달 받을 수 있다
받는 곳에서는 ${ key } 하면 키 값이 같은 value 값을 가져온다


result에서는 $ { } 으로 결과값을 출력할 수 있다


$하고 {가 공백없이 붙게되면 에러가 발생하는데

 이번 방식으로 아스키코드로 표현하면 된다


결과값 외에도 값을 가져오고 싶다면

여러번 작성으로 key와 value를 적고 
받는 페이지에서 key값으로 사용하면 된다


${ f + s } 해도 연산된 결과를 얻을 수 있다


# Redirect
위의 forward 방식과는 처리하는 방식이 다르다

redirect는 주소값을 보낸다

# forward & redirect 구동 방식
  • forward
    • 웹 브라우저와 Server에 calc4.jsp, result.jsp가 있다면 브라우저가 calc4.jsp를 요청하면 forward로 설정되었다면 Servlet이 result.jsp를 가져와서 그대로 보여준다
    • 웹은 1번만 요청한다
  • forward 데이터 전달 방식
    • request.setAttribute("key", value); 를 통해 데이터를 전달한다

  • redirect
    1. 웹 브라우저에서 calc4.jsp를 요청하고 응답한다
    2. 웹 브라우저가 Servlet에게 요청하고 응답한다 리턴 내용 : 목적지(result.jsp) 가는 방법 (주소)
    3. 웹 브라우저가 다시 result.jsp를 가지고 돌아온다
  • redirect 데이터 전달 방식
    • URL 방법 외엔 없다
    • 길이 제한 발생 (255자)
  • redirect 사용
    • 사용자에게 페이지 URL을 알려야 할 때 페이지가 다름을 인식
    • 보통으로 redirect 사용