19.04.30 JSP 페이지 액션 태그 (동영상 17강~21강)

Back-End/JSP 2019. 4. 30. 13:38

-JSP 페이지 액션 태그-



액션태그명


 액션 태그

설명       


include


<jsp:include>

다른 페이지의 실행 결과를 현재의 페이지에 포함 시킬때 사용


forward


<jsp:forward>

페이지 사이의 제어를 이동시킬 때 사용


plug-in


<jsp:plug-in>

웹 브라우저에서 자바 애플릿을 실행시킬 때 사용


useBean


<jsp:useBean>

자바빈을 JSP 페이지에서 사용할 때 사용


setProperty


<jsp:setProperty>

프로퍼티의 값을 세팅할 때 사용


getProperty


<jsp:getProperty>

프로퍼티의 값을 얻어낼 때 사용



-include 예제 및 출력 결과-


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
<%@ 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>
<body>
 
    <center>
        <table border="1" width="800">
            <!-- Top -->
            <tr height="150">
                <!-- include액션태그를 사용 각 부분별로 파일을 불러옴 -->
                <!-- jsp:param 은 원하는 페이지에 값을 넘겨줄수 있다. -->
                <td align="center" colspan="2"><jsp:include page="Top.jsp">
                        <jsp:param value="aaa" name="id" />
                    </jsp:include> <%-- <%@ include file = "Top.jsp" %> --%></td>
            </tr>
 
            <!-- Left -->
            <tr height="400">
                <td align="center" width="200"><jsp:include page="Left.jsp" />
                </td>
 
 
 
                <!-- Center -->
                <td align="center" width="600"><jsp:include page="Center.jsp" />
                </td>
            </tr>
 
            <!-- Bottom -->
            <tr height="100">
                <td align="center" colspan="2"><jsp:include page="Bottom.jsp" />
                </td>
            </tr>
 
 
 
        </table>
    </center>
    </div>
</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>
<body>
    <!-- Top -->
    <table width="800">
        <tr height="100">
            <!-- 로고 이미지 -->
            <td colspan="2" align="center" width="260"><img alt=""
                src="img/a.png" width="200" height="70"></td>
 
            <td colspan="4" align="center"><font size="10"> 낭만 캠핑</font></td>
        </tr>
 
        <tr height="50">
            <td width="110" align="center">텐트</td>
            <td width="110" align="center">의자</td>
            <td width="110" align="center">식기류</td>
            <td width="110" align="center">침낭</td>
            <td width="110" align="center">테이블</td>
            <td width="110" align="center">화롯대</td>
            <td width="110" align="center"><%=request.getParameter("id"%>
        </tr>
    </table>
</body>
</html>
cs


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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
    <table width="200">
 
        <tr height="60">
            <td width="200" align="center"><a href="#"> 스노우 피크</a></td>
            <!-- 아무것도 실행하지는 않지만 페이지 최상단으로 이동한다. -->
        <tr height="60">
            <td width="200" align="center"><a href="#"> 콜맨</a></td>
        <tr height="60">
            <td width="200" align="center"><a href="#"> 지프</a></td>
        <tr height="60">
            <td width="200" align="center"><a href="#"> 코베아</a></td>
    </table>
</body>
</html>
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ 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>
<body>
    <div style="text-align: center;">
        <table width="800">
            <tr height="100">
                <td align="center">이용약관 개인정보취급방침 이메일집단수집거부 경기도 부천시 오정구 삼정동
                    202-3 TEL: 032) 672-4501~4 FAX: 032) 672-0548 E-MAIL:
                    cs@batec.co.kr<br> 사업자등록번호: 130-81-68300 대표: 박광필
                </td>
            </tr>
        </table>
    </div>
</body>
</html>
cs






-forward 예제 및 출력 결과-


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
<%@ 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>
<body>
    <center>
        <form action="ResponseProc.jsp" method="post">
            <!-- post방식으로 자료를 보내면 암호화가 되지만 자료를 받는 jsp 파일에서 문자셋을 다시 셋팅해줘야한다. -->
            <table width="400" border="1">
 
                <tr height="50">
                    <td align="center" width="150">아이디</td>
                    <td width="250"><input type="text" name="id"></td>
                </tr>
 
                <tr height="50">
                    <td align="center" width="150">패스워드</td>
                    <td width="250"><input type="password" name="pass"></td>
                </tr>
 
                <tr height="50">
                    <td align="center" colspan="2"><input type="submit"
                        value="로그인"> &nbsp;&nbsp; <input type="reset" value="취소">
                    </td>
 
                </tr>
            </table>
        </form>
    </center>
</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
29
30
31
32
33
<%@ 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>
<body>
 
 
    <h2>이 페이지는 로그인 정보가 넘어오는 페이지 입니다.</h2>
 
    <%
        request.setCharacterEncoding("EUC-KR"); //post 방식 한글 처리
 
        String id = request.getParameter("id"); // request 객체 담겨진 사용자 정보중 id만 추출
 
        //response.sendRedirect("ResponseRedirect.jsp"); // ResponseRedirect.jsp로 자료를 넘겨준다. (하지만 request 안에 있는 값은 넘어가지 못한다.)(하지만 이렇게도 넘길수 있음 response.sendRedirect("ResponseRedirect.jsp?id="+id);)
    %>
    <!-- forward로 흐름제어를 하게 되면 request에 있는 내용이 그대로 살아서 ResponseRedirect.jsp 파일 까지 넘어가게 된다.-->
    <!-- request로 받아온 값을 변경을 하거나  유지시키고 싶을때  forward를 사용-->
    <!-- 밑에서 입력한 아이디의 값을 forward를 사용해서  'mmmm'으로 변경해 출력하고 있다.-->
    <jsp:forward page="ResponseRedirect.jsp">
        <jsp:param name="id" value="mmmm" />
    </jsp:forward>
    <!-- 흐름제어 -->
 
 
 
    <h3>
        아이디는<%=id%></h3>
    <!-- response.sendRedirect() 메소드를 사용해 자료를 넘겨주었기 때문에 실행되지 않는다. -->
 
 
</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
<%@ 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>
<body>
 
    <h2>ResponseRedirect.jsp 페이지 입니다.</h2>
 
    <%
        request.setCharacterEncoding("EUC-KR");
 
        String id = request.getParameter("id");
 
        String phone = request.getParameter("phone");
    %>
 
    <h3>
        아이디는<%=id%></h3>
    <h3>
        phone<%=phone%></h3>
 
</body>
</html>
cs



 

 

-자바빈즈-

 

여러개의 자바빈의 패키지 개념
여러개의 데이터를 하나의 클래스에 저장을 시켜놓고
그 클래스를 어레이리스트,배열 등에 저장해서 쓸때 자바빈즈라는 말을 쓴다.
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
<%@ 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>
<body>
    <center>
        <h2>회원 가입</h2>
        <form action="MemberJoinProc.jsp" method="post">
            <table width="500" border="1">
                <tr height="50">
                    <td width="150" align="center">아이디</td>
                    <td width="350" align="center"><input type="text" name="id"
                        size="40" placeholder="id를 넣으세요"></td>
                </tr>
 
                <tr height="50">
                    <td width="150" align="center">패스워드</td>
                    <td width="350" align="center"><input type="password"
                        name="pass1" size="40" placeholder="비밀번호는 영문과 숫자만 넣어주세요">
                    </td>
                </tr>
 
                <tr height="50">
                    <td width="150" align="center">이메일</td>
                    <td width="350" align="center"><input type="email"
                        name="email" size="40"></td>
                </tr>
 
                <tr height="50">
                    <td width="150" align="center">전화번호</td>
                    <td width="350" align="center"><input type="tel" name="tel"
                        size="40"></td>
                </tr>
 
                <tr height="50">
                    <td width="150" align="center">주소</td>
                    <td width="350" align="center"><input type="text"
                        name="address" size="40"></td>
                </tr>
 
                <tr height="50">
                    <td align="center" colspan="2"><input type="submit"
                        value="회원가입"></td>
            </table>
        </form>
    </center>
</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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<%@ 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>
<body>
 
    <center>
        <h2>회원 정보 보기</h2>
        <%
            request.setCharacterEncoding("EUC-KR");
        %>
 
        <!-- request로 넘어온 데이터를 자바 빈즈랑 맵핑 시켜주는 useBean -->
        <!-- 여러개의 자료를 저장해놨다가 한번에 출력할수 있기 때문에 사용한다. -->
        <jsp:useBean id="mbean" class="bean.MemberBean">
            <!-- 객체 생성 MemberBean mbean = new MemberBean() -->
            <!-- Jsp 내용을  자바빈 클래스(MemberBean 의미)에 데이터를 맵핑(넣어줌)-->
            <jsp:setProperty name="mbean" property="*" />
            <!-- property 의 값을 *을 주면 모든 데이터를 맵핑시킬수있다. -->
 
        </jsp:useBean>
 
        <h2>
            당신의 아이디는
            <jsp:getProperty property="id" name="mbean" /></h2>
        <h2>
            당신의 패스워드는
            <jsp:getProperty property="pass1" name="mbean" /></h2>
        <h2>
            당신의 이메일은
            <jsp:getProperty property="email" name="mbean" /></h2>
 
        <h2>
            당신의 전화번호
            <%=mbean.getTel()%>
        </h2>
        <!-- 위쪽에서 이미 mbean의 객체를 생성해 놓았기 때문에 메소드를 호출할수 있다. -->
 
 
    </center>
</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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package bean;
 
public class MemberBean {
 
    private String id; // jsp파일에 있는 데이터와 1대1로 매핑시켜줘야 된다. 그래야 자료가 넘어오기 때문
    private String pass1;
    private String email;
    private String tel;
    private String address;
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public String getPass1() {
        return pass1;
    }
 
    public void setPass1(String pass1) {
        this.pass1 = pass1;
    }
 
    public String getEmail() {
        return email;
    }
 
    public void setEmail(String email) {
        this.email = email;
    }
 
    public String getTel() {
        return tel;
    }
 
    public void setTel(String tel) {
        this.tel = tel;
    }
 
    public String getAddress() {
        return address;
    }
 
    public void setAddress(String address) {
        this.address = address;
    }
 
}
 
cs

 

 

:

19.04.29 페이지 내장객체, 페이지 디렉티브 (동영상 14강~16강)

Back-End/JSP 2019. 4. 29. 23:48

-response-

웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체

 

 


-response.sendRedirect()-

 

어떤 결과를 처리해서 그 결과를 만족하면 다른페이지를 보여준다.

 

 

 

-예제 및 출력 결과-

 

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=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
    <center>
        <h2>로그인 페이지</h2>
 
        <form action="ResponseLoginProc.jsp" method="post">
            <table width="400" border="1">
                <tr height="60">
                    <td align="center" width="150">아이디</td>
                    <td align="Left" width="250"><input type="text" name="id">
                    </td>
                </tr>
                <tr height="60">
                    <td align="center" width="150">패스워드</td>
                    <td align="Left" width="250"><input type="password"
                        name="pass"></td>
                </tr>
                <tr height="60">
                    <td colspan="2" align="center"><input type="submit" name="전송">
                    </td>
                </tr>
            </table>
        </form>
    </center>
</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
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>
<body>
    <% 
        request.setCharacterEncoding("EUC-KR");
    //임의적으로 ID와 PASS를 설정
    String dbid = "aaaa";
    String dbpass = "1234";
    
    
    //사용자로부터 넘어온 데이터를 입력 받아줌
    String id = request.getParameter("id");
    String pass = request.getParameter("pass");
    
    if(dbid.equals(id) && dbpass.equals(pass))
    {
     //아이디와 패스워드가 일치 하니까 메인 페이지를 보여주어야 합니다.
     response.sendRedirect("ResponseMain.jsp?id="+id);//넘어가는 페이지에 변수를 파라미터로 넘겨줄수있다.
    }
    else
    {
        %>
    <script>
        alert("아이디와 패스워드가 일치 하지 않습니다.");
        history.go(-1);
        </script>
    <%         
    }
    
%>
 
</body>
</html>
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ 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>
<body>
 
    <%
        request.setCharacterEncoding("EUC-KR"); //id값을 받아서 출력해야하므로 한글 문자셋을 설정한다.
    %>
    <h2><%=request.getParameter("id")%>님 반갑습니다.
    </h2>
 
 
</body>
</html>
cs

 

 

 

 

-out-

jsp 페이지에서 생성된 결과를 브라우저에 출력할때 사용하는 객체

html에서 출력시 스크립트릿 <%= %>사용

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ 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>
<title>Insert title here</title>
</head>
<body>
 
    <%
        String name = "알리미 어플";
    %>
    스크립트로 표현시
    <%=name%>
    이 화면에 출력
    <p>
 
        <%
            out.println(name + "이 화면에 출력");
        %>
    
</body>
</html>
cs

 

 

 

-session-

 

세션을 이용하여 데이터를 유지 및 전달할수 있다

자세한건 나중에 다룬다.

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ 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>
<title>Insert title here</title>
</head>
<body>
 
    <h2>세션 연습</h2>
 
    <% 
    String name = "shin";
    //세션을 이용하여 데이터를 유지 및 전달할수 있다
    session.setAttribute("name1", name);//키를 기준으로 값을 기억한다. 오브젝트 타입이라 어떤타입이 와도 된다.
    //세션 유지 시간
    session.setMaxInactiveInterval(10);  //10초가 세션의 유지시간
    %>
    <a href="SessionName.jsp?name=<%=name %>">세션 네임페이지로 이동</a>
 
 
</body>
</html>
cs

 

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"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
 
    <h2>세션 네임 페이지 입니다.</h2>
    <%
        String name = (String)session.getAttribute("name1"); //오브젝트 타입이기 때문에 String 타입으로 타입변환을 한다.
    %>
 
    <%=name %>님 반갑습니다.
    <!-- 파라미터로 받을시에는 이 페이지에서 한번 읽은 값을 다른페이지에서 읽을수 없다 (다시 파라미터로 넘기지 않는한) -->
</body>
</html>
cs

 

 

 

 


-application-

 

웹 어플리케이션에 있는 자료를 전부 공유할 수 있게 해준다.




-Include 디렉티브-


여러페이지를 포함시켜서 한 페이지로 병합하는 것
여러개의 페이지가 각각 컴파일 되는 것이 아니라
한 페이지로 인식 및 변환 후 컴파일 한다.



-예제 및 출력 결과-


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
<%@ 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>
    <center>
        <table width="600" border="1">
            <!-- Top 부분 -->
            <tr height="150">
                <td width="600" align="center"><%@ include file="Top.jsp"%>
                    <!-- Top.jsp 파일을 페이지 윗부분에 출력되도록 한다. --></td>
            </tr>
 
            <!-- Center 부분 -->
            <tr height="400">
                <td width="600" align="center"><img alt="" src="img/a.jpg"
                    width="400" height="300"> <!-- 이미지 파일을 출력시키고 크기를 정한다. --></td>
            </tr>
 
            <!-- Bottom -->
            <tr height="100">
                <td width="600" align="center"><%@ include file="Bottom.jsp"%>
                    <!-- Bottom.jsp 파일을 페이지 아랫부분에 출력되도록 한다. --></td>
            </tr>
        </table>
    </center>
</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
29
30
<%@ 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>
    <div style="text-align: center;">
        <!-- 가운데 정렬 -->
        <table width="600">
            <tr height="100">
                <td aglin="center" colspan="6"><font size="15">Camera 정보
                        사이트</font></td>
            </tr>
            <tr height="50">
                <td align="center">캐논</td>
                <td align="center">니콘</td>
                <td align="center">삼성</td>
                <td align="center">소니</td>
                <td align="center">올림푸스</td>
                <td align="center">LG</td>
            </tr>
        </table>
 
    </div>
    <!-- 가운데 정렬 닫음-->
</body>
</html>
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
    <div style="text-align: center;">
        <table width="600">
            <tr height="100">
                <td aglin="center">회사 소개 : 서울 특별시 강서구 발산동 대주 @ 102동 <br>
                    전화번호 : 02-356-8989
                </td>
            </tr>
        </table>
    </div>
</body>
</html>
cs



'Back-End > JSP' 카테고리의 다른 글

a tag href 속성 (#, #none, 링크) 특징  (0) 2019.04.30
19.04.30 JSP 페이지 액션 태그 (동영상 17강~21강)  (0) 2019.04.30
19.04.29 JSP의 내장 객체  (0) 2019.04.29
19.04.28 액션 태그  (0) 2019.04.28
19.04.28 JSP의 지시자  (0) 2019.04.28
:

19.04.29 데이터베이스와 아키텍처 구성

Back-End/Data Base 2019. 4. 29. 22:35

-아키텍처-

 

시스템을 만들기 위한 물리 레벨의 조합.

하드웨어와 미들웨어의 구성을 가리킨다.

 

 

 

-아키텍처의 역사-

 

1. Stand-alone : 데이터베이스만으로 시스템이 성립하는 가장 간단한 방법

2. 클라이언트 / 서버 : 클라이언트와 서버로 계층을 분리하여 상호 간에 네트워크로 접속하는 서버

3. Web 3계층 : 클라이언트 / 서버를 더욱더 발전시킨 것

 

Stand-alone

 특징

장점 

단점 

 문자 그대로 데이터베이스가 동작하는 머신이

LAN이나 인터넷 등의 네트워크에 접속하지

않고 독립되어 동작하는 구성

 구축이 매우 간단해서 소규모 작업을 빨리할수있다.

 

보안이 매우 높다.

물리적으로 떨어진 장소에서 접근할 수 없다.

 

복수의 사용자가 동시에 작업할 수 없다.

 

가용성이 낮다.

 

확장성이 부족하다. 

 

 

 클라이언트 / 서버

 특징

 장점

단점 

 데이터베이스를 네트워크에 연결한 것

 먼 곳에서도 이용할 수 있다.

 

복수의 사용자가 동시에 작업할 수 있어서 효율적

 인터넷 -> 데이터베이스 (보안위험)

 

불특정 다수의 사용으로 인한 관리비용 증가

 

 

 

 Web 3계층

 특징

 장점

단점 

 시스템을 3가지 계층의 조합으로 생각하는 모델

(웹 서버, 애플리케이션, 데이터베이스)

 보안을 높일수 있다.

 

관리 비용을 낮추는 구성이 될 수 있다.

 가용성이 낮다.

 

확장성이 부족하다.

 

 

 

-가용성을 높이는 2가지 전략-

 

 

  심장전략(고품질-소수전략)

 

  시스템을 구성하는 각 컴포넌트의 신뢰성을 높여 장애 발생률을 낮게 억제해서 가용성을 높인다. (소수정예 노선)

 

  신장전략(저품질-다수전략)

 

  시스템을 구성하는 각 컴포넌트의 신뢰성을 계속해서 높이기보다는 '사물은 언젠가 망가진다' 란 체념을 전제로 여분을 준비해둔다.

  이를 철저히 대비하는 것을 '물량작전'이라고 부른다.

 

 

 

 

-클러스터란?-

 

신장전략처럼 동일한 기능의 컴포넌트를 병렬화하는 것을 '클러스터링' 이라고 부릅니다.

'클러스터'는 사물이나 사람의 집합을 가리키는 말로, 포도 등의 '송이'란 의미도 있습니다.

이 의미처럼 시스템 세계에서는 '동일한 기능의 컴포넌트를 복수 개 준비해 한 개의 기능을 실현한다' 는 의미로 사용합니다.

또한, 클러스터 구성으로 시스템의 가동률을 높이는 것을 '여유도 를 확보한다' 또는 '다중화'라고 지칭합니다.

 

 

 

-단일 장애점-

 

다중화되어 있지 않아서 시스템 전체 서비스의 계속성에 영향을 주는 컴포넌트를 '단일 장애점'이라고 합니다.

또한 단일 장에점의 신뢰성이 시스템 전체의 가용성을 결정합니다.

 

 

 

-DB와 다른 서버의 차이-

 

데이터베이스는 데이터를 장기간 보존하는 매체가 필요합니다.

이것이 기본적으로 데이터를 일시적으로 처리할 뿐인 웹 서버나 애플리케이션 서버와 다른 점 입니다.

웹 서버나 애플리케이션 서버는 한창 처리 중일 때는 일시적으로 데이터를 보존하기도 하지만, 처리가 끝난 후까지 계속 데이터를

보존할 필요는 없습니다.

하지만 데이터베이스는 대량의 데이터를 영구적으로 보존해야 하고 그에 따른 성능도 요구되기 때문에

데이터를 보존하는 매체에 필요한 요건이 높습니다.

 

 

 

-기본적인 다중화-

 

Active-Active : 클러스터를 구성하는 컴포넌트를 동시에 가동한다. 시스템 다운 시간이 짧다. 성능이 좋다.

 

Active-Standby : 클러스터를 구성하는 컴포넌트 중 실제 가동하는 것은 Active, 남은 것은 대기하고 있는다.

ㄴCold-Standby : 평소에는 Standby DB가 작동하지 않다가 Active DB가 다운된 시점에 작동하는 구성이다.

ㄴHot-Standby : 평소에도 Standby DB가 작동하는 구성이다.

 

 

 

-리플리케이션-

 

Active-Active와 Active-Standby 클러스터 구성에서는 서버 부분은 다중화할 수 있어도 저장소 부분은 다중화할 수 없어서 데이터를 다중화하지

않는 공통적인 단점이 있습니다.

즉, 저장소가 부서질 경우에는 데이터를 잃게 됩니다.

물론 저장소도 보통은 내부 컴포넌트가 다중화되어 있지만, 데이터 센터 전체가 지진으로 붕괴하거나 화재가 난다면 끝입니다.

이런 상황에 대응하기 위한 클러스터 구성이 '리플리케이션' 입니다.

이는 DB서버와 저장소 세트를 복수로 준비하는 것을 말합니다.

 

 

-성능을 추구하기 위한 다중화 -

 

 Shared Disk

Shared Nothing 

 복수의 서버가 1대의 디스크를 사용하는 구성

네트워크 이외의 자원을 모두 분리(공유하지 않는) 방식

 

서버와 저장소의 세트를 늘리면 병렬처리 때문에 성능이 향상

 

비용 대비 성능이 좋다.

 

 

 

 

 

:

HTML5 버전 이상 가운데 정렬 사용하기

Front-End/HTML 2019. 4. 29. 13:39

HTML5버전 이상부터는 <center>명령어를 사용하게 되면 제한적으로밖에 사용할 수가 없기 때문에 다음과 같은 style명령어로 

대체하도록 한다.

 

 
  <div style="text-align:center;">


  가운데 정렬할 문자


  </div>

아래 책은 제가 공부할때 활용했던 책으로 추천드리는 책이니 한번씩 읽어보시는것을 추천드립니다!! ㅎㅎ

토비의 스프링 3.1 세트:스프링의 이해와 원리 + 스프링의 기술과, 에이콘출판

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

 

'Front-End > HTML' 카테고리의 다른 글

두개의 영역(그림, 글자, 광고 등)을 나란히 놓기 - float:left/right  (4) 2019.10.01
HTML 문법정리  (0) 2019.04.28
HTML 테이블 짜보기  (0) 2019.04.22
HTML 실습 주소  (0) 2019.04.22
:

19.04.29 JSP의 내장 객체

Back-End/JSP 2019. 4. 29. 13:36

-내부 객체란?-


내부 객체란 jsp 페이지를 작성할 때 특별한 기능을 제공하는 JSP 컨테이너가
제공하는 특별한 객체(변수)를 말합니다.
이러한 객체는 지금까지 배운 JSP 문법 요소들과 함께 동작해 사용자의 요청을
적절히 처리하여 동적으로 HTML을 생성하게 됩니다.
내부객체의 정확한 명칭은 JSP 규약에서는 implicit object 입니다.
내부 객체는 특정한 자바 클래스 또는 인터페이스의 형태를 가지고 있습니다.




-JSP 컨테이너가 제공하는 내부 객체-



  

  1.   jsp 페이지 입출력 관련 내부 객체


  2.   jsp 페이지 외부 환경 정보 제공 내부 객체


  3.   jsp 페이지 서블릿 관련 내부 객체


  4.   jsp 페이지 예외 관련 기본 객체





-jsp 페이지의 내부 객체-

내부 객체

 

Type


설명 

 request


javax.servlet.http.HttpServletRequest


 파라미터를 포함한 요청을 담고 있는 객체


response


javax.servlet.http.HttpServletResponse 

요청에 대한 응답을 담고 있는 객체 


out


javax.servlet.jsp.JspWriter 

페이지 내용을 담고 있는 출력 스트림 객체 

 

session


javax.servlet.http.HttpSession 

세션 정보를 담고 있는 객체

 

application


javax.servlet.ServletContext 

어플리케이션 Context의 모든 페이지가 공유할 데이터를 담고 있는 객체 

 

pageContext


javax.servlet.jsp.PageContext 

페이지 실행에 필요한 Context 정보를 담고 있는 객체 

  

page


javax.servlet.jsp.HttpJspPage 

jsp 페이지의 서블릿 객체 

 

contig


javax.servlet.ServletConfig 

jsp 페이지의 서블릿 설정 데이터 초기화 정보 객체 

 

exctption


javax.lang.Throwable 

jsp 페이지의 서블릿 실행 시 처리하지 못한 예외 객체 


  

  스크립트 요소에서 내부 객체와 동일한 변수 명으로 선언할 수가 없습니다.

  만약 9개의 내부 객체 변수명과 동일한 이름으로 스크립트 요소에서 선언을 하였다면

  String page = null;

  아래와 같은 에러가 발생이 됩니다.

  Variable 'page' is already defined in this method

  (이 메소드에는 이미 page 변수가 선언이 되었습니다.)

  선언문에서는 동일한 이름으로 선언할 수는 있지만 권장할 만한 방법은 아닙니다.





-내부 객체의 속성을 저장하고 읽어내는 공통 메소드-


메소드의 파라미터 값으로 value는 Object 타입이므로 객체의 모든 타입을 저장할 수 있으며 key는 String 타입의 객체 형태를 가지고 있습니다.


 

메소드


설명 


 setAttribute(key, value)


주어진 key(이름 등)에 속성값을 연결합니다.


getAttributeNames( )


모든 속성의 이름을 얻어냅니다.

 

getAttribute(key)


주어진 key에 연결된 속성값을 얻어냅니다.

 

removeAttribute(key)


주어진 key에 연결된 속성값을 제거합니다.




-request, response, out 내부 객체-


jsp 페이지 입출력과 관련한 내부 객체에 해당합니다.

클라이언트로부터 jsp 페이지의 호출에 의해서 전달되는 데이터의 요청과 응답 그리고 출력의 역할을 담당한다.




-request-


브라우저에서 jsp 페이지로 전달되는 데이터의 묶음으로 HTTP 헤더와 HTTP 바디로 구성되어 있습니다.

JSP 컨테이너는 요청된 HTTP 메시지를 통해 HttpServletRequest 객체 타입의 request 객체 명으로 사용합니다.


메소드


 설명

 

String getParameter(name)


 name에 할당된 값을 반환하며 지정된 파라미터 값이 없으면 null 값을 반환합니다.

 

String[] getParameterValues(name)


 name의 모든 값을 String 배열로 반환합니다.

 

Enumeration getParameterName( )

 

 요청에 사용된 모든 파라미터 이름을 java.util.Enumeration 타입으로 반환합니다.

 

void setCharaterEncoding(env)


 post 방식으로 요청된 문자열의 character encoding을 설정합니다.




-예제 및 출력 결과-


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />
</head>
<div style="text-align: center;">
    <!-- 가운데 정렬 시킨다. -->
    <h1>Request Example1</h1>
    <form method="post" action="request1.jsp">
        <!-- request1.jsp파일로 입력받은 자료를 보낸다(post)형식으로 -->
        성명 : <input name="name"><br /> 학번 : <input name="studentNum"><br />
        성별 : 남자<input type="radio" name="gender" value="man" checked>
        여자<input type="radio" name="gender" value="woman"><br /> 전공 :
        <select name="major">
            <option selected value="국문학과">국문학과</option>
            <option selected value="영문학과">영문학과</option>
            <option selected value="수학과">수학과</option>
            <option selected value="정치학과">정치학과</option>
            <option selected value="체육학과">체육학과</option>
        </select><br /> <input type="submit" value="보내기">
    </form>
</div>
 
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
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<div style="text-align: center;">
    <%
        request.setCharacterEncoding("EUC-KR"); //받아들이는 문자의 문자셋을 EUC-KR(한글안깨짐)으로 처리
        String name = request.getParameter("name");//파라미터로 값을 받아들인다.
        String studentNum = request.getParameter("studentNum");
        //int studentNum = Integer.parseInt(request.getParameter("studentNum"));
        String gender = request.getParameter("gender");
        String major = request.getParameter("major");
 
        if (gender.equals("man")) //equals()메소드를 사용해 받아들인 문자열과 비교해서 gender 값을 리턴한다.
        {
            gender = "남자";
        } else {
            gender = "여자";
        }
    %>
    <h1>Request Example1</h1>
    성명 :
    <%=name%><p />
    학번 :
    <%=studentNum%><p />
    성별 :
    <%=gender%><p />
    학과 :
    <%=major%><p />
</div>
cs




-URL과 URI의 차이점-


URL(Uniform Resource Locator)은 인터넷에서 접근 가능한 자원의 주소를 일관되게 표현할수 있는 형식을 말하고,

URI(Uniform Resource Identifier)은 존재하는 자원을 식별하기 위한 일반적인 식별자를 규정하는 것입니다.



메소드


 설명


String getMethod()


요청에 사용된 요청 방식 (GET, POST, PUT)을 반환합니다. 


String getRequestURI()


요청에 사용된 URL로부터 URI를 반환합니다. 


String getQueryString() 


요청에 사용된 Query 문장을 반환합니다. 


String getRemoteHost()


클라이언트 호스트 이름을 반환합니다. 


String getRemoteAddr() 


클라이언트의 주소를 반환합니다. 


String getProtocol() 


사용중인 프로토콜을 반환합니다. 


String getServerName() 


서버의 도메인 이름을 반환합니다. 


int getServerPort() 


서버의 주소를 반환합니다. 


String getHeader(name) 


HTTP 요청 헤더에 지정된 name의 값을 반환합니다. 




-response-


객체는 요청을 시도한 클라이언트로 전송할 응답을 나타내는 데이터의 묶음입니다.

JSP 컨테이너는 요청된 HTTP 메시지를 통해 HttpServletResponse 객체 타입으로 사용되고 response 객체명으로 사용합니다.


메소드


설명 


void setHeader(name, value) 


응답에 포함될 Header를 설정합니다.


void setContentType(type)


출력되는 페이지의 contentType을 설정합니다.


String getCharacterEncoding( )


요청에 사용된 Query 문장을 반환합니다.


void sendRedirect(url)


지정된 URL로 요청을 재전송 합니다.





  Pragma와 Cache-Control


  브라우저나 프록시 서버로 하여금 요청 시에 cache된 문서 처리를 위한 헤더입니다.

  HTTP 1.0에서는 Pragma이고,  HTTP 1.1에서는 Cache-Control 헤더에 value 값을 지정할 수 있습니다.






-예제 및 출력 결과-


1
2
3
4
<h1>Response Example1</h1>
<%
    response.sendRedirect("response1_1.jsp"); //response1_1.jsp로 요청을 재전송 한다.
%>
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%
    response.setHeader("Pragma""no-cache"); //응답에 포함될 머리말(이름,값)을 설정한다.
    if (request.getProtocol().equals("HTTP/1.1")) //사용중인 프로토콜과 HTTP/1.1의 값이 같으면
    {
        response.setHeader("Cache-Control""no-store");
    }
%>
<h1>Response Example</h1>
http://localhost/myapp/ch07/response1.jsp가
<p />
http://localhost/myapp/ch07/response1_1.jsp로 변경이 되었습니다.
 
cs




-out-


jsp 페이지의 결과를 클라잉이언트에 전송해 주는 출력력 스트림을 나타내며 jsp 페이지가 클라이언트에게 보내는 모든 정보는 out 객체를 

통해서 전달됩니다.  out 객체는 java.io.Writer 클래스를 상속 받은 javax.servlet.jsp.JspWriter 클래스 타입의 객체이며,

out 객체명으로 사용합니다.



  <% 

   String teamName = "KOREA";

    out.println(teamName);

    //브라우저에 출력을 위한 out 객체가 제공하는 println 메소드

  %>





메소드


 설명


 boolean isAutoFlush( )


 출력 버퍼가 다 채워져 자동으로 flush 했을 경우는 true 반환, 그렇지 않은 경우는 false를 반환합니다.


 int getBufferSize( )


출력 버퍼의 전체 크기를 바이트 단위로 반환합니다. 


 int getRemaining( )


출력 버퍼의 남은 양을 바이트 단위로 반환합니다. 

 

void clearBuffer( )


현재 출력 버퍼에 저장된 내용을 취소합니다. 


 String println(string)


string을 브라우저에 출력합니다. 

 

void flush( )


현재 출력 버퍼의 내용을 flush하여 클라이언트로 전송합니다. 

 

void close( )


출력 버퍼의 내용을 flush하고 스트림을 닫습니다. 



 

  <%=코드%> d와 out.println(코드)의 차이점?


  jsp 페이지가 서블릿으로 변환될 때 <%=코드%> 부분은 out.println(코드)로 변환이 되어 실행되므로 <%=코드%>와 out.println(코드)는

  둘 다 브라우저에 출력시키는 똑같은 역할을 하는 것입니다. 다만 jsp 페이지에서 개발자들에게 편의성을 제공하기 위해서 표현식이

  만들어진 것입니다.





 

  버퍼(buffer)란?


  동작 속도가 크게 다른 두 장치 간의 인터페이스가 서로의 속도차를 조정하기 위해 이용되는 일시적인 기억 영역을 말합니다.

  버퍼는 각 장치나 프로세스가 상대방에 의해 정체되지 않고 잘 동작할 수 있도록 해주며 효율적인 버퍼를 만들기 위해서는, 버퍼의 크기를 

  상황에 맞게 잘 설계하고, 데이터를 버퍼로 집어넣거나 빼내기 쉬쉽도록 개발하는 것이 중요합니다.





-session-


클라이언트 요청에 대한 context 정보의 세션과 관련된 정보(데이터)를 저장하고 관리하는 내부 객체입니다.

내부 객체는 jsp 페이지 내의 스크립트릿에서 묵시적으로 사용할 수가 있지만 session 객체는 page 지시자의 

session 속성이 true(기본값)으로 설정되어 있어야 사용할 수가 있습니다.

그러나 jsp 페이지중에 session 객체가 필요 없는 페이지라면 session속성을 false로 설정하는 것이 자원

활용에 조금이라도 도움이 됩니다.

다음 표는 세션 관리를 위해 제공되는 session 내부 객체의 메소드 입니다.



  세션 관리란?


  웹 브라우저에서 서버가 클라이언트의 정보를 저장하고, 요청을 시도한 특정 클라이언트를 다른 클라이언트와 구별하여,

  각각의 클라이언트에 대한 정보를 지속적으로 관리하는 상태



메소드


설명


String getld()


해당 세션의 세션 ID를 반환합니다.


long getCreationTime()


세션의 생성된 시간을 반환합니다.


long getLastAccessedTime()


클라이언트 요청이 마지막으로 시도된 시간을 반환합니다.


void setMaxlnactiveInterval(time)


세션을 유지할 시간을 초단위로 설정합니다. 


int getMaxlnactiveInterval()


string을 브라우저에 출력합니다.


boolean isNew()


클라이언트 세션 ID를 할당하지 않은 경우 true 값을 반환합니다. 


void invalidate()


해당 세션을 종료 시킵니다. 



-예제 및 출력결과-

1
2
3
4
5
6
7
8
9
10
11
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />
</head>
<h1>Session Example1</h1>
<form method="post" action="session1.jsp">
    아이디 : <input name="id">
    <p />
    비밀번호 : <input type="password" name="pwd">
    <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
20
21
22
23
24
25
26
27
28
29
30
31
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    session="true"%>
 
<%
    request.setCharacterEncoding("EUC-KR");
 
    String id = request.getParameter("id");
    String pwd = request.getParameter("pwd");
    
    session.setAttribute("idKey",id); //입력을 받은 id값을 idkey로 session객체에 연결시도한다.
    session.setMaxInactiveInterval(60*5); //session 객체의 연결 시간을 5(60*5)분으로 설정하고 있다.
%>
<h1>Session Example1</h1>
<form method="post" action="session1_1.jsp">
    1. 가장 좋아하는 계절은?<br /> <input type="radio" name="season" value="봄">
    <input type="radio" name="season" value="여름">여름 <input
        type="radio" name="season" value="가을">가을 <input type="radio"
        name="season" value="겨울">겨울
    <p />
 
    2. 가장 좋아하는 과일은?<br /> <input type="radio" name="fruit"
        value="watermelon"> 수박 <input type="radio" name="fruit"
        value="melon"> 멜론 <input type="radio" name="fruit"
        value="apple"> 사과 <input type="radio" name="fruit"
        value="orange"> 오렌지
    <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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%
    request.setCharacterEncoding("EUC-KR");
    String season = request.getParameter("season");
    String fruit = request.getParameter("fruit");
    String id = (String) session.getAttribute("idKey"); //session1.jsp 파일에 있는 객체들을 가져오고 있다.
 
    String sessionId = session.getId(); //세션의 Id를 얻어서 반환한다.
 
    int intervalTime = session.getMaxInactiveInterval(); //setMaxInactiveInterval(time)로 지정된 값을 반환합니다.
 
    if (id != null) {
%>
<h1>Session Example1</h1>
<b><%=id%></b>
님이 좋아하시는 계절과 과일은
<p />
<b><%=season%></b>
<b><%=fruit%></b>
입니다.
<p />
세션 ID :
<%=sessionId%><p />
세션 유지 시간 :
<%=intervalTime%>
<p />
<%
    session.invalidate();
    } else {
        out.println("세션의 시간이 경과를 하였거나 다른 이유로 연결을 할 수가 없습니다.");
        out.println("session의 시간 경과 또는 다른 이유로 session 객체의 연결이 종료 되었습니다.");
    }
%>
cs






-application-


application 객체는 서블릿 또는 어플리케이션 외부 환경 정보를 나타내는 내부 객체 입니다.

application 객체를 통해서 어플리케이션이 실행되는 서버의 정보와 서버 측 자원에 대한 정보를 얻어내거나

어플리케이션이 실행하고 있는 동안에 발생할 수 있는 이벤트 로그와 관련된 기능들을 제공합니다.

application 객체는 javax.servlet.ServletContext 객체 타입으로 제공을 합니다.



메소드


설명


String getServerInfo( )


서블릿 컨테이너의 이름과 버전을 반환합니다.


String getMimeType(fileName)


지정한 파일의 MIME 타입을 반환합니다.


String getRealPath(url)


URL를 로컬 파일 시스템으로 변경하여 반환합니다.


void log(message)


로그 파일에 message를 기록합니다.




-pageContext-


현재 jsp 페이지의 Context를 나타내며, pageContext 내부 객체를 통해서 다른 내부 객체에 접근할 수가 있습니다.

예를 들어 out 내부 객체를 구하고자 할 경우의 코드는 다음과 같습니다.


 

  JspWriter pageOut = pageContext.getOut();





-page 내부 객체-


jsp 페이지 그 자체를 나타내는 객체입니다. 그래서 jsp 페이지 내에서 page 객체는 this 키워드로 자기 자신을

참조할 수가 있습니다. 그리고 page 객체는 javax.servlet.jsp.HttpJspPage 클래스 타입으로 제공되는 JSP 내부 객체입니다.




-예제 및 출력 결과-


1
2
3
4
5
6
7
<%@ page info="JSPStudy.co.kr" contentType="text/html; charset=EUC-KR"%>
<%
    String pageInfo = this.getServletInfo(); //page 지시자의 info 속성을 반환한다.
%>
<h1>Page Example1</h1>
현재 페이지의 info값 :
<%=pageInfo%>
cs



-config-


config 객체는 javax.servlet.ServletConfig 클래스 타입의 내부 객체 입니다.

ServletConfig는 Servlet에게 Servlet를 초기화하는 동안 참조해야 할 정보를 전해 주는 역할을 합니다.

다시 설명하면 서블릿이 초기화 될 때 참조해야 할 다른 여러 정보를 가지고 있다가 전해 준다고 생각합니다.




-exception 내부 객체-


jsp 페이지에서 발생한 예외를 처리하는 페이지를 지정한 경우 에러 페이지에 전달되는 예외 객체입니다.

page 지시자의 isErrorPage 속성을 "true" 로 지정한 jsp 페이지에서만 사용 가능한 내부 객체 입니다.

그리고 exception 객체는 java.lang.Throwable 클래스 타입으로 제공되는 JSP 내부 객체 입니다.




메소드

 

설명


String getMessage( )


에러 메시지를 반환합니다.


String toString( )


에러 실체의 클래스명과 에러 메시지를를 반환합니다.



-예제 및 출력결과-


1
2
3
4
5
6
7
8
9
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    errorPage="exception2.jsp"%>
<%
    int one = 1;
    int zero = 0;
%>
<h1>Exception Example1</h1>
one / zero =
<%=one/zero%><p /> //0을 1로 나누었기 때문에 예외가 발생Colored by Color Scripter
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    isErrorPage="true"%>
 
<%
    String message = exception.getMessage();
    String objectMessage = exception.toString(); //예외가 발생한 페이지의 예외 메시지를 반환하였습니다.
                                                    //예외가 발생한 페이지의 에러 실체의 클래스명과 예외 메시지를 반환하였습니다.
%>
<h1>Exception Example1</h1>
에러 메시지 :
<b><%=message%></b>
<p />
에러 실체의 클래스명과 에러 메시지 :
<b><%=objectMessage%></b>
<p />
 
cs



:

HTML 파일 한글깨짐 해결법

Back-End/Problems 2019. 4. 29. 09:49
1
2
3
4
5
6
7
8
9
10
11
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />
</head>
<h1>Forward Tag Example</h1>
<form method=post action="forwardTag1_1.jsp">
    아이디 : <input name="id">
    <p />
    패스워드 : 패스워드 : <input type="password" name="pwd">
    <p />
    <input type="submit" value="보내기">
</form>
cs


책 162페이지.


<head> 부분에 

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" /> (문자셋을 변환하는)코드 추가하면 해결됨 출처

https://blog.naver.com/vnemftnsska2/221497907063

'Back-End > Problems' 카테고리의 다른 글

톰캣과 오라클 서버 충돌시  (0) 2019.05.01
오라클 삭제 방법  (0) 2019.05.01
JAVA 파일 이클립스 없이 컴파일 하기(class파일 만들기)  (0) 2019.04.30
액션 태그 주석  (0) 2019.04.30
HTTP 500오류 해결방법  (0) 2019.04.28
:

SQL 예제

Back-End/Data Base 2019. 4. 29. 00:11

 

 

테이블 2개를 생성해서 JOIN검색 해보기

 

 

 

1. 학생정보 테이블 생성

 

 

 

 

 

2. 학과인원 테이블 생성

 

 

 

 

 

 

3. [학생정보] 테이블과 [학과인원] 테이블에서 학과명이 같은 튜플을 JOIN 하여 학과, 학생수를 검색

 

:

19.04.28 액션 태그

Back-End/JSP 2019. 4. 28. 21:19

- 액션 태그 -

 

어떤 동작 또는 액션이 일어나는 시점에서 실행이 일어나는 JSP 태그입니다.

또한, 브라우저에서 자바 애플릿을 실행시킬수 있고, 자바 빈즈의 기능을 사용할 수 있도록 합니다.

 

자바 애플릿 : 자바 언어로 작성된 소프트웨어. 애플릿이라고도 한다.

자바 빈즈 : 자바빈즈(JavaBeans)는 자바로 작성된 소프트웨어 컴포넌트이다.

 

 

 

-액션 태그의 종류-

 

 

  1.include

 

  2.forward

 

  3.plug-in

 

  4.useBean

 

  5.setProperty

 

  6.getProperty

 

 

 

-include 액션 태그-

 

include 액션 태그는 include 지시자와 함께 다른 페이지를 현재 페이지에 포함시킬 수 있는 기능을 가지고 있습니다.

그러나 include 지시자는 단순하게 소스의 내용이 텍스트로 포함이 되지만 include 액션 태그는 포함시킬 페이지의 처리 결과를

포함시킨다는 점이 다릅니다.

 

 

  <jsp:include page="로컬URL" flush="true"/>

 

 

 

flush 속성은 포함될 페이지로 이동할 때 현재 페이지가 지금까지 출력 버퍼에 저장한 결과를 어떻게 처리할 것인가를 결정합니다.

flush 속성값을 true로 지정하면 포함할 페이지의 내용을 삽입하기 이전에 현재 페이지가 지금까지 버퍼에 저장한 내용을 출력하게 되는 것입니다.

 

 

 

 

  form 태그

 

  form 태그의 method 속성에는 get 방식과 post 방식 두 가지가 있습니다.

  get 방식은 전송할 데이터를 URL 뒤에 덧붙여서 보내어지고 용량에 제한이 있는 속성이지만, post 방식은 전송할

  데이터를 환경변수에 담아서 넘기고 용량에는 제한이 없는 속성입니다.

  참고로 get 방식이 먼저 나왔기 대문에 form 태그에 method의 기본값으로 설정이 되어 있고, post 방식이 나온 이유는 가면 갈수록 HTML에서

  전송하는 데이터 용량이 많아져서 get 방식으로는 처리가 불가능해졌기 때문입니다.

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
<h1>Include Tag Example1</h1>
<form method="post" action="includeTag1.jsp">
    <!-- includeTag1.jsp파일로 파라미터를 보내는 방식을 post방식으로 한다.-->
    이름 : <input name="name">
    <p />
    <input type="submit" value="보내기">
</form>
cs

 

1
2
3
4
5
6
7
8
9
10
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    String name = request.getParameter("name");
%>
include ActionTag의 Top입니다.
<p />
<b><%=name%>Fighting!!!</b>
<!-- <b>는 글씨의 굵기를 조절할수 있다. -->
<hr />
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    request.setCharacterEncoding("euc-kr"); //form으로 부터 전송된 문자의 문자셋을 설정 (한글 안깨지게함) 
    String name = "Korea Football"//includeTagTop1.jsp에서 name 값은 includeTag1.html에서 입력 받은 값으로 처리가 된 후이기 때문에
                                    //이 페이지의 name 값은 전혀 상관이 없는 값이 됩니다.
%>
<html>
<body>
    <h1>Include Tag Example</h1>
    <!-- include 액션 태그로  includeTagTop1.jsp를 포함시키고 있다.-->
    <jsp:include page="includeTagTop1.jsp" />
    <!-- 포함시킬 파일로 이동하여 처리 결과의 내용만을 가지고 다시 현재 페이지로 돌아온다.-->
    include ActionTag의 Body 입니다.
</body>
</html>
cs

 

 

include 액션 태그는 포함될 jsp 페이지에 새로운 요청 파라미터를 추가적으로 지정할 수가 있습니다.

 

include 액션 태그의 몸체 안에 <jsp:param> 태그를 사용하여 다음과 같은 형태로 사용이 됩니다.

 

 

  <jsp:include page = "로컬URL" flush="true">

     <jsp:param name = "name_1" value = "value_1"/>

     <jsp:param name = "name_2" value = "value_2"/>

  <jsp:include>

 

 

<jsp:param> 태그의 name은 포함될 jsp 페이지 안에 사용될 파라미터의 이름을 나타내며, value 속 속성은 파라미터의 값을 나타냅니다.

 

 

 

 

-정리-

 

<jsp:include>는 jsp내에 또다른 jsp파일을 실행하게함..

 

main.jsp를 실행하면 A가 출력된다음에

-> jsp:include액션태그를 타고 sub.jsp에 있는 B를 출력하고

->main.jsp로 다시 돌아와서 C를 출력한다..

 

 

 

 

 

어디서 주로 많이 쓰이냐면

이런 구성인 웹페이지를 만들때 main.jsp부분만 바꿀수 있게 하는 뭐 그런쪽에 많이 쓰인다고함

header, main, footer부분에 해당하는것은 중복되는 jsp이므로!

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
<h1>Include Tag Example</h1>
<form method="post" action="includeTag2.jsp">
    SITENAME : <input name="siteName"> <!--입력받은 siteName를 includeTag2.jsp파일로 보낸다.-->
    <p />
    <!-- <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 language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    request.setCharacterEncoding("EUC-KR"); //form 으로부터 전송된 한글 문자가 깨어지지 않게 출력한 코드
    String siteName = request.getParameter("siteName"); //html에서 입력받은 값을 변수로 받아 14번째줄에서 출력중
%>
<html>
<body>
    <h1>Include Tag Example</h1>
    <!--include 액션태그에 매개변수 값을 넘겨주기 위해 jsp:param 태그를 사용-->
    <jsp:include page="includeTagTop2.jsp">
        <jsp:param name="siteName" value="JSPStudy.co.kr" /> //includeTagTop2.jsp파일로 siteName 변수의 값에 "JSPStudy.co.kr"을 넣고 보낸다.
    </jsp:include>
    include ActionTag 의 Body입니다.
    <p />
    <b><%=siteName%></b>
    <hr />
</body>
</html>
cs

 

1
2
3
4
5
6
7
8
9
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    String siteName = request.getParameter("siteName"); //includeTag2.jsp에서 보낸 siteName를 파라미터로 받는다.
%>
include ActionTag의 Top입니다
<p />
<%=siteName%> //includeTag2.jsp에서 보낸 siteName를 출력한다. <hr/>
cs

 

 

 

 

-forward 액션 태그-

 

다른 페이지로 이동할 때 사용되는 태그입니다.

jsp 페이지 내에 forward 액션 태그를 만나게 되면 forward 태그가 있던 jsp 페이지의 모든 내용을 버리고서 forward 태그가 지정하는 다른 페이지로

이동하게 됩니다.

따라서 사용자가 입력한 값의 조건에 의해 여러 페이지로 이동해야 할 경우 등에서 사용할 수 있는 태그입니다.

여기서 로컬 URL로 지정된 값은 상대경로나 절대경로를 지정할 수 있고 또 직접 입력하지 않고 동적으로도 부여할 수 있습니다.

 

 

  <jsp:forward page="로컬URL"/>

  <jsp:forward page="로컬URL"></jsp:forward>

  <jsp:forward page='<%=expression%>'/>

 

 



-예제 및 출력결과-


1
2
3
4
5
6
7
8
9
10
11
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />
</head>
<h1>Forward Tag Example</h1>
<form method=post action="forwardTag1_1.jsp">
    아이디 : <input name="id">
    <p />
    패스워드 : <input type="password" name="pwd">
    <p />
    <input type="submit" value="보내기">
</form>
cs


1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%
    request.setCharacterEncoding("EUC-KR"); // 밑에서 다른 jsp파일로 포워딩 되고 있기 때문에 지워도 아무 영향이 없다.
%>
<html>
<body>
    <h1>Forward Tag Example1</h1>
    forward Tag의 포워딩 되기 전의 페이지 입니다.
    <jsp:forward page="forwardTag1_2.jsp" />
    <!-- forward 액션 태그를 통해서 forwardTag1_2.jsp로 넘어가는 부분입니다. 즉 앞의 내용은 다 버리고 이동하게 됩니다.-->
</body>
</html>
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%
    String id = request.getParameter("id");
    String pwd = request.getParameter("pwd");
%>
<h1>Forward Tag Example1</h1>
당신의 아이디는
<b><%=id%></b>
이고
</p>
패스워드는
<b><%=pwd%></b>
입니다.
 
cs






<jsp:param> 태그는 액션을 시도하려는 페이지에서 클라이언트 요청시에 포함된 매개변수와는 별도로 추가적인 값이 생길 때 

사용하는 태그 입니다.


 

<jsp:forward page="로컬URL">

<jsp:param name="name_1" value="value_1"/>

<jsp:param name="name_2" value="value_2"/>

</jsp:forward>




-예제 및 출력 결과-


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />
</head>
<h1>Forward Tag Example2</h1>
<form method=post action="forwardTag2_1.jsp">
    혈액형별로 성격 테스트
    <p />
    당신의 혈액형은?
    <p />
    <input type="radio" name="bloodType" value="A">A형<br /> <input
        type="radio" name="bloodType" value="B">B형<br /> <input
        type="radio" name="bloodType" value="O">O형<br /> <input
        type="radio" name="bloodType" value="AB">AB형<br /> <input
        type="submit" value="보내기">
</form>
cs


1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%
    String name = "JSPStudy";
    String bloodType = request.getParameter("bloodType");
    String value = request.getParameter("value");
%>
<h1>Forward Tag Example2</h1>
<!--액션태그로 넘어가는 페이지 이름을 html에서 입력받는 값으로 설정을 하였다. -->
<!--추가적인 매개변수의 값은 jsp:param액션태그를 사용하여 넘겨주고 있다. -->
<jsp:forward page='<%=bloodType + ".jsp"%>'>
    <jsp:param name="name" value="<%=name%>" />
</jsp:forward>
cs


1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%
    String name = request.getParameter("name"); //<jsp:param> 액션태그에 추가적인 매개변수의 값을 받아서 출력함
    String bloodType = request.getParameter("bloodType"); //html에서 입력한 bloodType값을 받아서 출력함
%>
<h1>Forward Tag Example2</h1>
<%=name%>님의 혈액형은
<b><%=bloodType%></b>
형이고
<p />
정확한 판단을 가진 합리주의자 입니다.
 
cs





-스크립트 요소를 대체하는 액션 태그-


JSP 기초문법에서 설명을 드렸든 스크립트 요소와 JSP 지시자를 아래와 같은 액션 태그로 사용을 할 수가 있습니다.

편리하거나 큰 장점이 없어 많이 사용하지는 않습니다.


 

  <jsp:declaration> 코드 </jsp:declaration>

  <jsp:scriptlet> 코드 </jsp:scriptlet>

  <jsp:expression> 코드 </jsp:expression>

  <jsp:directive.page contentType="text/html; charset=EUC-KR" />

  <jsp:directive.include file="xxx.jsp"/>



: