티스토리 뷰

11-23-학습정리.hwp
0.14MB

 

1. 아래를 프로그래밍 하시오.
/context명/input.jsp ->이름 국어 영어 수학 (input box) 센드 버튼, 리셋버튼
/context명/result.jsp ->이름 총점 평균

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=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="result.jsp"> <!-- method 디폴트 값은 get -->
        이름 : <input type="text" name="name" size="10"><br>
        국어 : <input type="text" name="kor" size="10"><br>
        영어 : <input type="text" name="eng" size="10"><br>
        수학 : <input type="text" name="math" size="10"><br>
        <input type="submit" value="제출">
        <input type="reset" value="초기화">
    </form>
</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=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!
    String name;
    int kor, eng, math;
    
    public int sum(){
        return (kor + eng + math);
    }
    
    public double avg(){
        return sum() / 3;
    }
%>
<%
    request.setCharacterEncoding("UTF-8");
    name = request.getParameter("name");
    kor = Integer.valueOf(request.getParameter("kor"));
    eng = Integer.valueOf(request.getParameter("kor"));
    math = Integer.valueOf(request.getParameter("kor"));
%>
 
이름 : <%=name %><br>
총점 : <%=sum() %><br>
평균 : <%=avg() %>
 
</body>
</html>
cs

 

 


2. 아래를 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
30
31
32
33
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="reqparam.jsp" method="post">
        이름 : <input type="text" name="name" size="10"><br>
        아이디 : <input type="text" name="id" size="10"><br>
        비밀번호 : <input type="text" name="pw" size="10"><br>
        취미 : <input type="checkbox" name="hobby" value="read">독서
        <input type="checkbox" name="hobby" value="cook">요리
        <input type="checkbox" name="hobby" value="run">조깅
        <input type="checkbox" name="hobby" value="swim">수영
        <input type="checkbox" name="hobby" value="sleep">취침<br>
        전공 : <input type="radio" name="major" value="kor">국어
        <input type="radio" name="major" value="eng">영어
        <input type="radio" name="major" value="math">수학
        <input type="radio" name="major" value="design">디자인<br>
        <select name="protocol">
            <option value="http" selected="selected">http</option>
            <option value="ftp">ftp</option>
            <option value="smtp">smtp</option>
            <option value="pop">pop</option>
        </select><br>
        <input type="submit" value="제출">
        <input type="reset" value="초기화">
    </form>
</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 import="java.util.Arrays"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!
    String name, id, pw, major, protocol;
    String[] hobbys;
%>
<%
    request.setCharacterEncoding("UTF-8");
    name = request.getParameter("name");
    id = request.getParameter("id");
    pw = request.getParameter("pw");
    hobbys = request.getParameterValues("hobby");
    major = request.getParameter("major");
    protocol = request.getParameter("protocol");
%>
 
이름 : <%=name %><br>
아이디 : <%=id %><br>
비밀번호 : <%=pw %><br>
취미 : <%=Arrays.toString(hobbys) %><br>
전공 : <%=major %><br>
프로토콜 : <%=protocol %>
 
</body>
</html>
cs

 

 

3.부트스트랩 Carousel 을 완성 하시오.(boot.html 참고)

 

 

 



4. 다음을 설명하시오.
-액션 태그 와 종류는?
JSP페이지 내에서 어떤 동작을 하도록 지시하는 태그로 대표적인 태그는 forward, include, param이다.

<jsp:              > 식으로 사용된다.

 

forward : 현제 페이지에서 다른 특정 페이지로 전환할 때 사용한다.

<jsp:forward page="sub.jsp"/>

 

include : 현재 페이지에 다른 페이지를 삽입할 때 사용한다.

<jsp:include page="include02.jsp" flush="true"/>
액션 태그 include도 지시자 include와 마찬가기로 해당 페이지의 전체 코드를 집어넣기 때문에 코드 구성이 이상해져 실무에서는 잘 사용되지 않는다.

- flush 속성은 포함될 페이지로 제어가 이동될 때 현재 포함하는 페이지가 지금까지 출력 버퍼에 저장한 결과를 처리하는 방법을 결정한다.

- flush 속성의 값을 'true' 로 지정하면 포함될 페이지로 제어가 이동될 때 현재 페이지가 지금까지 버퍼에 저장한 내용을 웹 브라우저에 출력하고 버퍼를 비운다.

- flush 속성을 일반적으로 'false' 로 지정하는 것이 좋다. 'true'로 지정하면 일단 출력 버퍼를 웹브라우저에 전송하게 되는데 이때 헤더 정보도 같이 전송된다. 헤더 정보가 일단 웹 브라우저에 전송이 되고 나면 헤더 정보를 추가해도 결과가 반영되지 않는다.

 

param : forward, include 태그에 데이터를 전달하기 위해 사용한다.

<jsp:forward page="sub_param.jsp">
<jsp:param name="id" value="abce"/>
<jsp:param name="pw" value="1234"/>
</jsp:forward>

 

 

 

 


5. redirect , forward 의 차이는?

forward 액션태그를 사용하면 redirect와 동일하게 다른 페이지의 내용을 불러온다.

결과물을 보면 같아보이지만 둘 사이에는 차이점이 있다.
→ forward는 주소창에 그대로 실행시킨 jsp 파일명이 표시되는데 redirect는 내용을 불러온 파일명이 주소가 된다.

main.jsp

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>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>main.jsp 페이지 입니다.</h1>
<jsp:forward page="sub.jsp"/>
<% // response.sendRedirect("sub.jsp"); %>
</body>
</html>
cs

 

sub.jsp

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h5>sub.jsp 페이지 입니다.</h5>
</body>
</html>
cs

<jsp:forward page="sub.jsp"/> 실행시


<% response.sendRedirect("sub.jsp"); %> 실행시

 

왜 이런 차이가 발생하는 걸까?
forward는 내부적으로 sub.jsp를 서비스한다. 그래서 요청 정보가 그대로 유지되기 때문에 주소가 변하지 않는다.
redirect는 클라이언트에게 다시 sub.jsp 페이지로 이동하도록 하기 때문에 주소가 변한다.
기본적으로 http는 원래 한번 응답이 되면 소켓이 닫힌다.

redirect는 처음에 main.jsp를 보내고 소켓객체가 닫히고 다시 고객이 sub.jsp로 이동하면서 다시 소켓이 생성되면서 응답하는 방식이기 때문에 주소가 달라진다.
즉, forward는 requset객체와 response 객체를 공유하고 redirect는 공유가 되지 않고 소켓을 재생성한다.

 

 

 

 

6. 쿠키의 개념에 대하여 설명하시오.
웹브라우저에서 서버로 데이터를 요청하면 서버에서 해당 데이터를 웹브라우저에 응답한다. 그리고 서버는 웹브라우저와의 관계를 종료한다. (채팅은 기본적으로 계속 연결된 상태 - 세션을 유지한다.)

 

왜 채팅과 다르게 세션을 계속 유지 시키지 않는걸까?

웹브라우저에 응답 후 관계를 끊는 것은 http프로토콜의 특징(http에 정해진 규약, 약속)이다!!!(그래서 채팅은 http프로토콜이 아니다.) 왜냐하면 수천만명을 접속 상태로 계속 유지 시키기가 어렵기 때문이다. (메모리나 자원등이 부족.....) 그래서 한번 응답하고 끊는 방식을 정해놓은 것이다.

 

그렇다면 한번 전달하고 끊기는데 웹사이트에서 로그인하고나면 어떻게 그 상태가 계속 유지되는 걸까?? 페이지를 로딩할 때마다 다시 로그인해야되는 거 아닌가??

→ 이 때 쿠키와 세션이 등장!!!!!! (연결성 유지를 위한 꼼수ㅋㅋㅋㅋ)

로그인한 정보를 계속 가지고 있기 위해서 해당 정보를 특정 영역에 저장하는 데 그 장소가 쿠키이다.

로그인 몇시,몇분,몇초를 기록, 이 정보가 key-value형태로 저장된다. 이 후 다시 접속했을 때 (클라이언트에게 응답할 때) 기록해 놨던 이 정보(쿠기값)을 같이 전달한다.

 

쿠키는 4kb 용량. 300개까지 데이터 정보를 가질 수 있다.


내일 개별진척도는
위의 문제 2. 아래를 jsp 로 구현하시오. 


개별진척도 22 번
public static void main(String[] args) {
                
                int math, science, english;
                math = 90;
                science = 80; 
                english = 80;

                Grade me = new Grade(math, science, english);
                System.out.println("평균은 " + me.average());
                System.out.println(me.getGrade()); //우 입니다.

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
class Grade{
    private int math, science, english;
    
    public Grade(int math, int science, int english){
        this.math = math;
        this.science = science;
        this.english = english;
    }
    
    public double average() {
        return (math + science + english) / 3;
    }
    
    public String getGrade() {
        if(average() > 90)
            return "수 입니다.";
        else if(average() > 80)
            return "우 입니다.";
        else if(average() > 70)
            return "미 입니다.";
        else if(average() > 60)
            return "양 입니다.";
        else
            return "가 입니다.";
        
    }
    
}
 
public class Test {
 
    public static void main(String[] args) {
        int math, science, english;
        math = 90;
        science = 80
        english = 80;
 
        Grade me = new Grade(math, science, english);
        System.out.println("평균은 " + me.average());
        System.out.println(me.getGrade()); //우 입니다.
        
    }
}
cs

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함