반응형

CalcServlet.java

 

 

 

˙ 실행 결과

반응형
반응형

① Java Resources > src > 패키지 안 InputServlet 클래스 / WebContent 안 input.html을 생성합니다.

 

② html을 다음과 같이 작성합니다.

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
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>여러가지 input 타입 표시 창</title>
</head>
<body>
    <form name="frmInput" method="get" action="input">
        아이디 : <input type="text" name="user_id"><br>
        비밀번호 : <input type="password" name="user_pw"><br>
        
        <input type="checkbox" name="subject" value="java" checked>자바
        <input type="checkbox" name="subject" value="C언어">C언어
        <input type="checkbox" name="subject" value="JSP">JSP
        <input type="checkbox" name="subject" value="안드로이드">안드로이드
        <br>
        <br>
        <input type="submit" value="전송">
        <input type="reset" value="초기화">
    </form>
</body>
</html>
 
 
 
cs

 

③ Servlet을 다음과 같이 작성합니다.

     - 한개씩 전송된 값은 getParameter( )를 이용
     - 하나의 name으로 여러 값을 전송하는 경우 getParameterValues( )를 이용하여 배열 형태로 반환

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package sec01.ex01;
 
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class InputServlet
 */
@WebServlet("/input")
public class InputServlet extends HttpServlet {
    
 
    /**
     * @see Servlet#init(ServletConfig)
     */
    public void init() throws ServletException {
        System.out.println("init 메서드 호출");
    }
 
    /**
     * @see Servlet#destroy()
     */
    public void destroy() {
        System.out.println("destroy 메서드 호출");
    }
 
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String user_id = request.getParameter("user_id");
        String user_pw = request.getParameter("user_pw");
        
        System.out.println("아이디 : " + user_id);
        System.out.println("비밀번호 : " + user_pw);
        
        String[] subject = request.getParameterValues("subject");
        for(String str : subject) {
            System.out.println("선택한 과목 : " + str);
        }
    }
 
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
 
}
 
cs

 

※ Servlet 매핑 방법은 아래의 링크를 참고해 주세요.

maxtime1004.tistory.com/51

 

[JSP] 서블릿(Servlet) 매핑하기 - 애너테이션

▶ 두번째 방법 - 애너테이션 ① 새로운 Servlet을 생성한 다음 Class name을 작성한다. ② /ThirdServlet을 클릭 후 Edit 을 눌러 /third로 변경한다. ③ 다음 그림과 같이 체크 후 Finish를 클릭한다. ④ 아..

maxtime1004.tistory.com

 

Tomcat을 재실행하고 브라우저에서 input.html을 열고, 데이터를 입력하여 전송 버튼을 클릭합니다.

 

⑤ get 방식으로 파라미터가 넘어가고 console 창을 통해 결과를 확인합니다.

 

 

반응형
반응형

▶ 두번째 방법 - 애너테이션 

 

① 새로운 Servlet을 생성한 다음 Class name을 작성한다.

 

 

② /ThirdServlet을 클릭 후 Edit 을 눌러 /third로 변경한다.

 

③ 다음 그림과 같이 체크 후 Finish를 클릭한다.

 

④ 아래와 같이 코드를 변경해준다.

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package sec01.ex01;
 
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class ThirdServlet
 */
@WebServlet("/third")
public class ThirdServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
 
    /**
     * @see Servlet#init(ServletConfig)
     */
    public void init(ServletConfig config) throws ServletException {
        System.out.println("ThridServlet init 메서드 호출");
    }
 
    /**
     * @see Servlet#destroy()
     */
    public void destroy() {
        System.out.println("ThirdServlet destory 메서드 호출");
 
    }
 
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
        System.out.println("ThirdServlet doGet 메서드 호출");
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }
 
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
 
}
 
cs

⑤ Tomcat을 재실행하고 브라우저에서 서블릿 매핑 이름으로 요청하고 console 창을 확인합니다.

⑥ 결과

반응형
반응형

▶ 첫번째 방법 - web.xml 

 

① Java Resources > src > sec01.ex01 위치에 FirstServlet.java를 생성하여 아래 코드를 작성합니다.

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
package sec01.ex01;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class FirstServlet extends HttpServlet{
    @Override
        public void init() throws ServletException{
        System.out.println("init 메서드 호출");
    }
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException{
        System.out.println("doGet 메서드 호출");
    }
    
    @Override
        public void destroy() {
        System.out.println("destroy 메서드 호출");
    }
 
}
 
cs

 

 

② WEB-INF > lib > web.xml 파일을 클릭 한 후 servlet 부분을 추가하여 작성해 줍니다.

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
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
id="WebApp_ID" version="3.1">
  <display-name>proc1</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
   <servlet-name>aaa</servlet-name>
   <servlet-class>sec01.ex01.FirstServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
   <servlet-name>aaa</servlet-name>
   <url-pattern>/first</url-pattern>
  </servlet-mapping>
</web-app>
 
 
 
cs

 

 

③ Servers > Add and Remove를 클릭한후 아래와 같이 진행합니다.

 

 

④ Tomcat을 재실행하고 브라우저에서 서블릿 매핑 이름으로 요청하고 console 창을 확인합니다.

 

⑤ 결과

 

반응형
반응형

▶ 서블릿(Servlet)  

 

˙서버쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스

˙자바의 특징을 가지지만 독자적으로 실행되지 못하고 Tomcat과 같은 JSP/Servlet 컨테이너에서 실행

 

˙서블릿의 특징

 

서버 쪽에서 실행되면서 기능 수행

기존의 정적인 웹 프로그램의 문제점을 보완하여 동적인 여러가지 기능 제공

스레드 방식으로 실행

자바로 만들어져 자바의 특징(객체 지향)을 가짐

컨테이너에서 실행

컨테이너 종류에 상관업이 실행(플랫폼에 독립적)

보안기능을 적용하기 쉬움

웹 브라우저에 요청 시 기능 수행

 

 

 

▶ 서블릿(Servlet) API  

서블릿 API Servlet과 ServletConfig 인터페이스를 구현해 제공하며 GenericServlet 추상 클래스가 이 두 인터페이스의 추상 메서드를 구현

그리고 GenericServlet을 다시 HttpServlet이 상속 받음

 

 

˙서블릿(Servlet) API 구성 요소 특징 

 

① Servlet 인터페이스

     - javax.servlet 패키지에 선언되어 있음

     - Servlet 관련 추상 메서드 선언

     - init(), service, destory(), getServletInfo(), getServletConfig()

 

② ServletConfig 인터페이스

     - javax.servlet 패키지에 선언되어 있음

     - Servlet 기능 관련 추상 메서드 선언

     - getInitParameter(), getInitParmaeterNames(), getServletContext(), getServletName()

 

③ GenericServlet 클래스

     - javax.servlet 패키지에 선언되어 있음

     - 상위 두 인터페이스를 구현하여 일반적인 서블릿 기능을 구현한 클래스

     - GenericServlet을 상속받아 구현한 사용자 서블릿은 사용되는 프로토콜에 따라 각각 service()를 오버라이딩 해서 구현

 

④ HttpServlet 클래스

     - javax.servlet.http 패키지에 선언되어 있음

     - GenericServlet 을 상속받아 http 프로토콜을 사용하는 웹 브라우저에서 서블릿 기능을 수행

     - 웹 브라우저 기반 서비스를 제공하는 서블릿을 만들 때 상속받아 사용

     - 요청 시 service()가 호출되면서 요청방식에 따라 doGet()이나 doPost()가 차례대로 호출됨

 

 

˙HttpServlet의 여러 가지 메서드 기능 

 

protected doDelete(HttpServletRequest req, HttpServletResponse resp)

: 서블릿이 request를 수행하기 위해 service()를 통해서 호출됨

 

protected doGet(HttpServletRequest req, HttpServletResponse resp)

: 서블릿이 Get request를 수행하기 위해 service()를 통해서 호출됨

 

protected doHead(HttpServletRequest req, HttpServletResponse resp)

: 서블릿이 HEAD  request를 수행하기 위해 service()를 통해서 호출됨

 

protected doPost(HttpServletRequest req, HttpServletResponse resp)

: 서블릿이 POST request를 수행하기 위해 service()를 통해서 호출됨

 

protected service(ServletRequest req, ServletResponse resp)

: request를 public service()에서 전달받아 doXXX() 메서드를 호출함

 

public service(ServletRequest req, ServletResponse resp)

: 클라이언트의 request를 protected service()에 전달 

 

 

 

▶ 서블릿의 생명주기 메서드

 

초기화 [ init( ) ]

- 서블릿 요청시 맨 처음한번만 호출됨

- 서블릿 생성 시 초기화 작업을 주로 수행함

 

작업수행 [ doGet( ) / doPost( ) ]

-  서블릿 요청 시 매번 호출됨

- 실제로 클라이언트가 요청하는 작업을 수행함

 

종료 [destory( ) ]

- 서블릿이 기능을 수행하고 메모리에서 소멸될 때 호출됨

- 서블릿의 마무리 작업을 주로 수행함

 

반응형
반응형

▶ 웹 애플리케이션  

 

˙웹 컨테이너에서 실행되는 JSP, 서블릿 자바 클래스들을 사용해 정적 웹 프로그래밍 방식의 단점을 보완하여 서비스 제공하는 서버 프로그램

˙HTML, 자바 스크립트, CSS 등 그대로 사용 가능

 

 

 

▶ 웹 애플리케이션의 기본 구조  

① webShop

      - 웹 애플리케이션의 루트 디렉터리

      - 다른 웹 애플리케이션 이름과 중복을 허용하지 않으며, JSP HTML 파일이 저장

 

② WEB-INF

      - 웹 애플리케이션에 관한 정보가 저장

      - 외부에서 접근 불가

 

③ classes

      - 웹 애플리케이션이 수행하는 서블릿과 다른 일반 클래스들이 위치

 

④ lib

      - 웹 애플리케이션에서 사용되는 라이브러리 압축파일(jar 파일) 저장

      - DB 연동 드라이버나 프레임워크 기능 관련 jar 파일이 저장

      - lib 디렉터리의 jar는 클래스패스가 자동으로 설정

 

⑤ web.xml

      - 배치 지시자(deployment descriptor)로서 일종의 환경 설정 파일

      - 웹 애플리케이션에 대한 여러가지 설정을 할 때 사용

 

 

 

반응형
반응형

▶ 웹 프로그래밍의 여러가지 구성 요소 

 

웹 서버 : 각 클라이언트에게 서비스를 제공하는 컴퓨터

클라이언트 : 네트워크로 서버에 접속한 후 서버로부터 서비스를 제공받는 컴퓨터

HTTP 프로토콜 : Hyper Text Transfor Protocol의 약자로, www 서비스를 제공하는 통신규약

HTML : Hyper Text Markup Language의 약자로, www 서비스를 제공하기 위한 표준 언어

자바스크립트 : HTML 웹 페이지의 여러가지 동적인 기능을 제공하는 스크립트 언어

CSS(Style Sheet) : HTML 문서에서 서체나 색상, 정렬 등 세부적인 HTML 페이지의 디자인에 관련된 여러가지 기능 제공

 

 

 

▶ 정적 웹 프로그래밍 

 

˙특징?

  ① 사용자에게 고정된 정보만 제공 

  ② 정보 수정 시 관리자가 직접 HTML 소스를 수정하여 사용자에게 정보 제공

 

 

 

▶ 동적 웹 프로그래밍 

˙특징?

클라이언트의 요청이 있을 때마다 DB에 접근하여 실시간 정보를 클라이언트에게 제공

 

처음으로 동적인 방식으로 프로그램을 제공하는 기능은 CGI(Common Gate Interface, 공용 게이트웨이 인터페이스) 이었다.

˙CGI의 특징?

① 초기 웹 프로그램에서 사용하는 방식

② 프로세스 방식으로 실행

서버의 부하 심함 → 이러한 문제로 나온 것이 JSP, ASP, PHP와 같은 동적 웹 프로그래밍 기술

 

 

 

▶ JSP 

˙JSP의 특징?

프로세스 방식이 아닌 스레드 방식으로 실행

클라이언트의 요구를 처리하는 기능은 최초 한번만 메모리에 로드

클라이언트가 동일한 기능을 요구하면 기존에 사용한 기능을 재사용

 

반응형
반응형

▶ JSP (Java Server Page , 자바 서버 페이지)란? 

 

웹 브라우저를 통해 인터넷에 접속하고, 그 홈페이지에서 어떤 요소를 클릭하여 다른 웹페이지로 이동하게 된다.

대부분 미리 서버에 등록해 두었다가 웹 브라우저가 서버에 특정 데이터를 요청하면 이를 웹 브라우저로 전송하여 보여준다.

이를 가능하게 하는 기술 중 하나이다.

 

 

 

▶ 프로그램 발전 과정 

 

˙클라이언트 PC 기반 프로그램의 문제점?

① 프로그램에 기능이 추가되거나 자주 변경되면 수시로 사용자 PC마다 프로그램을 업데이트 또는 새로 설치해야 함

② 프로그램에 정보가 들어있다면 정보가 쉽게 노출될 수 있어 보안에 취약함

 

→ 문제점을 해결하기 위해 등장 한 것이 클라이언트 - 서버 기반 프로그램

 

 

 

▶ 클라이언트 - 서버 기반 프로그램   

 

기존 클라이언트가 수행하는 모든 기능을 서버에서 수행

따라서 클라이언트는 처리할 데이터를 서버에 전달하고, 서버가 처리한 결과를 받아 화면에 출력하는 역할만 수행

 

클라이언트-서버 프로그램은 기능이 변경되어도 모두 서버에서 처리하면 되기 때문에 클라이언트 프로그램을 수정할 필요가 없고 보안도 우수

 

˙클라이언트 - 서버 기반 프로그램의 한계?

기능만 변경하는 것 쉽게 가능하지만, 화면 변경 시에는 추가 작업 필요

 

 

 

▶ 웹 기반 프로그램   

사용자가 사용하는 프로그램의 기능이나 화면이 바뀌면 서버에서 모두 처리

따라서 클라이언트가 특별히 수행해야 할 작업이 없고, 모든 기능을 서버에서 처리하므로 보안 우수

 

 → JSP, ASP, PHP 같은 웹 기술 + 데이터베이스 연동 시 실시간으로 클라이언트 요청 처리 가능 

반응형

+ Recent posts