Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
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
Archives
Today
Total
관리 메뉴

개발자

[JSP 1일차]JSP란?/환경설정/현재시각/지시어(page,include)/Servlet(서블릿) 조건/jps,xml,servlet 관계 본문

개발자/JSP

[JSP 1일차]JSP란?/환경설정/현재시각/지시어(page,include)/Servlet(서블릿) 조건/jps,xml,servlet 관계

GoGo개발 2022. 8. 29. 10:48
JSP 

 

Java Server Page의 약자로서 HTML 문서 속에 Java 코드가 들어가 있는 것이라고 보면 된다. 간단히 말하면, Java 코드가 실행되어진 결과물을 웹페이지(html)로 보여준다는 것이다. Java의 웹서버 프로그램 스펙(서블릿)으로 변환되어 서비스 된다. 서블릿(Servlet)이라함은 웹서비스 기능을 해주는 자바 클래스를 말한다.

 

:이제 콘솔이 아닌 웹에서 결과물을 띄워주는 것이다.

 

1. 구현방법

 

1-1 지시어(directive)
     1)형태 : <%@지시어%>

 

     2) 지시어의 종류 3가지 
     [1] page
     [2] include
     [3] taglib

 

1
2
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
cs

 

1-2. 스크립팅 원소(scripting element)
    1) 기능 : JSP 페이지에서 자바 코드를 
              직접 기술할 수 있게 하는 기능.
    
    2) 스크립팅 원소(scripting element)의 종류
    [1] 선언(declaration)    ==>  <%! 자바코드 %>
    [2] 스크립틀릿(scriptlet) ==>  <% 자바코드 %>
    [3] 표현식(expression)    ==>  <%= 자바코드 %>   

 

<예시> [page 지시어] 스크립틀릿,표현식

 

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>1부터 10까지의 합을 자바에서 구한 다음 그 결과를 HTML로 보여줄 것이다.</title>
 
<style type="text/css">
 
    span.result {
        color: red;
    }
 
</style>
 
 
</head>
<body>
 
<%
    // ** 스크립틀릿(scriptlet) 이라고 부른다.***
    // 스크립틀릿(scriptlet)에 자바코드가 들어오는 부분이다.
    
    
    int sum = 0;
    for(int i=1; i<=10; i++) {
        sum += i;
    }    
 
%>
 
    <h2>
        1부터 10까지의 합은 <span class="result"><%= sum%></span>입니다.
    </h2>
 
</body>
</html>
cs

실행결과 : 

<css, javascript 도 모두 head에 넣어주면 된다>

 

 

<% 로 시작하여 %>로 끝나는 것을 "스크립틀릿(scriptlet)" 이라고 부른다. "스크립틀릿(scriptlet)"에 자바 코딩이 들어가는 것이다. 그런데 "스크립틀릿(scriptlet)"에 코딩된 부분은 웹브라우저에서 소스보기를 하더라도 안 보여지므로 보안성이 좋다. 또한 JSP 주석문을 한 것도 안보여지므로 보안성이 좋다.  

<%= %> 을 expression(표현식)이라고 부른다. 이 expression(표현식)은 "스크립틀릿(scriptlet)에서 작성된 결과값"을 웹브라우저상에 보여주고자 할 때 사용하는 것이다.

 

<%=%> 안에 연산도 가능하다

 

1
2
3
<h2>
        1부터 10까지의 합에다가 곱하기 10은 <span class="result"><%= sum*10%></span>입니다.
    </h2>
cs

 

 

<주석문 사용법>

 

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
61
62
63
64
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>1부터 10까지의 합을 자바에서 구한 다음 그 결과를 HTML로 보여줄 것이다.</title>
 
<style type="text/css">
 
    span.result {
        color: red;
    }
 
</style>
 
<script type="text/javascript">
 
// 자바스크립트의 1줄 주석문
/* 
    자바스크립트의 여러줄
    주석문
*/
 
/* 
    window.onload = function() {
        alert("헤헤헤");
        
    } */
    
<%--
    jsp 파일에서는 자바스크립트에서도 JSP 주석문을 사용 할 수 있다.
    window.onload = function() {
            alert("헤헤헤");
        } 
--%>    
    
    
    
</script>
 
 
</head>
<body>
 
<%
    // ** 스크립틀릿(scriptlet) 이라고 부른다.***
    // 스크립틀릿(scriptlet)에 자바코드가 들어오는 부분이다.
    
    // 1줄 주석문
    
    /*
        여러줄
        주석문
    */
    
 
%>
    <!-- HTML 주석문 -->
    
    <%--jsp 주석문 --%>
 
</body>
</html>
cs

 

 

환경설정

 

<Server Rintiem 톰캣 폴더안에>
 : el-api.jar 
   jsp-api.jar ( 톰캣이 준다)
    servlet-api.jar 
    >>> 중요파일들

jar: 관련되어진 클래스를 다 묶어놓은 파일

<jsp 구동할때는 웹컨테이너(tomcat)을 꼭 넣어주어야한다 빌드패스에서>  

※ WAS(Web Application Server)  란?

 

 Web Server 기능 + Web Container(웹컨테이너) 기능을 합친것을 말한다.
      (=apache sever)          ( =tomcat)

 

※ Web Server 란?

 

 html 파일과 
 jpg, png, gif 확장자로 되어진 이미지 파일로 이루어진 정적인 문서나 이미지 파일을 
 웹페이지로 보여지게끔 제공해주는 서버이다.

 

 Web Container(웹컨테이너)란?   

 

JSP(HTML 페이지속에 Java 소스가 올라가 있는 페이지) 와  Servlet(웹기능을 하도록 만들어진 Java Class)을 실행시킬수 있는 소프트웨어이다.

 JSP 와 Servlet 은 자바변수가 사용되어 지므로 입력되어지는 변수값에 따라 그 내용이 변하므로 동적 웹페이지를구현한다.

Web Server에 JSP 페이지를 요청하면  Web Container 가 JSP 파일을  Servlet 으로 변환하여 컴파일을 수행해주고  Servlet 의 실행결과물을  Web Server에게 전달하여 화면에 보여준다.

 

 ※ Web Server 의 종류
    -- Apache, IIS(Internet Information Server), WebtoB(티맥스소프트,국산) 

 ※ Web Containter 의 종류
    -- Tomcat, Jeus(티맥스소프트,국산), WebSphere(IBM), WebLogic(오라클사), JBoss(Redhat), Resin(Caucho) 

 

파일 경로

C:\NCS\workspace(jsp)\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost
>>danamic web project 이름이다.

 

01oneToTenSum.jsp 라는 파일은 실제로는 확장자 .java 파일로 저장되어서 컴파일 되어진 
확장자 .class 파일로 저장되어지는데  어느 경로에 저장되어지는지 알아본다.


C:\NCS\workspace(jsp)\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\JSPServletBegin\org\apache\jsp\chap01\_01oneToTenSum_jsp.java 와


C:\NCS\workspace(jsp)\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\JSPServletBegin\org\apache\jsp\chap01\_01oneToTenSum_jsp.class 로 
저장된다.

 

 현재시각(import 하는법도)

 

필요한 클래스를 import하려면 <%@ page%> page directive(페이지 지시어)를 사용하여 import 를 한다.

 

 

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
   
<%-- 필요한 클래스를 import하려면 <%@ page%> page directive(페이지 지시어)를 사용하여 import 를 한다. --%>   
 
<%@ page import= "java.util.Date , java.text.SimpleDateFormat"%>
 
<%
    // *** 현재시각을 알아오기 *** //
    /* java.util.Date now = new java.util.Date(); //import 안했을 때 */
    
    Date now = new Date(); // 현재시각 import 해줘서 오류안뜬다 
    
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String today = df.format(now);    
    
    // == 또는 ==
    String currentTime = String.format("%tF %tT %tA %tZ", now, now, now, now);
    
    /* 
     <참고>
       날짜 타입 format         설명
      --------------------------------------------------
      %tF              날짜를 yyyy-mm-dd 형식으로 포맷해주는 것
      %tT              날짜의 시각을 HH:MM:SS 형식으로 포맷해주는 것  
      %tp              오전, 오후를 출력
      %tA              요일명 출력
      %tY              4자리 년도만 출력
      %tB              월의 이름(January, February ...)출력
      %tm              월의 01,02,03 ~~ 10,11,12 로 출력
      %td              일수를 1~31 로 출력
      %te              %td와 동일함
      %tk              시간을 0~23 으로 출력
      %tl              시간을 1~12 으로 출력
      %tM              분을 00~59 으로 출력
      %tS              초를 00~59 으로 출력
      %tZ              타임존을 출력(한국은 KST로 나옴).
    */
    
    //페이지 소스보기해도 코드가 안나와서 보안성이 좋다.
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>java 에서 날짜와 현재시각을 알아본다.</title>
</head>
<body>
    <ul>
        <li>오늘의 날짜 및 시각 : <%= today %> </li>
        <li>오늘의 날짜 및 시각 및 요일명 : <%= currentTime %></li>
    </ul>
 
</body>
</html>
cs

 

<출력값>

<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
26
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
   
<%-- 필요한 클래스를 import하려면 <%@ page%> page directive(페이지 지시어)를 사용하여 import 를 한다. --%>   
 
<%@ page import= "java.util.Date , java.text.SimpleDateFormat"%>
 
<%
    // *** 현재시각을 알아오기 *** //
    /* java.util.Date now = new java.util.Date(); //import 안했을 때 */
    
    Date now = new Date(); // 현재시각 import 해줘서 오류안뜬다 
    
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String today = df.format(now);    
    
    // == 또는 ==
    String currentTime = String.format("%tF %tT %tA %tZ", now, now, now, now);
    
 
%>
 
<%-- HTML 태그가 없어도 위의 page 지시어 contentType="text/html; charset=UTF-8" 때문에 JSP 이다. 즉 웹페이지로 출력되어진다. --%>
<%= today %> 
<%= currentTime %>
 
cs

 

 

지시어 includ

 

코드의 중복을 피하기위하여 includ지시어를 사용해 파일의 내용을 불러와서 사용하는 것이다.

 

<예시 >

불러올 파일명 : 04_1_todayTime.jsp

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 
<%-- 필요한 클래스를 import하려면 <%@ page%> page directive(페이지 지시어)를 사용하여 import 를 한다. --%>   
 
<%@ page import= "java.util.Date , java.text.SimpleDateFormat"%>
 
<%
    // *** 현재시각을 알아오기 *** //
    
    Date now = new Date(); // 현재시각 import 해줘서 오류안뜬다 
    
    String currentTime = String.format("%tF %tT %tA", now, now, now);
    
%>
 
<%= currentTime%>
cs

 

 

<include 지시어를 이용해 코드를 불러오기>

 

<%@ include file="04_1_todayTime.jsp" %>
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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>오늘의 메뉴</title>
 
<link rel="stylesheet" type="text/css" href="css/style.css">
 
</head>
<body>
    <h3>오늘의 메뉴</h3>
    <ol style="list-style-type: decimal-leading-zero;">
        <li>햄버거 5,000원</li>    
        <li>짜장면 5,000원</li>    
        <li>짬뽕     6,000원</li>    
        <li>팔보채     8,000원</li>    
    </ol>
    
    <div id="today">
    현재시각 :  <%@ include file="04_1_todayTime.jsp" %>
    <%-- include directive(지시어)인 <%@ include  %> 을 사용하여
           04_1_todayTime.jsp 파일의 내용을 불러와서 넣어주는 것이다.
    --%>
    </div>
      
</body>
</html>
cs

 

<출력값>

 

 

 

Servlet(서블릿) 조건

 

서블릿(Servlet)이란 ? ==> 서블릿(Servlet)은 서블릿(Servlet) 클래스로 부터 만들어진 객체(Object)말한다.
웹컨테이너(Web Application Server / Tomcat Server)는 서블릿 클래스를 가지고
서블릿 객체를 만든 다음에,
그 객체를 초기화(사용할 수 있도록 준비된것)해서 웹서비스를 할 수 있는 상태로 만드는데,
이런 작업을 거친 서블릿 객체만 서블릿(Servlet) 이라고 할 수 있다.
즉, 웹서비스를 할 수 있는 자바의 객체를 서블릿(Servlet) 이라고 부른다.

"서블릿클래스" ===(인스턴스화)===> "서블릿 객체" ===(초기화)===> "서블릿"

이와 같이 서블릿 클래스가 서블릿이 되기 위해서는 인스턴스와 및 초기화라는 두 단계를 거쳐야 한다.
하지만 이 두 단계는 모두 웹 컨테이너(Tomcat Server)에 의해 수행되기 때문에
프로그래머인 우리는 해야할 일이 없다.

우리는 단지, 정해진 규칙에 따라 서블릿 클래스를 코딩해서 작성해서 컴파일하고,
웹 컨테이너에 설치하고, 등록하기만 하면 된다.

단, 서블릿(Servlet) 클래스를 올바르게 작성하기 위해서는 반드시 3가지 규칙을 따라야 한다.

 

Servlet 이란 ? 웹서비스 기능을 해주는 자바 클래스를 말한다. 

*** Servlet 이 되기 위한 조건은 3가지 규칙을 따라야 한다. ***
1. 서블릿(Servlet)은 반드시 
   javax.servlet.http.HttpServlet 클래스를 부모 클래스로 상속을 받아와야 한다. 

2. 웹클라이언트의 요청방식이 GET 방식으로 요청을 해오면
     doGet() 메소드로 응답을 해주도록 코딩을 해야하고,
     웹클라이언트의 요청방식이 POST 방식으로 요청을 해오면
     doPost() 메소드로 응답을 해주도록 코딩을 해주어야만 한다.
      그러므로  반드시  doGet() 메소드와  doPost() 메소드를 
   Overriding(재정의)를 해주어야만 한다.
   
   doGet() 메소드와 doPost() 메소드의 
           첫번째 파라미터는 HttpServletRequest 타입이고,
           두번째 파라미터는 HttpServletResponse 타입이다. 
           
3. 만약에  서블릿(Servlet)에서 결과물을 웹브라우저상에 출력하고자 한다라면 
   doGet() 메소드와 doPost() 메소드 모두 
      서블릿(Servlet)의 두번째 파라미터인 HttpServletResponse response 를 
      사용하여 출력해준다.

 

<자바 클래스>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
public class GetMethod_01 extends HttpServelt {
    
    @Override
    protected void doGet(HttpServletRequest request ,HttpServletResponse response) {
    //원래 protected인데 public도 가능 부모클래스와 같거나 더 크면 가능
        
        System.out.println("~~~ 확인용 : doGet 메소드가 호출됨 ~~~~");

    }
    
    @Override
    protected void doPost(HttpServletRequest request ,HttpServletResponse response) {
        
        System.out.println("#### 확인용 : doPost 메소드가 호출됨 ####~~~~");
    }
    
 
 
}
cs
 
 
 

 

jsp 에서 name등에 담아서 보내줘서 GetMethod_01 클래스에서 받아온다.

 

 

 

Context Path Name(컨텍스트명)

 

http://localhost:9090/JSPServletBegin/chap02/01_getMethod.jsp 
중 /JSPServletBegin 을 말한다.

 

 1. JSP 페이지에서 사용할 수 있는 내장객체변수의 종류 
 : 일반적인 JAVA 프로그램에서는 변수를 사용하기 전에 반드시 선언을 해야 하지만,
    JSP 페이지에서는 선언을 하지 않고도 사용할 수 있는 변수가 있다.
    이러한 변수를 JSP 페이지의 내장객체변수(implicit variable)라고 부른다.
    왜냐하면 웹컨테이너(=WAS, 톰캣서버)가 JSP 페이지를 Servlet 클래스로 변환해줄때
    자동적으로 변수선언을 해주기 때문에 우리는 변수선언 없이 그냥 사용만 하면 된다. (new해준 필요가 없다)

    -----------------------------------------------------------------
          내장객체변수이름                  역할
    -----------------------------------------------------------------

           request                   doGet, doPost 메소드의 첫번째 파라미터와 동일한 역할을 하는 내장객체로서
                                           웹클라이언트에서 보내온 데이터값을 받아서 처리해주는 역할을 함.

 

2. Context Path Name(컨텍스트명) 변경 및 전송방법

 2-1. <확장자가 jsp,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
29
30
31
32
33
34
35
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
 <%
     // 컨텍스트 패스명(context path name)을 알아오고자 한다.
      String ctxPath = request.getContextPath();
 
      System.out.println("ctxPath = > " + ctxPath);
     // ctxPath = > /JSPServletBegin <== WAS(톰캣서버) Document Base Path 설정의 기본값임.
    // ctxPath = > (아무글자도 없는 것임)     <== WAS(톰캣서버) Document Base Path 설정의 기본값임.
    // ctxPath = > /aaa                <== WAS(톰캣서버) Document Base Path 설정의 기본값임.
 
 %>   
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>GET 방식으로 데이터 전송하기</title>
 
<style type="text/css">
 
    ul {list-style-type: none;}
    li {line-height : 200%;}
 
</style>
 
</head>
<body>
 
    <form action="<%=ctxPath %>/01_getMethod.do">   context path name은 변하니까 ctxPath 변수로 넣어준다
   <!-- get방식은 ? 중심을 오른쪽은 전송되어야할 데이터 주소가 공개되어있다-->
<%--!!중요 !!
   확장자가 .jsp 또는 .html 인 파일에서 URL경로를 나타낼때 맨 앞에 / 가 오면
       그 앞에는  http://ip주소:포트번호 가 자동으로 붙게 된다.
       현재 <%= ctxPath%> 이  /JSPServletBegin 이므로 <%= ctxPath%>/01_getMethod.do 의 뜻은     
       http://localhost:9090/JSPServletBegin/01_getMethod.do 이라는 말이다.      
--%>

<%-- form 태그에서 submit(전송)을 하면
       http://localhost:9090/JSPServletBegin/01_getMethod.do 으로 데이터를 전송시킨다.
       만약에 method 를 생략하면 method="get" 으로 되어진다.
       
       GET방식은  웹브라우저 주소창에  http://URL주소?전송되어질데이터 와 같이 나타내주는 것이며 ,
       ? 를 중심으로 왼쪽은 사이트 URL 주소이며, 오른쪽은 전송되어질데이터를 나타낸다.
       GET방식은 웹브라우저 주소창에 데이터를 공개하므로 보안성이 떨어지지만 속도는 POST 방식보다 빠르다.
       그래서 일반적으로 보안과 관계없는 데이터조회(예: 물품정보 조회)와 같은 select 절에서 주로 사용된다.(where 절) 
  --%>
<%-- 
     submit 을 하면 <%= ctxPath%>/01_getMethod.do 로 보내어서 처리를 요청한다.
     /JSPServletBegin/01_getMethod.do 은 누가 처리를 해주는지는 배치서술자인 web.xml 에 기술되어져 있어야 한다.
    web.xml 에 가보면 <servlet-mapping>에 URL 패턴으로 /01_getMethod.do 가 기술되어져 있고,
    이어서 실제로 처리를 해주는 <servlet-class>에 클래스명이 기술되어져 있다.
    바로 이렇게 기술되어진 <servlet-class>클래스명이 action 일처리를 해주게 된다.
        
    !!! 아주 중요한 것은 web.xml은 언제 읽어들이는냐? 하면
    WAS가 구동되어질때 web.xml 파일에 기술된 내용을 딱 1번만 읽어들여서 web.xml 파일에 기술된 내용대로 WAS가 작동하도록 되어진다. 
    그러므로 web.xml 파일에 내용을 추가하거나 삭제하는 등 변경되어지면 변경된 내용대로 작동하기 위해서는 반드시 WAS를 껐다가 켜야만 변경되어진 내용이 적용된다. !!!     
  --%>

    </form>
 
</body>
</html>
cs
 
 
 

 

form 태그에서

action=" <%=ctxPath %>/01_getMethod.do" 으로 보내주겠다

/JSPServletBegin/01_getMethod.do 

(name 에담아서 보내준다)

 

<전송은 위의 자바클래스가 받는다> HttpServletRequest request 

의 request가 받아온다.

 

확장자가 .jsp 또는 .html 인 파일에서 URL경로를 나타낼때 맨 앞에 / 가 오면
 그 앞에는  http://ip주소:포트번호 가 자동으로 붙게 된다.
  현재 <%= ctxPath%> 이  /JSPServletBegin 이므로 <%= ctxPath%>/01_getMethod.do 의 뜻은     
  http://localhost:9090/JSPServletBegin/01_getMethod.do 이라는 말이다.

 

<get 방식>

<%-- form 태그에서 submit(전송)을 하면 http://localhost:9090/JSPServletBegin/01_getMethod.do 으로 데이터를 전송시킨다. 만약에 method 를 생략하면 method="get" 으로 되어진다.

GET방식은 웹브라우저 주소창에 http://URL주소?전송되어질데이터 와 같이 나타내주는 것이며 , ? 를 중심으로 왼쪽은 사이트 URL 주소이며, 오른쪽은 전송되어질데이터를 나타낸다. GET방식은 웹브라우저 주소창에 데이터를 공개하므로 보안성이 떨어지지만 속도는 POST 방식보다 빠르다. 그래서 일반적으로 보안과 관계없는 데이터조회(예: 물품정보 조회)와 같은 select 절에서 주로 사용된다.(where 절)

 

submit 을 하면 <%= ctxPath%>/01_getMethod.do 로 보내어서 처리를 요청한다. /JSPServletBegin/01_getMethod.do 은 누가 처리를 해주는지는 배치서술자인 web.xml 에 기술되어져 있어야 한다. web.xml 에 가보면 <servlet-mapping>에 URL 패턴으로 /01_getMethod.do 가 기술되어져 있고, 이어서 실제로 처리를 해주는 <servlet-class>에 클래스명이 기술되어져 있다. 바로 이렇게 기술되어진 <servlet-class>클래스명이 action 일처리를 해주게 된다.

!!! 아주 중요한 것은 web.xml은 언제 읽어들이는냐? 하면 WAS가 구동(start)되어질때 web.xml 파일에 기술된 내용을 딱 1번만 읽어들여서 web.xml 파일에 기술된 내용대로 WAS가 작동하도록 되어진다. 그러므로 web.xml 파일에 내용을 추가하거나 삭제하는 등 변경되어지면 변경된 내용대로 작동하기 위해서는 반드시 WAS를 껐다가 켜야만 변경되어진 내용이 적용된다. 

 

 

2-2. <확장자가 .xml 일때> : 배치서술자

 

확장자가 .xml 또는 .java 인 파일에서 URL경로를 나타낼때 맨 앞에 / 가 오면 그 앞에는 http://ip주소:포트번호/컨텍스트패스명 이 자동으로 붙게 된다. 우리의 컨텍스트 패스명은 /JSPServletBegin 이다. 즉, 우리는 http://localhost:9090/JSPServletBegin/01_getMethod.do 으로 된다.

 

1
2
3
4
5
6
7
8
9
10
<servlet>
        <servlet-name>abc</servlet-name>
        <servlet-class>chap02.GetMethod_01</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>abc</servlet-name>
        <url-pattern>/01_getMethod.do</url-pattern>
    </servlet-mapping>
 
cs

 

 

1.)<%=ctxPath %>/01_getMethod.do 에서 컨텍스트패스명 빼고 /01_getMethod.do 만 써준다.

 

2) chap02 패키지의 01_getMethod 클래스가 응답한다

 

3) 왓스가 구동될때 딱 1번만 읽어들인다. (위의 마지막 상자 참고)

: 변경된 내용대로 작동하기 위해서는 반드시 WAS를 껐다가 켜야만 변경되어진 내용이 적용된다. 

 

<최종 복습> (Main)g etmethod jsp,  XML , Getmethod 자바 클래스(서블릿) : 웹기능하는 클래스

 

>> jsp method 가 get이면 서블릿클래스의 doget이 호출, post면 dopost가 호출된다.

 

1. get 방식일때 

1-1 .01_getMethod jsp (main)

 

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
 <%
     // 컨텍스트 패스명(context path name)을 알아오고자 한다.
      String ctxPath = request.getContextPath();
 
      System.out.println("ctxPath = > " + ctxPath);
     // ctxPath => /JSPServletBegin    <== WAS(톰캣서버) Document Base Path 설정의 기본값임. 
     // ctxPath => (아무글자도 없는 것임)        <== WAS(톰캣서버) Document Base Path 설정을 / 으로 변경한 경우임. 
     // ctxPath => /aaa                <== WAS(톰캣서버) Document Base Path 설정을 /aaa 으로 변경한 경우임. 
 
 
    
    
 %>   
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>GET 방식으로 데이터 전송하기</title>
 
<style type="text/css">
 
    ul {list-style-type: none;}
    li {line-height : 200%;}
 
</style>
 
</head>
<body>
 
    <form action="<%=ctxPath %>/01_getMethod.do" method="get">  <!-- context path name은 변하니까 ctxPath 변수로 넣어준다 -->
                                        <!-- get방식은 ? 중심을 오른쪽은 전송되어야할 데이터 주소가 공개되어있다-->
    <%--!!중요 !!
       확장자가 .jsp 또는 .html 인 파일에서 URL경로를 나타낼때 맨 앞에 / 가 오면
       그 앞에는  http://ip주소:포트번호 가 자동으로 붙게 된다.
       현재 <%= ctxPath%> 이  /JSPServletBegin 이므로 <%= ctxPath%>01_getMethod.do 의 뜻은     
       http://localhost:9090/JSPServletBegin01_getMethod.do 이라는 말이다.      
    
     --%>
     
     <%-- form 태그에서 submit(전송)을 하면
       http://localhost:9090/JSPServletBegin01_getMethod.do 으로 데이터를 전송시킨다.
       만약에 method 를 생략하면 method="get" 으로 되어진다.
       
       GET방식은  웹브라우저 주소창에  http://URL주소?전송되어질데이터 와 같이 나타내주는 것이며 ,
       ? 를 중심으로 왼쪽은 사이트 URL 주소이며, 오른쪽은 전송되어질데이터를 나타낸다.
       GET방식은 웹브라우저 주소창에 데이터를 공개하므로 보안성이 떨어지지만 속도는 POST 방식보다 빠르다.
       그래서 일반적으로 보안과 관계없는 데이터조회(예: 물품정보 조회)와 같은 select 절에서 주로 사용된다. (where 절)
  --%>
  
  <%-- 
     submit 을 하면 <%= ctxPath%>01_getMethod.do 로 보내어서 처리를 요청한다.
     /JSPServletBegin01_getMethod.do 은 누가 처리를 해주는지는 배치서술자인 web.xml 에 기술되어져 있어야 한다.
    web.xml 에 가보면 <servlet-mapping>에 URL 패턴으로 01_getMethod.do 가 기술되어져 있고,
    이어서 실제로 처리를 해주는 <servlet-class>에 클래스명이 기술되어져 있다.
    바로 이렇게 기술되어진 <servlet-class>클래스명이 action 일처리를 해주게 된다.
        
    !!! 아주 중요한 것은 web.xml은 언제 읽어들이는냐? 하면
    WAS가 구동(start)되어질때 web.xml 파일에 기술된 내용을 딱 1번만 읽어들여서
     web.xml 파일에 기술된 내용대로 WAS가 작동하도록 되어진다. 
    그러므로 web.xml 파일에 내용을 추가하거나 삭제하는 등 변경되어지면 변경된 내용대로 작동하기 위해서는 반드시 WAS를 껐다가 켜야만 변경되어진 내용이 적용된다. !!!     
  --%>
    
    <fieldset>
      <legend>개인성향 테스트(GET method)</legend>
      <ul>
         <li>
            <label for="name">성명</label>
            <input type="text" name="name" id="name" placeholder="성명입력"/> 
                    <!-- name에 담아서 보내준다 -->
         </li>
         <li>
            <label for="school">학력</label>
            <select name="school" id="school">
                    <!-- name에 담아서 보내준다 -->
               <option value="고졸">고졸</option>
               <option value="초대졸">초대졸</option>
               <option value="대졸">대졸</option>
               <option value="대학원졸">대학원졸</option>
            </select>
         </li>
         <li>
            <label for="">좋아하는 색상</label>
            <div>
               <label for="red">빨강</label>
               <input type="radio" name="color" id="red" value="red" />
               
               <label for="blue">파랑</label>
               <input type="radio" name="color" id="blue" value="blue" />
               
               <label for="green">초록</label>
               <input type="radio" name="color" id="green" value="green" />
               
               <label for="yellow">노랑</label>
               <input type="radio" name="color" id="yellow" value="yellow" />
            </div>
         </li>
         <li>
            <label for="">좋아하는 음식(다중선택)</label>
            <div>
                <label for="food1">짜짱면</label>
               <input type="checkbox" name="food" id="food1" value="짜짱면" />
               &nbsp;
               
               <label for="food2">짬뽕</label>
               <input type="checkbox" name="food" id="food2" value="짬뽕" />
               &nbsp;
               
               <label for="food3">탕수육</label>
               <input type="checkbox" name="food" id="food3" value="탕수육" />
               &nbsp;
               
               <label for="food4">양장피</label>
               <input type="checkbox" name="food" id="food4" value="양장피" />
               &nbsp;
               
               <label for="food5">팔보채</label>
               <input type="checkbox" name="food" id="food5" value="팔보채" />
            </div>
         </li>
         <li>
            <input type="submit" value="전송" />
            <input type="reset" value="취소" />
         </li>
      </ul>
   </fieldset>
    
    </form>
 
</body>
</html>
cs

 

 

1-2. xml (배치서술자)

 

 

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
<?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_4_0.xsd"
    id="WebApp_ID" version="4.0">
    <display-name>JSPServletBegin</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.jsp</welcome-file>
        <welcome-file>default.htm</welcome-file>
    </welcome-file-list>
    
  <servlet>
      <servlet-name>01_getMethod</servlet-name> <!-- survlet name 은내마음대로 -->
      <servlet-class>chap02.GetMethod_01</servlet-class> <!-- 응답해줘야하는 서블릿 -->
  </servlet>
  <servlet-mapping>
       <servlet-name>01_getMethod</servlet-name> <!-- survlet name 은내마음대로 -->
       <url-pattern>/01_getMethod.do</url-pattern> <!-- 전송하는 폼태그  -->
  </servlet-mapping>
 
    === 중요 ===
    확장자가 .xml 또는 .java 인 파일에서 URL경로를 나타낼때 맨 앞에 / 가 오면
    그 앞에는  http://ip주소:포트번호/컨텍스트패스명 이 자동으로 붙게 된다.
    우리의 컨텍스트 패스명은  /JSPServletBegin 이다.      
    즉, 우리는  http://localhost:9090/JSPServletBegin01_getMethod.do 으로 된다. 

 submit 을 하면 <%= ctxPath%>01_getMethod.do 로 보내어서 처리를 요청한다.
     /JSPServletBegin01_getMethod.do 은 누가 처리를 해주는지는 배치서술자인 web.xml 에 기술되어져 있어야 한다.
    web.xml 에 가보면 <servlet-mapping>에 URL 패턴으로 01_getMethod.do 가 기술되어져 있고,
    이어서 실제로 처리를 해주는 <servlet-class>에 클래스명이 기술되어져 있다.
    바로 이렇게 기술되어진 <servlet-class>클래스명이 action 일처리를 해주게 된다.
        
    !!! 아주 중요한 것은 web.xml은 언제 읽어들이는냐? 하면
    WAS가 구동(start)되어질때 web.xml 파일에 기술된 내용을 딱 1번만 읽어들여서
     web.xml 파일에 기술된 내용대로 WAS가 작동하도록 되어진다. 
    그러므로 web.xml 파일에 내용을 추가하거나 삭제하는 등 변경되어지면 변경된 내용대로 작동하기 위해서는 반드시 WAS를 껐다가 켜야만 변경되어진 내용이 적용된다. !!!     
  --%>
      
      
      
</web-app>
 
cs

 

 

1-3. Getmeoth 자바 클래스 (서블릿)

 

 

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package chap02;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/*
    === Servlet 이란 ? 웹서비스 기능을 해주는 자바 클래스를 말한다. ===
    
    *** Servlet 이 되기 위한 조건은 3가지 규칙을 따라야 한다. ***
    1. 서블릿(Servlet)은 반드시 
       javax.servlet.http.HttpServlet 클래스를 부모 클래스로 상속을 받아와야 한다. 
    
    2. 웹클라이언트의 요청방식이 GET 방식으로 요청을 해오면
       doGet() 메소드로 응답을 해주도록 코딩을 해야하고,
       웹클라이언트의 요청방식이 POST 방식으로 요청을 해오면
       doPost() 메소드로 응답을 해주도록 코딩을 해주어야만 한다.
       그러므로  반드시  doGet() 메소드와  doPost() 메소드를 
       Overriding(재정의)를 해주어야만 한다.
       
       doGet() 메소드와 doPost() 메소드의 
               첫번째 파라미터는 HttpServletRequest 타입이고,
               두번째 파라미터는 HttpServletResponse 타입이다. 
               
    3. 만약에  서블릿(Servlet)에서 결과물을 웹브라우저상에 출력하고자 한다라면 
       doGet() 메소드와 doPost() 메소드 모두 
       서블릿(Servlet)의 두번째 파라미터인 HttpServletResponse response 를 
       사용하여 출력해준다.
*/    
 
public class GetMethod_01 extends HttpServlet {
 
    private static final long serialVersionUID = 1L; // 별의미없다 노란줄때문에
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        
        // throws IOException : 던지기 웹컨테이너인 톰캣이알아서 처리 
        
        System.out.println("~~~~ 확인용 : doGet 메소드가 호출됨 ~~~~");
        
        // HttpServletRequest request 객체는 전송되어져온 데이터를 처리해주는 용도로 쓰인다
        
        String name = request.getParameter("name");
        String school = request.getParameter("school");
        String color = request.getParameter("color"); //retuen 타입 String
        
        String[] arr_food = request.getParameterValues("food"); //복수개일때
        
        //유효성 검사
        if(color == null) {
            color = "없음";
        }
        
        String food = "";
        if(arr_food != null) {
            food = String.join(",", arr_food);
        }
        
        else {
            food = "좋아하는 음식이 없습니다";
        }
    
        
        //** 콜솔에 출력하기 시작 *** //
        System.out.println("name => " + name );
        System.out.println("school => " + school);
        System.out.println("color => " + color);
        System.out.println("좋아하는 음식 => " + food);
        
 
 
        //** 콜솔에 출력하기 끝 *** //
        
        
        // *** 웹브라우저에 출력하기 시작 *** // 
        // HttpServletResponse response 객체는 넘어온 데이터를 조작해서 결과물을 나타내고자 할 때 쓰인다
        response.setContentType("text/html; charset=UTF-8"); 
        
        PrintWriter out = response.getWriter(); //return타입 PrintWriter
        //out 은 웹브라우저에 기술하는 대상체라고 생각하자. 웹브라우저라고 생각
        
        out.println("<html>"); // 웹브라우저에 출력한다
        out.println("<head><title>개인 성향 테스트 결과화면</title></head>");
        out.println("<body>");
        out.println("<h2>개인 성향 테스트 결과(GET)</h2>");
        out.printf("<span style='color: blue; font-weight: bold;'>%s</span>님의 개인 성향은<br></br>",name); //%s(stirng)에 name이 들어온다 printf 라서(format)
        
        if(!"없음".equals(color)) {
            out.printf("학력은 %s이며, %s색을 좋아합니다. <br/><br/>", school, color );
        }
        else {
            out.printf("학력은 %s이며, 좋아하는 색이 없습니다. <br/><br/>", school);
        }
        
        /*
          %d ==> decimal 정수 
          %f ==> float 실수
          %s ==> string 문자열
          
         */
        
        String foodes = "";
        if(arr_food != null) {
            foodes = String.join(",", arr_food) + "입니다.";
        }
        
        else {
            foodes = "좋아하는 음식이 없습니다";
        }
        
        out.println("좋아하는 음식은 " + foodes);
        
        out.println("</body>");
        out.println("</html>");
        
        
        // *** 웹브라우저에 출력하기 끝 *** // 
        
        
    }
    
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) { 
        
        System.out.println("#### 확인용 : doPost 메소드가 호출됨 ####");
        
    }
    
}
 
cs

 

 

 

2.post 방식일때

: 한글깨져서 서블릿이 좀 다르다

 

2-1. postmethod jsp (main)

 

1
<form action="<%= ctxPath%>/02_postMethod.do" method="post">
cs

 

2-2. xml

 

1
2
3
4
5
6
7
8
 <servlet>
      <servlet-name>02_postMethod</servlet-name>
      <servlet-class>chap02.PostMethod_02</servlet-class>
  </servlet>
  <servlet-mapping>
       <servlet-name>02_postMethod</servlet-name>
       <url-pattern>/02_postMethod.do</url-pattern>
  </servlet-mapping>
cs

 

2-3. Postmethod 자바 클래스 (서블릿)

 

 

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package chap02;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class PostMethod_02 extends HttpServlet {
    
    private static final long serialVersionUID = 1L;
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 
        
        System.out.println("~~~~ 확인용 : doGet 메소드가 호출됨 ~~~~");
        
    }
    
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { 
        
        System.out.println("#### 확인용 : doPost 메소드가 호출됨 ####");
        
        /*
        post 방식으로 넘어온 데이터중 영어는 글자가 안깨지지만,
           한글은 글자모양이 깨져나온다.
           그래서  post 방식에서 넘어온 한글 데이터가 글자가 안깨지게 하려면 
           아래처럼 request.setCharacterEncoding("UTF-8"); 을 해야 한다.
           주의할 것은 request.getParameter("변수명"); 보다 먼저 기술을 해주어야 한다는 것이다.      
         */
        request.setCharacterEncoding("UTF-8");

이 아래부터는 같다
        
        // HttpServletRequest request 객체는 전송되어져온 데이터를 처리해주는 용도로 쓰인다. 
 
        String name = request.getParameter("name");
        String school = request.getParameter("school");
        String color = request.getParameter("color");
        
        String[] arr_food = request.getParameterValues("food");
        
        if(color == null) {
            color = "없음";
        }
        
        String food = "";
        if(arr_food != null) {
            food = String.join(",", arr_food);
        }
        else {
            food = "좋아하는 음식이 없습니다";
        }
        
        // **** 콘솔에 출력하기 시작 **** //
        System.out.println("name => " + name);
        System.out.println("school => " + school);
        System.out.println("color => " + color);
        System.out.println("좋아하는 음식 => " + food);
        // **** 콘솔에 출력하기 끝 **** //
        
        
        // **** 웹브라우저에 출력하기 시작 **** //
        // HttpServletResponse response 객체는 넘어온 데이터를 조작해서 결과물을 나타내고자 할때 쓰인다. 
        response.setContentType("text/html; charset=UTF-8");
        
        PrintWriter out = response.getWriter();
        // out 은 웹브라우저에 기술하는 대상체라고 생각하자.
        
        out.println("<html>");
        out.println("<head><title>개인 성향 테스트 결과화면</title></head>");
        out.println("<body>");
        out.println("<h2>개인 성향 테스트 결과(POST)</h2>");
        out.printf("<span style='color: red; font-weight: bold;'>%s</span>님의 개인 성향은<br/><br/>", name);  
        
        if(!"없음".equals(color)) {
            out.printf("학력은 %s이며, %s색을 좋아합니다.<br/><br/>",school,color);
        }
        else {
            out.printf("학력은 %s이며, 좋아하는 색이 없습니다.<br/><br/>",school); 
        }
        /*
            %d ==> decimal 정수
            %f ==> float   실수
            %s ==> string  문자열
        */
        
        String foodes = "";
        if(arr_food != null) {
            foodes = String.join(",", arr_food) + " 입니다.";
        }
        else {
            foodes = "없습니다";
        }
        
        out.println("좋아하는 음식은 " + foodes);
        
        out.println("</body>");
        out.println("</html>");
        // **** 웹브라우저에 출력하기 끝 **** //
        
    }
    
}
 
cs

 

주소에 전송값이 나오지 않는다.

 

<get,post 전송방식 받아서 결정해서 해주는 클래스로 만들어보기>

: 서블릿 클래스만 올려보겠다. 나머지는 이름만 다르므로 

 

1. 첫번째 방법 

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
package chap02;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
 
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
 
public class Get_Post_Method_03 extends HttpServlet {
    
    private static final long serialVersionUID = 1L;
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 
        
        excute(request,response);
        
    }
    
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { 
        
        excute(request,response);
        
    }    
    
    private void excute(HttpServletRequest request, HttpServletResponse response) throws IOException {
        
        String method = request.getMethod();  //전송방식이뭐냐
        // form 태그에서 넘어온 전송방식이 GET 방식이라면 "GET"이 나오고
        // form 태그에서 넘어온 전송방식이 POST 방식이라면 "POST"가 나온다/
        
        
        System.out.println("#### 확인용 : "+method+"  메소드가 호출됨 ####");
        
        /*
        post 방식으로 넘어온 데이터중 영어는 글자가 안깨지지만,
           한글은 글자모양이 깨져나온다.
           그래서  post 방식에서 넘어온 한글 데이터가 글자가 안깨지게 하려면 
           아래처럼 request.setCharacterEncoding("UTF-8"); 을 해야 한다.
           주의할 것은 request.getParameter("변수명"); 보다 먼저 기술을 해주어야 한다는 것이다.      
         */
        
        request.setCharacterEncoding("UTF-8");
 
        이하 같다
        
    
        
    }
    
}
 
cs

 

2.두번째 방법

 

 

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
public class Get_Post_Method_04 extends HttpServlet {
    
    private static final long serialVersionUID = 1L;
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 
        
        String method = request.getMethod(); //전송방식이 뭐냐
        // form 태그에서 넘어온 전송방식이 GET 방식이라면 "GET"이 나오고
        // form 태그에서 넘어온 전송방식이 POST 방식이라면 "POST"가 나온다/
        
        
        System.out.println("#### 확인용 : "+method+"  메소드가 호출됨 ####");
        
        /*
        post 방식으로 넘어온 데이터중 영어는 글자가 안깨지지만,
           한글은 글자모양이 깨져나온다.
           그래서  post 방식에서 넘어온 한글 데이터가 글자가 안깨지게 하려면 
           아래처럼 request.setCharacterEncoding("UTF-8"); 을 해야 한다.
           주의할 것은 request.getParameter("변수명"); 보다 먼저 기술을 해주어야 한다는 것이다.      
         */
        
        request.setCharacterEncoding("UTF-8");
        
        이하 같다
    }
    
        
        
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { 
        doGet(request, response);
        
        
    }    
    
cs

 

 

throws IOException  는 예외처리 해줘도 된다. 하지만 던지기로 선택했다 여기서는.