Web Study/JSP

06. JSP Page Operator, Control Flow, UTF-8

Rylah 2022. 3. 16. 01:26

1. JSP 페이지의 연산자

  • JSP는 자바 식별자 규칙을 따르는데, 식별자(identifier)란 클래스명, 메소드명, 멤버 변수명, 자동 변수명을 말한다.
  • 자바 식별자는 길이에는 제한이 없고 첫 글자는 반드시 영문자, _, $로 시작해야 된다.
  • 자바 및 JSP는 byte, short, int, long, float, double, char, boolean 등의 기본 데이터 타입을 제공한다.
  • 기본 데이터 타입을 갖는 변수들은 해당 변수의 값으로 어떠한 데이터 값을 갖느낟.
  • JSP에서는 자바와 마찬가지로 산술연산자, 관계연산자, 논리연산자, 비트 연산자, shift 연산자, 증감 연산자 조건 연산자, 대입 연산자를 사용할 수있다.
타입 크기(byte) 자료 범위 기본 값
byte 1 byte  -128 ~ 127 0
short 2 byte  -32,768 ~ 32,767 0
int 4 byte  -2,147,243,648 ~ 2,147,243,647 0
long 8 byte  -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 0
float 4 byte  -3.40292347E+38 ~ 3.40292347E+38 0
double 8 byte  -1.79769313486231570E+308 ~ 1.79769313486231570E+308 0
char 2 byte '\u0000' ~ 'uFFFF' 0
boolean 1 bit true or false false

 

환경 변수명 환경 변수 값
() left -> right
++, -- , +, -, ~, !, (cast) right -> left
*, /, % left -> right
+, - left -> right
<<, >>, >>>> left -> right
<, >, <=, >=, instanceof left -> right
==, != left -> right
& left -> right
^ left -> right
| left -> right
&& left -> right
|| left -> right
?: right -> left
=, +=, -=, *=, /=, %= right -> left

 

2. JSP 페이지의 제어문

  • if문 : if문은 조건비교 분기문의 하나로, 주어진 조건을 비교해서 그 결과에 따라 여러 대안 중에서 하나를 선택할 때 사용, if문에 들어갈 수 있는 타입은 리턴 타입 또는 결과값이 boolean 타입인 경우에 가능
  • switch문 : switch문은 다중 조건 분기일 때 if문을 대체할 수 있다. if는 다중 조건인 경우 복잡해진다. 이 때 switch를 사용하는 것이 낫다.
  • for문 : 조건에 의한 일정한 문장을 반복 수행하는 문장이다.
  • while문 : 반복횟수를 알 수 없는 경우에 주로 사용한다.

3. Tomcat 기반에서 한글 처리

  • 서버에서 웹 브라우저에 응답하는 페이지의 화면 출력시 한글 처리
1
<%@ page contentType="text/html; charset=UTF-8"%>
cs
  • 웹 브라우저에서 서버로 넘어오는 파라미터 값에 한글이 있는 경우(Post 방식) 한글 처리
1
<% request.setCharacterEncoding("UTF-8");%>
cs

 

  • 웹 브라우저에서 서버로 넘어오는 파라미터 값에 한글이 있는 경우(Get 방식) 한글 처리
  • <% request.setCharacterEncoding("UTF-8");%> 코드를 기입
  • 추가로 실제로 서비스 하는 환경인 톰캣\conf 폴더에 있는 server.xml 파일과 이클립스 Project Explorer 뷰의 Servers Tomcat 항목에 server.xml에 한글 인코딩을 추가

 

 

1. 알고리즘?

 - 주어진 문제를 해결하기 위한 일련의 과정이나 절차

 

2. JSP에서 사용할 수 있는 제어문들인 조건비교 분기문 및 조건비교 반복문의 종류를 나열하시오

제어문 종류
조건문 if, if ~ else, if ~ else if ~ else
반복문 for, while, do while

 

3. 다음은 아이디와 패스워드를 입력하여 아이디가 "abcd"이고 비밀번호가 "z1234"라면 로그인에 성공하였습니다.를 표시하고 그렇지 않으면 로그인에 실패하였습니다.를 표시하는 프로그램을 작성해보시오

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Problem06_03 Form</title>
</head>
<body>
    <h2>아이디와 패스워드를 입력하세요</h2>
    <form method="post" action="problem06_03do.jsp">
    ID : <input type="text" name="id"> <br>
    PW : <input type="password" name="passwd"> <br>
    <input type="submit" 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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Problem06_03 Do!</title>
</head>
<body>
    <%request.setCharacterEncoding("UTF-8"); %>
    <%
    String id = request.getParameter("id");
    String pw = request.getParameter("passwd");
    
    boolean isPass = false;
    
    if (id.equals("abcd"&& pw.equals("z1234"))
        isPass = true;
    else
        isPass = false;
    
    if (isPass)
        out.println("로그인에 성공하였습니다.");
    else
        out.println("로그인에 실패하였습니다.");
    %>
</body>
</html>
cs

 

 

4. 다음과 같은 결과가 표시되도록 problem06_04Form.jsp 페이지와 probelm06_04Do.jsp를 작성하시오

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=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Problem06_04 Form</title>
</head>
<body>
<h2>반복 수행할 숫자를 입력하세요.</h2>
<form method="post" action="problem06_04Do.jsp">
반복할 숫자 입력 : <input type="text" name="number"> <br> 
<input type="submit" 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
36
37
38
39
40
41
42
43
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Problem06_04 Do!</title>
</head>
<body>
<h2>입력한 숫자만큼 반복 수행</h2>
<%
request.setCharacterEncoding("UTF-8");
%>
 
<%
int getNums = Integer.parseInt(request.getParameter("number"));
if (getNums <= 0)
    out.println("생성할 값이 없습니다.");
else {
%>
<table border="1">
    <tr>
        <th>글번호</th>
        <th>글제목</th>
        <th>글내용</th>
    </tr>
 
<%
    for (int i = getNums; i > 0; i--)
    {
%>
<tr>
    <td><%=i%></td>
    <td><%="제목 " + i %></td>
    <td><%="내용 " + i %></td>
</tr>
<%    
    }
}
%>
</table>
</body>
</html>
cs