'Back-End/JSP'에 해당되는 글 71건

  1. 2019.04.27 19.04.27 JSP 기본 제어문
  2. 2019.04.27 jsp 페이지가 실행될 때 서블릿 코드로 변환이 되는 위치
  3. 2019.04.26 19.04.26 JSP 페이지 디렉티브, 페이지 스크립트 요소 (동영상 5강~8강)
  4. 2019.04.26 19.04.26 JSP 기본 문법 (교재)
  5. 2019.04.25 19.04.25 웹 프로그래밍의 이해
  6. 2019.04.25 JSP 책 학습일정
  7. 2019.04.19 JSP 동영상 학습 플래닛

19.04.27 JSP 기본 제어문

Back-End/JSP 2019. 4. 27. 08:55

- if else -

 

if - else 문은 특정한 조건에 의해서 코드 실행 블록을 조정 할 수 있는 조건 제어문 이다.

 

 

  JSP에서 선언된 변수는 HTML의 태그 속성 및  다양한 곳에서 사용 할 수가 있다.

  예를 들어

 

  <% String id = "rorod";%>

  <FORM>

   ...............

  <INPUT TYPE="text" NAME="id" VALUE="<%=id%>">

   ...............

  </FORM>

 

  String 타입의 id를 FORM에 이름이 id인 텍스트 상자의 VALUE의 속성 값으로 사용을 한다.

  속성 뿐만 아니라 정적 코드인 HTML 및 자바스크립트에서 다양하게 사용을 하게 된다.

 

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
<h1>If-else Example</h1>
<form method="post" action="if.jsp">
    이름 : <input name="name">
    <p />
    좋아하는 색깔 : <select name="color">
        <option value="blue" selected>파란색</option>
        <option value="red">붉은색</option>
        <option value="orange">오렌지색</option>
        <option value="etc">기타</option>
    </select> <input type="submit" value="보내기">
</form>
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
<%@ page contentType="text/html;charset=euc-kr"%>
<%
    request.setCharacterEncoding("euc-kr");
%>
<h1>If-else Example</h1>
<%!String msg;%>
<%
    String name = request.getParameter("name");
    String color = request.getParameter("color");
 
    if (color.equals("blue")) {
        msg = "파란색";
    } else if (color.equals("red")) {
        msg = "붉은색";
    } else if (color.equals("orange")) {
        msg = "오렌지색";
    } else {
        color = "white";
        msg = "기타색";
    }
%>
<body bgcolor=<%=color%>>
    <b><%=name%></b> 님이 좋아하는 색깔은
    <b><%=msg%></b> 입니다.
</body>
cs

 

 

 

 

- for (반복문) -

 

for문은 while문과 같이 대표적인 반복문이다.

반복문은 모두 스크립트 요소에서 사용하여 jsp 페이지에서 반복적인 내용을 출력할 수가 있다.

특히 Database의 질의 결과를 순서대로 출력할때 매우 유용하게 사용이 된다.

절대적인 것은 아니지만 일반적인 for문은 크기가 고정이 되어 있을 때 사용이 많이 되고,

while 문은 크기가 유동적일 때 사용이 많이 된다.

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<h1>For Example</h1>
1에서 10까지 합은 ?
<p>
    <%
        int i, sum = 0;
        for (i = 1; i <= 10; i++) {
            if (i < 10) {
    %>
    <%=(i + "+")%>
    <%
        } else {
                out.println(i + "=");
            } //if-else
            sum += i;
        } //for
    %>
    <%=sum%>
cs

 

 

-while (반복문)-

 

while문은 조건을 검사해서 조건이 참(true) 이면 실행문을 반복적으로 실행하고 그렇지 않으면 while문을 빠져 나오는 동작을 하는 반복문이다.

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
<h1>While Example</h1>
<form method="post" action="while.jsp">
    반복하고 싶은 문구 : <input name="msg" size="20">
    <p />
    반복하고 싶은 횟수 : <input name="number">
    <p />
    <input type="submit" value="보내기">
</form>
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page contentType="text/html; charset=EUC-KR"%>
<h1>While Example</h1>
<%
    request.setCharacterEncoding("EUC-KR");
    String msg = request.getParameter("msg");
    int number = Integer.parseInt(request.getParameter("number")); //요청한 값이 정수이지만 html에서 jsp파일로 이동할 때 문자로 변환이 되서 다시 정수로 변환해야한다.
    int count = 0;                                                   //FORM에서 넘기는 값은 String값으로 넘어오기때문에 값의 데이터형과 일치하는 Wrapper 클래스로 변환시켜야됨.
    while(number>count)
    {
%>
<b><%=msg%> <%=count%> 번째 출력값</b>
<br />
<%
        count++;
    }
cs

 

 

 

:

jsp 페이지가 실행될 때 서블릿 코드로 변환이 되는 위치

Back-End/JSP 2019. 4. 27. 07:45

-jsp 페이지가 실행될 때 서블릿 코드로 변환이 되는 위치-

 

 

  Tomcat에서 실행을 했을 때와는 다른 위치에 만들어 진다.

  application 객체의 getRealPath("/") 메소드를 통해서 이클립스로 실행시 실질적으로 실행되는 JSP 코드가 있는 위치

  (C:\Users\hansub\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\) 파악을 한 후에 이 위치에서

  두 단계 상위로 올라가면 (C:\Users\hansub\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0)

  work 폴더에서 8단계 하위로 들어가면 서블릿 코드로 변환된 소스를 찾을수 있다.

 

  jsp 페이지가 서블릿 코드로 변환되는 소스는 개발시에 상당히 중요하다.

  디버깅 작업을 할 때 서블릿 코드가 참조되는 경우가 많기 때문에 반드시 이 위치를 알아놓아야 한다!!

 

 

:

19.04.26 JSP 페이지 디렉티브, 페이지 스크립트 요소 (동영상 5강~8강)

Back-End/JSP 2019. 4. 26. 14:44

- JSP 페이지 디렉티브 -



속 성

 설 명

기본값

language

JSP 스크립트 코드에서 사용되는 프로그래밍 언어를 지정한다.
    JSP 2.1 버전까지는 스크립트 언어로서 자바만을 지원하고 있다. 

java 

 contentType

JSP가 생성할 문서의 타입을 지정한다. 

 text/html

 import

JSP 페이지에서 사용할 자바 클래스를 지정한다. 

 

 session

JSP 페이지가 세션을 사용할지의 여부를 지정한다.
          "true" 일 경우 세션을 사용하고 "false"일 경우 세션을 사용하지 않는다. 

 true

 buffer

JSP 페이지의 출력 버퍼크기를 지정한다. 

"none" 일 경우 출력버퍼를 사용하지 않으며, "8kb" 라고 입력할 경우 8킬로바이트
         크기의 출력 버퍼를 사용한다.

 최소 8kb

 autoFlush

출력 버퍼가 다 찼을 경우 자동으로 버퍼에 있는 데이터를 출력 스트림에 보내고
            비울지의 여부를 나타낸다. "true" 일 경우 버퍼의 내용을 웹 브라우저에 보낸 후
            버퍼를 비우며, "false" 일 경우 에러를 발생시킨다. 

 true

 info

JSP 페이지에 대한 설명을 입력한다. 

 

 errorPage

JSP 페이지를 실행하는 도중 에러가 발생할 때 보여줄 페이지를 지정한다. 

 

 isErroePage

 현재 페이지에 에러가 발생될때 보여지는 페이지인지의 여부를 지정한다.
              "true"일 경우 에러페이지이며, "false"일 경우 에러 페이지가 아니다.

false 

 pageEncoding

JSP 페이지 자체의 캐릭터 인코딩을 지정한다.  

 




-JSP의 형식-


 

  <%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%> //jsp 페이지의 필수적인 요소


  page language=사용할 언어
  contentType=사용할 형식
  charset=문자셋


  <%
  안에 입력되면 language에 해당되는 언어로 인식됨.
  %>






-에러 코드 예제-


JSP 에서는 위쪽 형식에 <% errorPage="Error.jsp" isErrorPage="true"%> 코드를 붙여서 에러표시를 한다.



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 import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR" import="java.util.Date" errorPage="Error.jsp" isErrorPage="true"%>
 
    
<!DOCTYPE html html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/htm14/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content ="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 
나 화면에 보여지니?
 
<%
 
int sum = 10/0;//에러코드를 작성 어떤수를 0으로 나눌수가 없기 때문에 에러가 뜬다.
 
%>
 
</body>
</html>
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 
    에러 페이지 입니다.
 
</body>
</html>
cs




-스크립트릿<%! %>-


스크립트릿은 가장 일반적으로 JSP 페이지에서 많이 쓰이는 스크립트 요소로
주로 프로그래밍의 로직을 기술할 때 많이 쓰인다.


스크립트릿에서 선언한 변수는 JSP 페이지가 서블릿으로 변환될때
지역변수로 사용된다. 



  <%!
   자바 코드 삽입

  %>





-선언문<%! %>-


선언문은 일반적으로 JSP 페이지에서 자바의 멤버변수 또는
멤버 메소드로 사용하고자 할때 주로 사용된다.


선언문의 변수는 서블릿으로 변환될 때 멤버변수로 변환되고
선언문에서의 메소드는 서블릿에서 메소드로 만들어진다.



 

  <%!

   자바 코드 삽입

  %>





-표현식 <%= %>-


표현식은 일반적으로 JSP페이지에서 자바의 System.out.println()과 유사하게 사용된다.
데이터 출력을 할때 주로 사용되는 프로그래밍의 로직 기술이다.


 

  <%=
   자바 코드 삽입

  %>





-예제 및 출력 결과-


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=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 
    <h2>화면에 구구단을 출력하시오</h2>
 
 
    <%
        //자바코드는 <%안쪽에 적기, <%=는 브라우저에 표시될 값
        for (int i = 2; i < 10; i++) {
 
            for (int j = 1; j < 10; j++) {
    %>
    <%=i%>
    +
    <%=j%>
    =
    <%=* j%>
    <%
        }
    %>
    <br>
    <%
        }
    %>
 
 
</body>
</html>
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
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 
    <h2>화면에 구구단을 출력하시오</h2>
  //위에 코드와 같은 값이 출력됨 (이게 더 간단함)
    <%
        //자바코드는 <%안쪽에 적기, <%=는 브라우저에 표시될 값
        for (int i = 2; i < 10; i++) {
            for(int j = 1; j < 10; j++){
                
                out.write(i+ " * " + j + " = " +i*j); //out.write는 <%= 와 동일한 뜻을 가진다.
                
            }
        }
            
%>
 
 
 
</body>
</html>
cs


  <참고>


  JSP 파일을 콘솔창에 출력이 되도록 컴파일을 해야 jsp.java 파일과 jsp.class 파일이 추가가 된다. 




-예제-


선언문- <%만쓰면 메소드 안에서 문자만 출력이 가능하기 때문에  메소드 안에 메소드가
           선언이 될수 없어, <%!를 쓰면 멤버 메소드로 생성이 되게 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 
    <%!public void inCrement() {
 
    }%>
 
    <%!int a = 10//멤버 메소드내에서 만들어짐(멤버변수임)%>
 
    <%
        int a = 100//서비스 메소드내에서 만들어짐 (지역변수임) 따라서 2개가 중복이 안됨
    %>
 
 
 
</body>
</html>
cs


:

19.04.26 JSP 기본 문법 (교재)

Back-End/JSP 2019. 4. 26. 10:24

-JSP-


스크립트의 요소란 JSP 프로그래밍에서 사용되는 문법의 표현 형태.
JSP에서는 동적인 페이지를 생성하기 위해서 다양한 형태를 제공하여 각각 필요한
곳에 적절히 사용할 수 있도록 하고 있다.




-JSP 스크립트 요소-


 

  1. 선언문


  2.스크립트릿


  3.표현식


  4. 주석




-예제 및 출력 결과-


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 contentType="text/html; charset=EUC-KR"%>
<html>
<title>JSP스크립트 Example</title>
<body>
    <h1>Script Example</h1>
    <%!String declaration = "Declaration";%>
    <%!public String decMethod() {
        return declaration;
    }%>
    <%
        String scriptlet = "Scriptlet";
        String comment = "Comment";
        out.println("내장객체를 이용한 출력 : " + declaration + "<p>");
    %>
    선언문의 출력1 :
    <%=declaration%><p>
        선언문의 출력2 :
        <%=decMethod()%>
    <p>
        스크립트릿의 출력 :
        <%=scriptlet%>
    <p>
        <!-- JSP 주석부분 -->
        <!-- JSP 주석 1: <%=comment%>-->
    <p>
        <%-- JSP 주석 2<%=comment%>--%>
        <%
            /* 주석
            (여러줄 주석)
            */
        %>
        <%//주석(한줄 주석) %>
    
</body>
</html>
cs





-이클립스와 브라우저창에서 각각 [페이지 소스 확인]-


브라우저에서의 [페이지 소스보기]는 HTML, Javscript, CSS 코드만 보입니다.

JSP와 같은 서버 스크립트(asp, php, jsp) 들의 코드는 서버(톰캣) 에서 동적으로 처리가 되고

처리된 내용들을 브라우저로 응답을 하기 때문에 클라이언트의 브라우저에서는 보이지 않습니다.


(지금 이 예제는 html로 만들었기 때문에 브라우저와 이클립스에서 확인한 [페이지 소스 확인]의 값이 동일하다.)







-선언문-


JSP 프로그램의 스크립트 요소 중 선언문은 JSP에서 사용될 변수나 메소드를 선언할 수 있는
영역의 요소를 의미합니다.
jsp 페이지 내에서 변수 및 메소드를 선언을 하고 선언된 변수나 메소드를 이용하여
필요한 동적인 HTML 코드를 생성하는데 사용한다.

하지만 스크립트 요소중에서 선언문은 잘 사용되지 않는다.

왜냐하면 jsp 페이지에서 선언된 메소드는 자신의 페이지에서만 반복적으로 사용 할 수가 있고 다른

jsp 페이지에서는 사용 할 수 없기 때문에 차라리 반복적으로 사용할 기능의 메소드가 필요하다면

자바 파일로 만들고, 모든 jsp 페이지에서 참조하여 사용하면 된다.

멤버변수 : 선언문에서 선언된 변수.



 

  ------선언문(Declaration)의 문법------


  <%!
   멤버변수 및 메소드를 선언하는 영역
  %>




 

  ------메소드(method) 문법------


  <%!
   String name = "Korea";
   public String getName() {
   return;
   }
  %>




-예제 및 출력-


team 변수는 늦게 선언이 되었지만 클래스 내부에 있는 멤버변수이기 때문에 전역변수인 name 변수를 참조할 수 있다.


1
2
3
4
5
6
7
8
9
10
11
<%@ page contentType="text/html; charset=EUC-KR"%>
<h1>Declaration Example1</h1>
<%
    String name = team + "Fighting!!!"//name 보다 늦게 선언이 되었지만 team이라는 변수의 값을 참조하고 있다.
%>
 
<%!
    String team = "Korea";
%>
출력되는 결과는 ? <%=name%>
    
cs

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page contentType="text/html; charset=EUC-KR"%>
<h1>Declaration Example2</h1>
<%!int one;
    int two = 1;
 
    public int plusMethod() {
        return one + two;
    }
 
    String msg;
    int three;%>
 
one 와 two의 합은 ?
<%=plusMethod()%><p>
    String msg의 값은 ?
    <%=msg%>
<p>
    int three의 값은 ?
    <%=three%>
cs


 

 

 

 

 


 

-스크립트릿(Scriptlet)-


가장 일반적으로 많이 사용되는 스크립트 요소로 jsp 페이지가 서블릿으로 변환되고
요청될 때 jspService (Tomcat 기준으로 설명) 메소드 안에 선언이 되는 요소입니다.
스크립트릿은 선언문과 달리 선언된 변수는 지역 변수로 선언이 되고 메소드 선언은 할 수가 없습니다.
변수를 선언할 수 있는 영역이지만 멤버 변수가 아니라 지역 변수라는 차이점이 있다.


 

  ------스크립트릿 문법------


  <%
   이곳에 필요한 자바코드를 삽입합니다. (지역 변수 선언, for, while, if 등...)
  %>


 

 

-예제 및 출력결과-

 

1
2
3
4
5
6
7
8
9
10
<%@ page contentType="text/html; charset=EUC-KR"%>
<h1>Scriptlet Example1</h1>
<%!int one;
    String msgOne;%>
<%
    int two = 31;
    String msgTwo = "Scriptlet Example";
%>
<%=two + " : " + msgTwo%><br />
<%=application.getRealPath("/")%> //현재 jsp파일의 경로를 출력하는 메소드
cs

 

 

-예제 파일 서블릿 코드 (jsp -> 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
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
136
137
138
139
140
141
142
143
144
145
/*
 * Generated by the Jasper component of Apache Tomcat
 * Version: Apache Tomcat/8.5.40
 * Generated at: 2019-04-26 13:50:13 UTC
 * Note: The last modified time of this file was set to
 *       the last modified time of the source file after
 *       generation to assist with modification tracking.
 */
package org.apache.jsp;
 
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
 
public final class scriptlet1_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent,
                 org.apache.jasper.runtime.JspSourceImports {
 
    int one;      //선언문에서 선언한 변수들 (멤버변수)
    String msgOne;
  private static final javax.servlet.jsp.JspFactory _jspxFactory =
          javax.servlet.jsp.JspFactory.getDefaultFactory();
 
  private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
 
  private static final java.util.Set<java.lang.String> _jspx_imports_packages;
 
  private static final java.util.Set<java.lang.String> _jspx_imports_classes;
 
  static {
    _jspx_imports_packages = new java.util.HashSet<>();
    _jspx_imports_packages.add("javax.servlet");
    _jspx_imports_packages.add("javax.servlet.http");
    _jspx_imports_packages.add("javax.servlet.jsp");
    _jspx_imports_classes = null;
  }
 
  private volatile javax.el.ExpressionFactory _el_expressionfactory;
  private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
 
  public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
    return _jspx_dependants;
  }
 
  public java.util.Set<java.lang.String> getPackageImports() {
    return _jspx_imports_packages;
  }
 
  public java.util.Set<java.lang.String> getClassImports() {
    return _jspx_imports_classes;
  }
 
  public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
    if (_el_expressionfactory == null) {
      synchronized (this) {
        if (_el_expressionfactory == null) {
          _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
        }
      }
    }
    return _el_expressionfactory;
  }
 
  public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
    if (_jsp_instancemanager == null) {
      synchronized (this) {
        if (_jsp_instancemanager == null) {
          _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
        }
      }
    }
    return _jsp_instancemanager;
  }
 
  public void _jspInit() {
  }
 
  public void _jspDestroy() {
  }
 
  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {
 
    final java.lang.String _jspx_method = request.getMethod();
    if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
      response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");
      return;
    }
 
    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;
 
 
    try {
      response.setContentType("text/html; charset=EUC-KR");
      pageContext = _jspxFactory.getPageContext(this, request, response,
                  nulltrue8192true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;
 
      out.write("\r\n");
      out.write("<h1>Scriptlet Example1</h1>\r\n");
      out.write('\r');
      out.write('\n');
 
    int two = 31;                       //스크립트릿에서 선언한 변수들 (지역변수)
    String msgTwo = "Scriptlet Example";
 
      out.write('\r');
      out.write('\n');
      out.print(two + " : " + msgTwo);  //표현식으로 출력된 JSP 코드들
      out.write("<br />\r\n");
      out.print(application.getRealPath("/"));
    } catch (java.lang.Throwable t) {
      if (!(t instanceof javax.servlet.jsp.SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try {
            if (response.isCommitted()) {
              out.flush();
            } else {
              out.clearBuffer();
            }
          } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
        else throw new ServletException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}
 
 
 
cs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-jsp 페이지가 실행될 때 서블릿 코드로 변환이 되는 위치-

 

 

  Tomcat에서 실행을 했을 때와는 다른 위치에 만들어 진다.

  application 객체의 getRealPath("/") 메소드를 통해서 이클립스로 실행시 실질적으로 실행되는 JSP 코드가 있는 위치

  (C:\Users\hansub\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\) 파악을 한 후에 이 위치에서

  두 단계 상위로 올라가면 (C:\Users\hansub\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0)

  work 폴더에서 8단계 하위로 들어가면 서블릿 코드로 변환된 소스를 찾을수 있다.

 

  jsp 페이지가 서블릿 코드로 변환되는 소스는 개발시에 상당히 중요하다.

  디버깅 작업을 할 때 서블릿 코드가 참조되는 경우가 많기 때문에 반드시 이 위치를 알아놓아야 한다!!

 



 


-표현식-


표현식은 말 그대로 동적인 jsp 페이지를 브라우저로 표현을 하기 위한 요소입니다.
표현식은 변수를 출력하거나 메소드의 결과 값을 브라우저에 출력 할 수 있습니다.
스크립트릿 코드 내에서 out이라는 내장객체를 통해서 브라우저에 출력도 가능합니다.
그리고 표현식에서는 스크립트릿과 달리 변수나 메소드를 출력하고 할 때는 세미콜론(;)은
표기하지 않습니다.
내부적으로 서블릿(Servlet) 코드로 변환될 때 자동적으로 세미콜론이 붙여지기 때문입니다.

그리고 결과로만 출력을 할 수 있고, 조건적인 문장은 (if/else)는 표현식으로는 사용 할 수 없다.

그러나 삼항 연산자는 조건 검사의 결과 값을 리턴하기 때문에 표현식에서 사용 할 수 있다.

 

  ------표현식 문법------


  <%=변수 혹은 메소드%>


 

 

 


-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page contentType="text/html; charset=EUC-KR"%>
<h1>Expression Example1</h1>
<%!String name[] = { "Java""JSP""Android""Struts" };%> //문자배열 선언 및 값 할당
<table border="1" width="200"> //border은 테이블 외곽선의 두께, width는 테이블 칸의 길이 
    <%
        for (int i = 0; i < name.length; i++) { //문자의 길이만큼 루프돌려 문자 하나씩 출력
    %>
    <tr>
        <td><%=i%></td>
        <td><%=name[i]%></td>
    </tr>
    <%
        }
    %>
</table>
cs

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page contentType="text/html; charset=EUC-KR"%>
<h1>Expression Example2</h1>
<%
    java.util.Date date = new java.util.Date();
    int hour = date.getHours(); //Date 클래스에서 getHours() 메소드를 사용하여 시간(hour) 값만 반환을 한다.
    int one = 10;
    int two = 12;
%>
<%!public int operation(int i, int j) {
        return i > j ? i : j;
    }%>
지금은 오전일까요 오후일까요?
<%=(hour < 12) ? "오전" : "오후"%><p>
    one 와 two 둘 중에 큰 숫자는?
    <%=operation(one, two)%>

cs

 


-주석-


프로그램에 직접적인 영향을 미치지는 않지만 개발자들이 소스 분석 내용 및
파일 설명 처리를 위해서 없어서는 안 될 꼭 필요한 요소.


 

  ------HTML 형식 주석------


  <!-- Fighting <%=name%> -->




 

  ------JSP 형식 주석------


  <%-- Fighting <%=name%> --%>




 

  ------스크립트 형식 주석------


  <% /*주석...여러 줄 주석 및 부분 주석)*/ %>


  <% //주석....(한줄 주석)%>


 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<h1>Comment Example1</h1>
<%
    String name = "Korea";
%>
<!-- 주석 부분입니다. '소스보기'에서 보이지요 -->
<%--
    이 부분은 jsp 페이지에서만 보이고 '소스보기'를 해도 보이지 않습니다.
    브라우저에 보내지 않는 문장입니다.
--%>
<!-- <%=name%> 주석에서도 동적인 변수은 가능하지만 출력은 되지 않는다. -->
<%=name/* 표현식에 주석 부분 입니다 */%>
Fighting!!!
 
cs

 


 

:

19.04.25 웹 프로그래밍의 이해

Back-End/JSP 2019. 4. 25. 15:42


- 용어정리 -



클라이언트 :  네트워크에서 정보를 요구하는 쪽



서버 : 요구받은 정보를 제공하는 쪽의 컴퓨터



요청(request) : 클라이언트에서 서버로 정보를 요구하기 위해 보내는 메시지. GET방식과 POST방식이 있습니다.



응답(response) : HTTP에서 요구된 메시지에 대한 응답, HTML, 이미지 등의 응답이 내용이 됩니다.



동적 페이지 (동적 콘텐츠) : 콘텐츠를 동적으로 생성하는 페이지, 웹페이지들을 적절한 처리를 통해서 이미지를 배치해서 다양한 요구에 부합하도록 만들어진 페이지



WWW : 월드 와이드 웹의 줄임말. HTML로 작성된 홈페이지의 데이터는 인터넷에서 상호 링크하여 복잡한 컴퓨터 네트워크를 형성하고 있다. 마치 거미집 처럼 복잡하게 접속되어 있어서 Worldwide(세계적인) Web(거미집)이라고 불리게 되었다.



게이트 웨이 : 네트워크에서의 게이트웨이는 현재 사용자가 위치한 네트워크(정확히는 세그먼트-segment)에서 다른 네트워크(인터넷 등)로 이동하기 위해반드시 거쳐야 하는 거점을 의미한다.



세그먼트 : 메모리 관리 방식의 하나로, 프로그램이나 데이터를 세그멘트 또는 섹션이라는 가변 크기로 관리하는 방법이다.




CGI (Common GateWay Interface) : 월드 와이드 웹(www) 서버와 백 엔드 프로그램(게이트웨이) 사이에서 정보를 주고받는데 사용되는 인터페이스.CGI의 규약을 준수한다면 어떠한 언어도 사용 가능하다는 것이 CGI의 장점.



프로세스 : 프로그램이 실행중인 상태



스레드 : 컴퓨터 프로그래밍에서 어떤 프로세스 도는 프로그램의 일부분이 되는 프로세스. 은행을 예로 들면 프로세스는 은행이고, 스레드는 은행 안에 있는 각각의 창구



스크립트 언어 : 어떤 일을 수행하는 부분 코드들.



확장 CGI : 전통적인 OGI 방식의 단점들을 보완한 기술들이 확장 CGI로 발전. 확장 CGI는 매번 프로세스를 생성하는 방식이 아니고, 동일한 프로그램에 

              대해서는 하나의 프로세스를 생성한 후 여러 개의 스레드 방식으로 요청이 처리되는 방식이기 때문에 시스템의 부하를 줄일 수 있습니다.



- 확장 CGI의 종류 -


 

  ASP (Acive Server Page) : 비주얼 베이직이라는 언어에서 사용되는 문법들을 사용하여 동적 콘텐츠를 만들어 내기 위한 기술.

                                    하지만 특정 웹 서버와 OS(운영체제)에서만 동작한다는 것이 단점.


  PHP (Personal HomePage Tools, Professional Hypertext Preprocessor) : ASP와는 달리 특정 영역에서만 동작하지 않고, 작은 명령어들로 프로그래                                                                                               밍이 가능하고 편리성이 많다, 하지만 복잡한 요구들에 대한 기능 미약


  Servlet / JSP : Servlet (Server + Applet) : 확장 CGI 방식으로 Java라는 언어를 기반으로 하여 동적인 콘텐츠를 생성하는 기술 제공


  JSP (Java Server Pages) : JSP 또한 Java라는 언어를 기반으로 하여 만들어진 것이지만, ASP, PHP처럼 HTML 태그 사이 중간에 동적인 콘텐츠

                                  생성을 담당할 Java 코드가 들어가 있는 형태




  Servlet 와 JSP의 차이 : JSP는 HTML에 포함되어 프로그램이 만들어지는 것, 서블릿은 자바 프로그램의 외형에 웹 프로그래밍 요소가 포함된 것.

                               그런점으로 볼때 HTML 태그에 포함된 JSP는 브라우저에 표현이 될 부분에 유용하고,

                               서블릿은 브라우저에 표시될 필요가 없지만, 내부적으로 처리되어야 할 부분에 보다 유용하게 사용할 수 있다.



이식 : 특정한 시스템에서 개발한 소프트웨어를 다른 시스템에 설치해서 동작하게 하는 작업



서버 & 클라리언트 측 스크립트 : 서버에서 실행하는것을 서버 스크립트, 사용자의 브라우저에서 실행하는 것을 클라이언트 스크립트라고 한다.



HTML : 웹 문서를 만들기 위하여 사용하는 기본적인 웹 언어의 한 종류이다. 하이퍼텍스트를 작성하기 위해 개발되었다. 



자바빈즈 : 기본적으로 데이터를 저장하기 위한, 멤버변수와, 데이터를 컨트롤하는 setter/getter 메소드를 가지고 있는 클래스를 일컫는 말입니다.




-JSP 서버 처리과정-



:

JSP 책 학습일정

Back-End/JSP 2019. 4. 25. 13:46


JSP 책 학습일정.xlsx



:

JSP 동영상 학습 플래닛

Back-End/JSP 2019. 4. 19. 20:53

JSP 학습 일정.xlsx

 

동영상 출처

https://www.youtube.com/watch?v=p5Qli8qFcZo&list=PLJg8vnQy0Ydkfka6QE8bwlByxyjYcsvMG



: