출처 : JSP 웹 프로그래밍 입문 + 활용 (앤써북)
00. 자바 기본문법 구조
1. 패키지 (package): 자바 클래스를 하나의 패키지로 묶을 경우 다른 클래스에 있는 메소드 공유 가능
2. 클래스 (class): 자바프로그램의 기본 단위 /클래스=하나의 자바 프로그램
3. 멤버변수 (member variable): 클래스에 속하는 변수 / 클래스에 속한 모든 메소드에서 사용 가능
4. 메소드 (method): 클래스에 속하며 프로그램이 처리해야 할 코드 기술
5. 메인 메소드 (main method): 프로그램 실행할 때의 진입점 (Main method안의 코드를 가장 먼저 실행)
6. 지역 변수: 선언한 메소드 안에서만 유효한 변수 / 매개변수도 지역 변수에 속한다
7. 객체선언, 생성 : [클래스명 객체이름 = new 클래스명();] 방식으로 호출한다.
01. JSP의 Script
1-1. JSP Script의 이해
# 스크립트 요소 : JSP 페이지에서 자바를 삽입할 수 있는 기술 / JSP 프로그래밍에서 사용되는 문법의 표현 형태
> 선언문 (Declaration), 스크립트릿 (Scriptlet), 표현식 (Expression), 주석 (Comment)
# 간단한 스크립트 소스 (책 참고)
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=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title> JSP Script Example</title> </head> <body> <%! String declaration = "Declaration"; %> <%! public String Method(){ return declaration; } %> <% String scriptlet="Scriptlet"; String comment="Comment"; out.println("내장객체를 이용한 출력 : " + scriptlet + "<p>"); %> 선언문의 출력1: <%=declaration %><p> 선언문의 출력2: <%=Method() %><p> 스크릿트릿의 출력: <%=scriptlet %><p> <!--JSP주석부분 --> <!--JSP 주석 1: <%=comment %> --><p> <%--JSP 주석2: <%=comment%> --%> <% /* 주석 (여러줄 주석) */ %> <%//주석 (한 줄 주석) %> </body> </html> | cs |
#결과
브라우저에서 해당 jsp 파일을 열면 위와 같은 결과가 나온다.
브라우저에서 페이지 소스보기를 누르면 아래와 같은 결과가 나온다.
사용자의 요청을 받아 동적으로 HTML을 생성하여 브라우저로 전송하며, 그 결과를 클라이언트에게 전송한다.
이 때 아래 결과와 같이 순수 HTML코드만 클라이언트에게 보여진다.
02. 선언문 (Declaration)
#선언문: JSP에서 사용될 변수나 메소드를 선언하는 영역
> 선언문 내에서 선언된 변수는 멤버 변수(Memer Variable)이다. 멤버 변수는 클래스 안에 선언해야 하며 <데이터 형 + 변수 명> 의 형태를 가진다.
> 사용 방식: <%! 멤버변수 및 메소드 선언 영역 %>
1 2 3 4 | <%! String declaration = "Declaration"; %> | cs |
2-1. 멤버변수 선언
선언문에서 선언된 변수는 JSP 페이지가 서블릿으로 변환되면 서블릿 클래스의 멤버변수가 된다.
변수 선언: 데이터 형 + 변수 명
초기화해주지 않으면 JVM (Java Virtual Machine)이 int형은 0, string형은 null을 default 값으로 가진다.
2-2. 메소드 선언
선언문에서 선언된 메소드는 일반적인 형태의 메소드로 선언된다.
메소드는 함수와 같이 특정 동작을 수행한 이후 값을 return하거나 값을 가공하여 저장한다.
#메소드 선언 소스
1 2 3 4 5 6 | <%! public String Method(){ return declaration; } %> | cs |
03. 스크립트릿 (Scriptlet)
#스크립트릿: JSP 페이지가 서블릿으로 변환될 때 _jspService (Tomcat 기준) 메소드 안에 선언되는 요소 / JSP 페이지 내에 코드 조각을 담고 있다
스크립트릿에서 선언된 변수는 지역 변수이며 메소드 선언은 할 수 없다. 지역 변수는 초기화를 반드시 해줘야 한다.
>사용 방식 : <% 자바코드 삽입 %>
1 2 3 4 5 6 | <% String scriptlet="Scriptlet"; String comment="Comment"; out.println("내장객체를 이용한 출력 : " + scriptlet + "<p>"); %> | cs |
JSP 페이지와 서블릿으로 변환된 자바 코드를 비교하면 선언문에서 선언된 변수는 자바 클래스 영역에서 선언이 되고,
스크립트릿에서 선언된 변수는 자바 메소드 안에 선언이 된다.
선언문의 변수들은 JSP 페이지 전체에서 접근할 수 있는 변수들이며, JSP 페이지 내에서 메소드가 필요하다면 반드시 선언문에서 선언해야 한다.
3-1. 스크립트릿의 활용
#스크립트릿 요소 소스 (책 참고)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title> Scriptlet Example</title> </head> <body> <% float f=2.3f; int i= Math.round(f); java.util.Date date=new java.util.Date(); %> 실수 f의 반올림값? <%=i %><p> 현재 날짜와 시간은? <%=date.toString() %> </body> </html> |
-Math.round() : 실수 값을 반올림하여 정수 값을 반환 해 주는 메소드
-date.toString() : date 객체가 가지고 있는 날짜와 시간을 string 타입으로 출력한다
#결과
#선언문과 스크립트릿의 차이점?
선언문: 메소드를 선언하거나 변수를 선언할 때 필요하다. -> 이 때 선언되는 변수는 "멤버변수" -> JSP 페이지 어디에서든 사용
스크립트릿 : 변수 선언할 때 사용한다. -> 이 때 선언되는 변수는 "지역변수"
04. 표현식 (Expression)
#표현식: 동적인 JSP 페이지를 브라우저로 표현하기 위한 요소
변수를 출력하거나 메소드의 결과 값을 브라우저에 출력한다.
>사용 방식: <%= 변수 혹은 메소드%>
1 2 | <%=declaration %> <%=Method() %> | cs |
4-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 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title> Expression Example </title> </head> <body> <%! String name[]={"Java","JSP","Android","Struts"}; %> <table border ="1" width ="200"> <% for (int i=0;i<name.length;i++){%> <tr><td><%=i%></td> <td><%=name[i] %></td> </tr> <%} %> </table> </body> </html> | cs |
-String name[]: name이라는 배열 선언한 후 4개의 값을 할당
-for (int i=0;i<name.length;i++) : i=0으로 초기화한 후 배열의 길이만큼 루프돌려 값을 출력
#결과
조건문 (if/else)는 표현식으로 사용할 수 없다. 오로지 결과 값을 결과로서 출력할 수 있을 뿐이다.
단, 삼항 연산자(A? B:C)는 표현식에서 사용가능하다. 삼항 연산자는 값을 반환하기 때문이다.
05. 주석 (Comment)
#주석: 프로그램 실행 결과에 직접적으로 영향을 주진 않지만 개발자들이 소스 설명 처리를 위해 사용하는 스크립트 요소
>HTML 형식의 주석:
1 | <!-- hello <%=name%> --> | cs |
사용자 브라우저에서 소스 보기를 통해 확인할 수 있는 주석.
만일 name="Mori"였다면, 소스 보기를 통해 <!--hello Mori --> 코드를 확인할 수 있다.
>JSP 형식의 주석:
1 | <%-- hello <%=name%> --%> | cs |
JSP 소스에서만 사용되며 브라우저 소스 보기를 통해서도 확인할 수 없다.
HTML 형식의 주석은 서블릿 파일 변환 시 주석 안에 있는 표현식을 컴파일하고 전체 출력물이 주석으로 처리된다.
JSP 형식의 주석은 주석 안에 있는 표현식을 무시해 버리므로 name 변수 값이 없더라도 에러가 나지 않는다.
>스크립트 요소의 주석:
1 2 | <%=name /* COMMENT */ %> <%//1 line comment %> | cs |
스크립트릿 혹은 선언문에서 사용되는 스크립트 언어가 지원하는 주석 표기
단, 표현식에서 표현은 없고 주석만 있다면 컴파일 에러가 발생한다.
06. 기본 제어문
6-1. if-else (조건 분기문)
가장 일반적으로 많이 사용되며 특정한 조건에 의해 코드 실행을 조정할 수 있다.
#예제 (책 참고)
|
| |||||||
1) if.html | 2) if.jsp |
-15,16 : if.html에서 입력한 name, color 값을 스크립트릿에서 string 형으로 리턴받는다.
#결과
브라우저에 if.html 실행 결과를 출력한다. | 이름/좋아하는 색깔 선택 후 제출을 누르면 if.jsp 실행결과를 확인할 수 있다. |
6-2. for (반복문)
JSP 페이지의 스크립트 요소에 사용하여 반복적인 내용을 출력할 수 있다.
#예제 (책 참고) : 1~10까지의 수의 합을 구하는 소스
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 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>For Example</title> </head> <body> 1에서 10까지의 합은?<p> <% int i,sum=0; for(i=1;i<=10;i++){ if(i<10){ %> <%=(i + " +") %> <% }else{ out.println(i+ " = "); }//else문 sum+=i; }//for문 %> <%=sum %> </body> </html> | cs |
- for문 중간에 브라우저 출력을 위해 <&=(i+" +")%>를 사용하였고, 이 때문에 for문과 if-else문이 끝나기 전에 스크립트릿을 닫았다.
#결과
6-3. while (반복문)
조건을 검사한 후 참인 조건은 실행문을 반복적으로 수행하고, 거짓인 조건은 while문을 빠져나온다.
while문의 조건이 항상 참이라면 무한루프된다.
#예제 (책 참고)
|
| |||||||
1) while.html | 2) while.jsp |
-request.setCharacterEncoding("EUC-KR"); : while.jsp는 요청 정보에 대한 문자 인코딩 설정 해줘야 한다. 한글은 EUC-KR로 설정한다.
-int num=Integer.parseInt(request.getParameter("num")); : num은 while.html에서 정수 값이지만 페이지 간 통신을 통해 전달 받은 값은 문자열로 넘어오기 때문에 parseInt() 메소드를 통해 정수 값으로 반환시켜준다.
#결과
브라우저에 while.html의 결과를 출력한다. | while.jsp의 실행화면 확인가능 |
'2018 공부 > Studies' 카테고리의 다른 글
[JSP] JSP 동작원리(Tomcat)와 서블릿 (0) | 2018.11.20 |
---|---|
[JSP] JSP 웹 프로그래밍의 이해 (0) | 2018.11.19 |
[Linux] 리눅스마스터 2급 1차 합격후기 (0) | 2018.11.18 |
[데이터베이스] Oracle 11g 다운로드 및 설치 (0) | 2018.11.12 |