본문 바로가기
✨ Back-end/JSP

[JSP] JSP 기초 - 오징어 문법 -

by 환풍 2023. 2. 10.
728x90
반응형

 JSP란? JavaServerPage로,

HTML 코드JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.

JSP 가 실행되면 자바 서블릿(Servlet) 으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고

그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.

 

서블릿은 성능좋은 웹프로그램을 효과적으로 개발할 수 있지만, 프로그램 작성이 불편하다는 단점이있다.

JSP는 서블릿기술을 바탕으로 ASP처럼 쉽고, 빠르게 원하는 웹응용프로그램을 작성할 수 있다.

 

장점

  1. JSP는 Servlet보다 쉽고 빠르게 프로그램 작성
  2. JSP화면구성을 위한 HTML부분과 프로그램로직(Logic)을 분리할 수 있다
    1. (프로그래머와 웹디자이너가 협력작업할 수 있다.)
  3. 뛰어난 웹컨테이너는 효율적인 코드를 생성하기 때문에 서블릿보다 성능면에서 뛰어나다.
  4. 서블릿은 자바 프로그램이기 때문에 HTML의 페이지 디자인을 하기 위한 디자인도구가 부족한데, 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
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>Insert title here</title>
</head>
<body>
<%
    int value = 2;
    String result = " ";
    
    if(value %2 == 0)
    {
        result = "짝수";
    }
    else
    {
        result ="홀수";
    }
%>
value의 값은 <%=result %>입니다.
<br>
 
<%int value1 = 3; %>
<%if(value1 % 2== 0){%>
    짝수
<%}else {%>
    홀수
<%} %>
</body>
</html>
cs

JSP같은 경우에는 HTML과 같이 <body> 태그 안에 문법을 맞추어 작성할 수 있다.

<% ~~~  %> 를 이용해 JSP 시작과 끝을 알리며 이 안에 자바 언어를 사용해주면 된다.

 

다만 아주 주의할 점은 보여줄 데이터를 넣는 공간은 시작문장에 " = " 이 추가가 되어 표현식 <%= %> 와 같이 표현한다.

아주 오래전, 27줄부터 32줄과 같이 아주 이상하게 썼던 코드가 있었다.

이렇게 사용해도 되지만 최근엔 좀 더 편하게 개선되었지 않았을까?

실행결과 웹에 띄운 화면


Java Resources 파일에 패키지를 새로 만들어, Student.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
public class Student {
    private int year;
    private String name;
    private int score;
    
    public Student(int year, String name, int score) {
        super();
        this.year = year;
        this.name = name;
        this.score = score;
    }
 
    public int getYear() {
        return year;
    }
 
    public void setYear(int year) {
        this.year = year;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getScore() {
        return score;
    }
 
    public void setScore(int score) {
        this.score = score;
    }
 
}
cs

 

이후 다시 webapp에서 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 import="stu.Student"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ 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>
<%
    List<Student> list = new ArrayList<>();
    Student s1 = new Student(3,"김길동",80);
    Student s2 = new Student(2,"이길동",60);
    Student s3 = new Student(1,"박길동",20);
    
    list.add(s1);
    list.add(s2);
    list.add(s3);
%>
 
<table>
    <tr>
        <td>학년</td>
        <td>이름</td>
        <td>점수</td>
    </tr>
    <%for(int i=0; i<list.size(); i++){ %>
    <tr>
        <td><%=list.get(i).getYear() %></td>
        <td><%=list.get(i).getName() %></td>
        <td><%=list.get(i).getScore() %></td>
    </tr>
    <%} %>
</table>
</body>
</html>
cs

패키지 안에 있는 클래스를 불러와 주기 위해 1번째 문장과 같이 import를 해주었고, 내용출력을 해주었다.

13번째 줄부터 22번째 줄까지, java의 List를 사용하여 배열을 정의해주었다.

 

저장된 리스트 배열들을 24번 째 줄에 HTML로 table을 만들어 표현해주었다.

반드시 JSP를 적용할 곳에만 <% %>를 사용하여 나타내주고, <tr>과 같이 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<%@ 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>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body topmargin="100">
 
    <h1 align="center">구구단을 외자! 구구단을 외자!</h1>
    <table border="1" width="80%" align="center">
        <thead>
            <tr>
            <%
                for(int i=2; i<10; i++){
            %>
                <th><%=i %></th>
            <%
                }
            %>
            </tr>
        </thead>
        <tbody align="center">
            <%
                for(int i=1; i<10; i++){
            %>
                <tr>
                    <%
                        for(int j=2; j<10; j++){
                    %>
                        <td><%=j %> * <%=i %> = <%=i*j %></td>
                    <%
                        }
                    %>
                </tr>
            <%
                }
            %>
        </tbody>
    </table>
 
</body>
</html>
cs

 

728x90
반응형

댓글