«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

장미의 개발일기

JSP 프로그래밍 : Servlet 서블릿이란? 서블릿 및 Java 웹 프로그래밍 기초지식 / 내장객체 본문

개발일기/JSP 프로그래밍 (Java 웹프로그래밍)

JSP 프로그래밍 : Servlet 서블릿이란? 서블릿 및 Java 웹 프로그래밍 기초지식 / 내장객체

민장미 2023. 6. 22. 20:44

*JSP 프로그래밍 : 중요한 개념 2가지 !!

  1. 서블릿 :   서블릿이란?   

 '웹에서 자바를 표현하는 기술', 웹 자바라고 생각하면 편하다. 더 정확하게 얘기하자면,  '사용자 요청을 처리가 가능한 클래스' 다.  자바에서 HttpServlet 이나 GenericServlet 클래스를 상속받는 순간  그 클래스는 서블릿이 된다. GenericServlet는 안 쓰고, HttpServlet을 쓴다고 보면되니, HttpServlet 만 기억해 도 무방하다.  이 서블릿이란게 있어야,  자바를 웹에 표현을 할 수 있다. ( 자바 콘솔창에서 출력되는 거 말고) 

(모델1,2 방식에서는 서블릿이 곧 컨트롤러다 => 스프링 프레임워크에 와서 컨트롤러가 추가 된다. )

 

간단한 서블릿 예제 포스팅 : 

서블릿 기초 : html 파일 1개 + 서블릿 클래스 1개로 간단한 예제 (tistory.com)

 

서블릿 기초 : html 파일 1개 + 서블릿 클래스 1개로 간단한 예제

셋팅 : 본인은 아파치 톰캣 9.0 설치 / 이클립스 ee / 실행브라우저는 크롬으로 설정 *톰캣 에러 무진장 많음...초보자는 절대 여러 프로젝트를 번갈아가면서 실행 시키지 말 것!! (본인은 지웠다 깔

jangmicoding.tistory.com

 

서블릿 선언하는 방법 2가지  포스팅 :

Java/ Web java => Servelet 서블릿 선언 방법 2가지 (tistory.com)

 

Java/ Web java => Servelet 서블릿 선언 방법 2가지

서블릿 기초 : html 파일 1개 + 서블릿 클래스 1개로 간단한 예제 (tistory.com) 서블릿 기초 : html 파일 1개 + 서블릿 클래스 1개로 간단한 예제 셋팅 : 본인은 아파치 톰캣 9.0 설치 / 이클립스 ee *톰캣 에

jangmicoding.tistory.com

 

 

 

 

  2. 내장객체 :   서버 (주로 아파치 톰캣)가 제공해주는 , 서버에 내장된 객체를 의미한다. 

     아래 표 중에서, Request, Response, Application, Session 4개는 정말 정말 중요하니 반드시 기억해두자. 

      또한 Scope Object 4가지 ( page < request < session < application) 도 외워두자. 

     + application은 프로젝트와 같고, context와도 같다는 것도 기억해두기 

 

 

      * HttpSession : 브라우저를 키는 순간 생성되고, 그 창을 닫으면 사라짐 (창마다)

 

 

     * application(Servletcontext)  :  톰캣(WAS)을 실행하는 순간 생성된다. 

       -application은 JSP에서 사용되는 용어이고, ServletContext는 서블릿에서 사용되는 용어로 같은 객체를 참조한다.

         둘다 톰캣이 제공해주는 객체로, ServeletContext는 자바의 인터페이스고 이클립스 내에서 사용, 

         application은  ServeletContext를 구현한 객체로 jsp 페이지 내에서 사용한다.  

       

    *JSP 안에 서블릿이 있고, WAS(톰캣,서블릿컨테이너)의 관점에서 보면 JSP는 서블릿이나 다름 없다. 

 

참고용 코드:  

<%
ServletContext servletContext = application.getServletContext();
%>

      - ServeletContext의 메소드 중요!

  • getInitParameter(String name): 지정된 초기화 매개변수의 값을 반환합니다.
  • getRealPath(String path): 지정된 경로에 대한 실제 파일 시스템 경로를 반환합니다.
  • getResource(String path): 지정된 경로에 대한 URL을 반환합니다.
  • getRequestDispatcher(String path): 지정된 경로로 요청 디스패처(RequestDispatcher) 객체를 반환합니다.

 

 

     *Request 객체의 정보, 즉 요청을 유지하고 다음 페이지로 넘어간다 => forward   /  유지안하고 넘어간다 => redirect  

 

  

 

 

 

 

*간단히 웹 프로그래밍 구조 설명!!

클라이언트( 크롬, 사파리, 엣지 등 웹 브라우저)에서 요청사항을 request 객체에 담아서 서버에 보내면,DAO객체가 DB안의 데이터에 접근한다.  그 데이터가 DTO(VO) 객체에 담겨서 서버에 도착한다.서버에서는 그 DTO에 담긴 데이터를 response 객체에 담아 클라이언트에 응답한다.

*서블릿의 생명주기

   init()  : 서블릿의 초기화를 해주는 역할. 딱 1번만 최초에 실행된다. 

   service() :  요청과 응답을 처리해주는 역할  ( 메소드 do get() 아니면 do post() 가 실행된다. ) 

   destory():  서블릿 종료하는 요청이 있을때 호출되어, 서블릿이 종료 된다. ( 서버가 종료될 때 ) 

 

*get 방식? post 방식?

   - get방식 : 보안이 매우 취약하다  www.naver.com?id=rrr&pwd=111'

     와 같이 url에 데이터가 다 노출되는 방식이다.  url의 ? 뒤에는 파라미터가 온다는 것을 의미한다.

    '&'는 자바에서의 코드 :  System.out.println("나는"+num);     에서 '+'역할을 한다. 파라미터 종류가 여러가지면, 

    ?id=eee&email=erer@naver.com&phone=0102222222 이런식으로 이어진다고 보면 된다. 

    추가로 get방식은 많은 양의 데이터를 전송하지 못한다.

 

  -post 방식: get방식과 반대로, url에 데이터가 노출되지 않는 방식으로, 개인정보를 다루는 회원가입 등에서는 post방식을

   사용해야만 한다.  그리고 많은 양의 데이터 전송이 가능하다. 

 

=> HttpServlet 을 상속받은 후,  오버라이딩 단축키를 눌러보면 doget, dopost 두 개의 메소드를 찾을 수 있다.

   doget()메소드는 요청을 get방식으로, dopost()메소드는 요청을 post방식으로 보낸다.

   오버라이딩 해보면, dopost, doget 메소드에 request, response 객체가 자동으로 매개변수로 삽입되어 있음을 알 수 있다. 

@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPost(req, resp);
	}

 

 

*JSP프로그래밍을 위한 셋팅

- 이클립스 EE 버전  or  이클립스 + 톰캣(서버)이 필요하다. DB와 연결할거라면 오라클 등의 DB 프로그램이 필요하다.  본인은 이클립스 EE+ 톰캣을 사용하고, 서버로는 톰캣이 최고라 하니 추천!  

 

-*프로젝트 생성시 다이나믹 프로젝트로 생성해야하며, xml 옵션에 체크 필수 

-* 다이나믹 프로젝트를 생성하면, webapps 폴더 안에 web-inf와 meta-inf 폴더가 있다. 

두 폴더는 보안이 되는 구역이라고 생각하면 편하다.  => 클라이언트(웹 브라우저)가 직접 접근이 불가

그 두 폴더 밖에 jsp파일을 만들어서 실행하면, 웹 창이 잘 뜨지만, web-inf 폴더 안에 넣었을 경우  실행이 안된다. 

보안 구역에 있는 파일들은 컨트롤러를 만든 후, 컨트롤러로 창을 띄울 수가 있다. 

 

 

 

*그냥 서블릿으로 프로그래밍하는 것과 JSP 프로그래밍의 차이 

- 전자는 이클립스 내에서만 프로그래밍하는 것으로, html 코드를 일일이 " " 안에 넣어서 작성해야하는 매우 불편한 방식이다. 반대로 JSP 프로그래밍은, jsp 파일(html파일과 거의 같다고 보면 된다)에  <% %> 기호를 사용하여 이 기호 안에 

자바 코드를 자유롭게 작성하는 방식이다.   jsp는 기본적으로 보이는 것(view)을 위한 페이지 임을 기억해두자.