티스토리 뷰

학습정리-11-18.txt
0.00MB

1. 아래를 프로그래밍 하시오.
-JSP 프로젝트 생성
-/gugudan - input 박스에 단을 입력받음 -해당 구구단 출력 
-/rectangle - input 박스에 가로 세로 입력 -해당 넓이 출력
-/triangle - input 박스 두개에 가로 세로 입력 - 해당 넓이 출력
-/gugu - 구구단을 좀더 예쁘게 출력(테이블 좀 입혀 주세요.^^;) 
전체 reset 버튼도 달아 줄것

 

-JSP 프로젝트 생성

 

-/gugudan - input 박스에 단을 입력받음 -해당 구구단 출력

gugudan.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title></title>
</head>
<body>
    <h1>구구단 출력하기</h1>
    <form action="gugudan" method="get">
        <h3>단을 입력하고 확인 버튼을 누르세요.</h3>
        단: <input type="text" name="dan" size="10"><br>
        <input type="submit" value="확인">
        <input type="reset" value="다시">
    </form>
</body>
</html>
cs

 

servlet 생성 GuGudan.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
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class HelloWorld
 */
@WebServlet("/gugudan")
public class GuGuDan extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public GuGuDan() {
        super();
        // TODO Auto-generated constructor stub
    }
 
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("실행");
        String dan = request.getParameter("dan");
        
        System.out.println("dan: " + dan);
        
        response.setContentType("text/html; charset=euc-kr");
        PrintWriter writer = response.getWriter();
        
        writer.println("<html><head></head><body>");
        
        writer.println("<h2>구구단 " + dan + "단</h2>");
        
        for(int i = 1; i <= 9; i++) {
            writer.println(dan + " x " + i + " = " + (Integer.valueOf(dan) * i) + "<br>");
        }
        
        writer.println("</body></html>");
 
        writer.close();
    }
 
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
    }
 
}
cs

-/rectangle - input 박스에 가로 세로 입력 -해당 넓이 출력

rectangle.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
    <h1>사각형 넓이 출력하기</h1>
    <form action="rectangle" method="get">
        <h3>가로, 세로을 입력하고 확인 버튼을 누르세요.</h3>
        가로: <input type="text" name="width" size="10"><br>
        세로: <input type="text" name="height" size="10"><br>
        <input type="submit" value="확인">
        <input type="reset" value="다시">
    </form>
</body>
</html>
cs

 

servlet 생성 Rectangle.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
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class HelloWorld
 */
@WebServlet("/rectangle")
public class Rectangle extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Rectangle() {
        super();
        // TODO Auto-generated constructor stub
    }
 
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("실행");
        String width = request.getParameter("width");
        String height = request.getParameter("height");
        
        System.out.println("width: " + width);
        System.out.println("height: " + height);
        
        int RecArea = Integer.valueOf(width) * Integer.valueOf(height);
        
        System.out.println("사각형 넓이 : " + RecArea);
        
        response.setContentType("text/html; charset=euc-kr");
        PrintWriter writer = response.getWriter();
        
        writer.println("<html><head></head><body>");
        
        writer.println("<p>가로 :" + width + "</p>");
        writer.println("<p>세로 :" + height + "</p>");
        writer.println("<p>사각형 넓이 :" + RecArea + "</p>");
        
        writer.println("</body></html>");
 
        writer.close();
    }
 
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
    }
 
}
cs

 

-/triangle - input 박스 두개에 가로 세로 입력 - 해당 넓이 출력

triangle.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
    <h1>삼각형 넓이 출력하기</h1>
    <form action="triangle" method="get">
        <h3>밑변, 높이를 입력하고 확인 버튼을 누르세요.</h3>
        밑변: <input type="text" name="width" size="10"><br>
        높이: <input type="text" name="height" size="10"><br>
        <input type="submit" value="확인">
        <input type="reset" value="다시">
    </form>
</body>
</html>
cs

 

 

servlet 생성 Triangle.java (doGet함수 부분만)

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
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("실행");
        String width = request.getParameter("width");
        String height = request.getParameter("height");
        
        System.out.println("width: " + width);
        System.out.println("height: " + height);
        
        double traArea = (Integer.valueOf(width) * Integer.valueOf(height)) / 2;
        
        System.out.println("삼각형 넓이 : " + traArea);
        
        response.setContentType("text/html; charset=euc-kr");
        PrintWriter writer = response.getWriter();
        
        writer.println("<html><head></head><body>");
        
        writer.println("<p>밑변 :" + width + "</p>");
        writer.println("<p>높이 :" + height + "</p>");
        writer.println("<p>삼각형 넓이 :" + traArea + "</p>");
        
        writer.println("</body></html>");
 
        writer.close();
    }
 
cs

 

-/gugu - 구구단을 좀더 예쁘게 출력

gugu.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
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title></title>
<style type="text/css">
body{
text-align: center;
}
input{
margin: 5px;
}
</style>
</head>
<body>
    <h1>구구단 출력하기</h1>
    <form action="gugu" method="get">
        <h3>단을 입력하고 확인 버튼을 누르세요.</h3>
        단: <input type="text" name="dan" size="10"><br>
        <input type="submit" value="확인">
        <input type="reset" value="다시">
    </form>
</body>
</html>
 
cs

 

servlet 생성 GuGu.java (doGet함수 부분만)

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
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("실행");
        String dan = request.getParameter("dan");
        
        System.out.println("dan: " + dan);
        
        response.setContentType("text/html; charset=euc-kr");
        PrintWriter writer = response.getWriter();
        
        writer.println("<html><head></head><body>");
        writer.println("<table border=3 bordercolor=red align=center>");
        
        writer.println("<th bgcolor=lightyellow width=100 height=20>구구단 " + dan + "단</th>");
 
        for(int i = 1; i <= 9; i++) {
            writer.println("<tr width=100 height=20><td width=100 height=20 align=center>" + dan + " x " + i + " = " + (Integer.valueOf(dan) * i) + "</td></tr>");
        }
        
        writer.println("</table>");
        writer.println("</body></html>");
 
        writer.close();
    }
 
 
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
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title></title>
<style type="text/css">
body{
text-align: center;
}
input{
margin: 5px;
}
</style>
</head>
<body>
    <h1>구구단 출력하기</h1>
    <form action="gugu" method="get">
        <h3>단을 입력하고 확인 버튼을 누르세요.</h3>
        단: <input type="text" name="dan" 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
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("실행");
        String dan = request.getParameter("dan");
        
        System.out.println("dan: " + dan);
        
        response.setContentType("text/html; charset=euc-kr");
        PrintWriter writer = response.getWriter();
        
        writer.println("<html><head></head><body>");
        writer.println("<table border=3 bordercolor=navy align=center>");
        
        writer.println("<th bgcolor=lightyellow height=30 colspan=9>구구단</th>");
 
        for(int i = 1; i <= 9; i++) {
            writer.println("<tr>");
            
            for(int j = 1; j <= 9; j++) {        
                
                if(i == Integer.valueOf(dan)) 
                    writer.println("<td width=100 height=20 bgcolor=lightyellow align=center>" + i + " x " + j + " = " + (j * i) + "</td>");
                
                else
                    writer.println("<td width=100 height=20 align=center>" + i + " x " + j + " = " + (j * i) + "</td>");
            }
            
            writer.println("</tr>");
            
        }
cs

 

 

 

 

2. get 방식 과 post 방식에 대하여 설명하시오.

예전에는 전파를 통해 전달하는 방식이었다면 기술의 발전으로 01010덩어리로 데이터를 전달하는 방식이 되었다.

데이터 전송 방식은 여러가지이지만 그 중 get과 post가 자주 쓰인다.

 

▶ get 방식

url주소에 정보를 넣어 같이 넘겨주는 방식을 get이라고 한다.

(get방식은 doGet() 함수가 실행된다.)

일반적으로 주소창에 주소를 입력해서 바로 웹페이지에 접근이 가능한 형태를 말한다. 

1번 문제가 모두 get방식으로 만들어 졌다. 

위 주소창에서 ? 앞부분까지가 주소이고,

? 다음 부분이 key-vaule 부분(int width = 5; 와 같은 변수명과 변수값 부분으로 생각하자)이다.

위 주소창을 보면 한눈에 경로와 저장된 정보가 다 보인다. 그래서 누구나 쉽게 직접 접근이 가능해 보안이 취약한 단점이 있다.

 

▶ post 방식

post 방식은 get과 다르게 주소로 넘기는 것이 아니라 http에 있는 header라는 부분이에 정보를 숨겨서 넘긴다.

그래서 로그인과 같이 보안이 필요한 경우 사용한다.

(post방식은 내 컴퓨터가 아니라 남의 컴퓨터로 접속한다고 생각하기...??)

post는 doPost()함수가 실행된다. 

 formex.html ↓(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
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
    <h1>Example Form</h1>
    <!-- action이 내가 보낼 주소...
form태그는 모양이 아니라 내가 뭔가 보내고 싶은 정보가 있다면 이쪽에 넣는 것
method는 get방식과 post방식이 있다...
 type=submit은 버튼 하나가 나온다.
 바로 버튼을 클릭하면 action에 있는 주소로 폼 안에 있는 내용을 보내라.
 action="formEx"로 생략해서 작성 가능
    <form action="http://localhost:8282/jsp_servlet3/formEx" method="post">
        <input type="submit" value="post">
    </form>
-->
    <form action="formEx" method="post">
        아이디: <input type="text" name="id" size="10"><br>
        비밀번호: <input type="password" name="pw" size="10"><br>
        <input type="submit" value="전송">
        <input type="reset" value="reset">
    </form>
</body>
</html>
<!-- name에 있는 부분이 변수명...
name=""안에 있는 부분이 변수명으로 입력한 정보를 넘길 때 사용한다!
입력한 정보는 HttpServletRequest request 객체가 안에 저장!
 -->
 
cs

FormEX.java(servlet 파일) doPost 함수 부분만

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doPost");
        String id = request.getParameter("id");
        String pw = request.getParameter("pw");
        
        System.out.println("id: " + id);
        System.out.println("pw: " + pw);
        
        response.setContentType("text/html; charset=euc-kr");
        PrintWriter writer = response.getWriter();
        
        writer.println("<html><head></head><body>");
        
        writer.println("<h1>Post 방식 입니다. doPost 호출입니다.</h1>");
        
        writer.println("<p>ID :" + id + "</p>");
        writer.println("<p>Password :" + pw + "</p>");
        
        writer.println("</body></html>");
 
        writer.close();
    }
cs

 

실행시키면

get방식과는 다르게 주소창에 정보가 나오지 않는다.

직접 주소창에 주소를 입력한다면

이렇게 페이지에 아무것도 나오지 않는다.

 

 

 

 


3. 컨텍스트 패스(Context Path)란 무엇인가?

WAS(Web Application Server)에서 웹어플리케이션을 구분하기 위한 경로이다. 이클립스에서 프로젝트를 생성하면, 자동으로 server.xml에 추가 된다. (각각의 웹어플리케이션의 이름이라고 생각하면 된다.)

 

 

 

 


4. 아래의 객체에 대하여 설명하시오.
HttpServletRequest request, HttpServletResponse response

HttpServletRequest 는클라이언트의 요청을 처리하고

HttpServletResponse는 요청처리 결과를 클라이언트에게 전달(응답)한다.

(클라이언트에게 결과를 되돌려주기 위해서 HttpServletResponse로 부터 PrintWriter형의 출력 스트림 객체를 얻어와야 한다.)

 

PintWriter writer = response.getWriter

 

※HttpServletRequest 객체에 의해서 요청이 처리되고 HttpServletResponse 객체에 의해서 처리 결과가 전달된다.

 

채팅 코드 짤 때를 생각해보면 좀 더 쉽게 이해 할 수 있다. 웹브라우저가 클라이언트이고 내 컴퓨터가 서버 역할을 하는 것이다.

wirte.println이 웹 브라우저(클라이언트)에게 채팅을 보내는 것과 같다.

 

다만 채팅처럼 계속 연결되어 있는 상태가 아니라 doGet()함수가 실행되고 종료되면 그대로 연결된 빨대가 없어지면 끝난다.

 

 

 



5. 아래의 submit 에 대하여 설명하시오.
<button type="submit" value="전송">

type이 submit이면 form타입을 실행시킨다는 의미이다. 해당 버튼을 누르면 입력한 정보가 form태그에서 지정된 주소와 방식에 따라 전송된다.

<form action="formEx" method="post"> → 여기서는 url이 /formEx인 주소로 post 방식으로 정보가 전달된다는 의미이다.

(즉, submit은 form태그를 실행시키기위한 것!)

 


내일 진척도
int 값을 하나 입력 받아
원의 넓이를 구하는 프로그램을 짜시오.
단 Circle 은 객체로 만들것.
출력 예)
반지름을 입력 하세요.
100
314.78678 입니다.

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
import java.util.Scanner;
 
class Circle{
    final double PI = 3.14;
    int radius;
    
    public Circle(int radius) {
        this.radius = radius;
    }
    
    public double getCirArea() {
        return (radius * radius * PI); 
    }
}
 
public class Test {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("반지름을 입력 하세요. >> ");
        
        int radius = sc.nextInt();
        
        Circle cir = new Circle(radius);
        
        System.out.println(cir.getCirArea() + "입니다.");
        
    }
}
cs

 

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