web

[jsp] jsp (jsp의 스크립트 요소/button/text/for문/request&response)

소댓 2023. 4. 23. 22:44

* jsp : html 사이에 java의 문법 사용이 가능하게 해줌

+window-preferences-emmet - expand~~ 에 jsp 확장자 추가

 

* JSP의 스크립트 요소
1. 스크립트릿 <% %>
2. 표현식 <%= %>
3. 선언

 

 


- [movie.jsp] : 문자열과 영화 포스터 나열 (for문 활용)

 

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>movie.jsp</title>
<style>
    img {
        width: 200px; 
        height: 200px; }
</style>
</head>
<body>
    <h1>영화포스터</h1>
    <% 
        // JSP의 Script 요소
        // 1. 스크립트렛(scriptlet)
    for(int i=1; i<=3; i++){
    %>
    <%= i %><img src="../images/movie_image<%= i %>.jpg" alt="" />
    <% 
    }
    %>
</body>
</html>
cs

 

 

 

- [gugudan.jsp] : 구구단 3단 출력

 

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=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>gugudan.jsp</title>
</head>
<body>
    <!-- 테스트 -->
    <%-- JSP 주석 
        h1태그로 구구단 3단 출력--%>
    
    <%
    for(int i=1; i<10; i++){
    %>
    <h1> 3 * <%= i %> = <%=3*i%> </h1>
    <%
    }
    %>
    
</body>
</html>
cs

 

 

- [prtGuGuDan.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
34
35
36
37
38
39
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>prtGuGuDan.jsp</title>
</head>
<body>
 
    <!-- action 값을 따로 지정하지 않은면 자기 자신에게 리턴 된다. -->
    
    <form action="" method="get">
        <input type="text" name="dan" id="" />
        <input type="submit" value="출력" />
    </form>
    
    <%
    String d = request.getParameter("dan");
 
    /* out.println(dan); */
    
        // 문자 => 숫자로
        if (d != null) {
        
        int dan = Integer.parseInt(d);
        
        // 화면에 구구단 출력
        for(int i = 1; i<10; i++) {
            out.println("<h3>"+dan+" * "+i+" = "+dan*i+"</h3>");
        }
    }
            
            
    %>
    
 
</body>
</html>
cs

 

 



- [sendMsg.jsp] : 텍스트창에 문자 입력하고 제출하면 창에 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sendMsg.jsp</title>
</head>
<body>
    <form action="receiveMsg.jsp">
    <input type="text" name="msg" id="" />
    <input type="submit" value="전송" />
    </form>
</body>
</html>
cs

 

 


- [receiveMsg.jsp] : msg 출력

 

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>receiveMsg.jsp</title>
</head>
<body>
<%
    /*     따로 선언하지 않아도 쓸 수 있는 변수
        지금 사용하는 코드는 _jspService() 안쪽으로 들어가게 된다.
        미리 선언되어 있는 지역변수 : JSP 내장 객체  */
        
        String msg = request.getParameter("msg");
 
    /* 브라우저에 h2 태그 출력 */
    
    out.println("<h2>" + msg + "</h2>");
    
%>
 
    <h2><%= msg %></h2>
    
</body>
</html>
cs

 

 


- [now.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
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>now.jsp</title>
</head>
<body>
    <%
        Date d = new Date();
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 hh:mm:ss");
        
        String time = sdf.format(d);
        
        out.println("<h1>" + time + "</h1>");
    %>
    <!-- h1 태그로 오늘 날짜, 현재 시간 출력 -->
    <h1> 현재시간은 <%= time %></h1>
    
</body>
</html>
cs

 


* JSP의 스크립트 요소

  1. 스크립트릿

  2. 표현식

  3. 선언



- [sumvalue.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
34
35
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sumValue.jsp</title>
</head>
<body>
 
    <!-- 스크립트 요소
        1. 스크립트릿 
        2. 표현식 
        3. 선언
     -->
     
     
     <% 
         // 실행부 : _jspService()
         int k = 0; // _jspService() : 지역변수
         for(int i=1; i<=100; i++) {
             sum += i;
         }
     %>
     
     <!-- JSP Expression -->
     <h1>1부터 100까지 누적 합계 : <%= sum %></h1>
     
     <%! 
         // 변수 선언부 : 멤버변수, 전역변수
         int sum = 0; 
     %>
     
</body>
</html>
cs

 



- [hap.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
34
35
36
37
38
39
40
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>hap.jsp</title>
</head>
<body>    
    <%
    // 1. num1의 파라미터  가져오기
        String num1 = request.getParameter("num1");
        String num2 = request.getParameter("num2");
        
    // 2. 변수 초기화
        int n1 = 0;
        int n2 = 0;
        int n3 = 0;
    // 3. num1, num2의 값이 null이 아니라면
    //       n1, n2, n3의 값에 대입
        if(num1 != null && num2 != null){
            // 문자를 숫자로 형변환
            n1 = Integer.parseInt(num1);
            n2 = Integer.parseInt(num2);
            n3 = n1+n2;
    
    // 4.  값을 태그의 value 값으로 지정
        
    }
    
    %>
    
    <form action="">
        <input type="text" name="num1" id="" value="<%=n1 %>"/>+
        <input type="text" name="num2" id="" value="<%=n2 %>"/>
        <input type="submit" value="=" />
        <input type="text" name="result" id="" value="<%=n3 %>"/>
        </form>
</body>
</html>
cs

 

 

 

- [test.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
24
25
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test.jsp</title>
</head>
<body>    
    <%
        // 선언부 >> 멤버변수
        int a;
    %>
    <% // 스크립트릿
        a = 10; 
    
        out.println("<h3> out은 내장 객체 </h3>");
    %>
    
    <h1>Hello JSP World</h1>
    
    <h3>a 변수의 값 : <%=a %></h3>
    
</body>
</html>
cs

 

 


* 서블릿의 request method
request.getMethod();
request.getRemoteAddr();
request.getQueryString();

 

 

- [requestEx.jsp] : request method 정리

 

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=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>requestEx.jsp</title>
</head>
<body>
    <%
        /*
            HttpServletRequet   request객체
            요청객체
        */
        
        // 한글처리
        request.setCharacterEncoding("UTF-8");
    
        // get, post 방식 ? 어떤 걸 선택했는지 확인하는 메소드
        String method = request.getMethod();
        // IP ? : 어떤 사용자가 나에게 요청을 했는지 확인
        String ip = request.getRemoteAddr();
        // QueryString
        // ?id=aaa&pw=bbb
        String queryString = request.getQueryString();
        
        
        out.println("<h2> method : " + method + "</h2>");
        out.println("<h2> IP : " + ip + "</h2>");
        out.println("<h2> QueryString : " + queryString + "</h2>");
    %>
 
</body>
</html>
cs

 

* 서블릿의 response method
  response.getStatus();

  response.sendRedirect():

 

 

 

- [responseEx.jsp] : response method 정리 

 

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>
<html>
<head>
<meta charset="UTF-8">
<title>responseEx.jsp</title>
</head>
<body>
    <%
        int status = response.getStatus();
        out.println("<h3> 상태 : " + status + "</h3>");
        // 200 : 정상
        // 404 : NOT FOUND
        // 405 : doGet, doPost
        // 500 : server side logic error
    %>
    
    <h2> 다른 페이지로 이동 </h2>
    
    <!-- menu.jsp로 이동 -->
    <ol>
        <li>forward</li> 
        <!-- forward : 자연스럽게 내부적으로 페이지를 이동 -->
        <%
            RequestDispatcher rd = request.getRequestDispatcher("menu.jsp");
            
            rd.forward(request, response); 
            // forward할 때 매개변수로 현재 요청, 응답을 함께 가져가기 때문에 파라미터 값이 함께 전달 
            // 따라서, http://localhost:8080/web/day03/responseEx.jsp?msg=hello 입력했을 때,
            // forward는 메세지에 hello 입력됨 => redirect는 그대로 null
        %>
        
        <li>redirect</li>
        <!-- 주소창이 menu.jsp로.. -->
        <% 
        /* response.sendRedirect("menu.jsp"); */
        %>
    </ol>
    
</body>
</html>
cs

 

 

 

- [gugudan.jsp] : h1태그로 구구단 3단 출력

 

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=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>gugudan.jsp</title>
</head>
<body>    
 
    <% 
        // PrintWriter out = resp.getWriter();
        // 표현식 : 출력 결과(HTML)에 값을 넣기 위해 사용
        for (int i=1; i<=9; i++) {
    %>
        <h1> 3 *  <%=i %>  =  <%=3*i %> </h1>
    <% 
    }
    
        for( int i=1; i<=9; i++) {
            out.println("<h3> 3 * " + i + " = " + 3*i + "</h3>");
        }
    %>
        
 
</body>
</html>
cs