JSP 기초

장준휴·2023년 10월 30일
1

JAVA

목록 보기
5/9

하나의 파일에 비지니스 로직이랑 프리젠테이션 로직이 함께 존재하면 불편하다.
그래서 html 문서에서 자바를 사용하게끔 한 것이 바로 JSP이다.

Jsp?

Jakarta Server Page의 약자로 html 내에서 java코드를 작성하고 web서버에서 web페이지를 생성하여 웹 브라우저에게 돌려주는 java를 기반으로 한 스크립트 언어이다. 확장자로 .jsp를 사용하며 동적으로 작동하여 html 문서로 응답을 한다. jsp파일을 실행하고 뜯어보면 jsp로 작성을 했다고 하더라도 servlet 파일로 변환되어 실행된다.

Jsp vs Servlet

Servlet
장점 : 복잡한 로직 구현에 적합함
단점 : JAVA코드 중심 화면작성 작업과 수정이 어려움

Jsp
장점 : html 코드 중심 >> 화면 작성 작업, 수정 용이
단점 : 소스보기로 소스가 공개되어 중요 정보에 부적합

따라서, 로직 구현은 servlet클래스에, html 중심의 코드는 jsp에 작성하는 것이 유리하다.

스크립트릿

<% 실행문 %>

Jsp내에서 java코드를 작성할때 사용한다.이 코드가 .java로 변환시 _jspService() 메소드 내로 이동한다.

표현식

<%= 실행문 %>

동적인 데이터를 web에 출력할 때 사용한다. 실행 코드가 .java로 변환 시 out.print()메소드로 변환된다.

선언문

<%! 실행문 %>

맴버 변수 선언, 메소드 정의 할때 사용한다. 선언문이 필요한 이유는 .java로 변환 할때 _jspservice() 메소드 내부에 작성 되는데 메소드 내부에 다시 메소드 정의 하거나 지역 변수로 선언하면 안되기 때문에 선언문을 따로 작성해주는 것이다. 선언문 내부에 작성된 실행문은 클래스 영역에 선언이 된다.

예제 몇가지를 보여줄 것이다.

  1. 더하기 연산 결과
<%@ 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>jsp 기본 문법</h1>
<!-- 1. 스크립트릿 : jsp 페이지 내에 java코드를 작성하기 위해서 사용 -->
<% 
	//java 언어 사용 가능
	int a = 1;
	int b = 3;
	int result = a+b;
	System.out.println("a+b의 결과 : "+result);
%>

<!-- 2. 표현식 : web에 결과값을 출력하기 위해 사용
			 : 변수, 메소드 호출, 연산 -->
a+b의 결과 값 : <%= result %>
</body>
</html>

2.for문 활용하여 table생성

t<%@ 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>
<table border=1>
	<tr>
	<%for(int i=0; i<10; i++){ %>
		<td>
			<%=i+1 %>
		</td>
		<%} %>
	</tr>
</table>
</body>
</html>
  1. 계산기
<%@ 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>
<%!
// 그냥 작성하면 메소드 내부에 해당 메소드가 작성되기 때문에 class에 메소드 작성하기 위해서는 <%!를 사용해야함
public int add(int a, int b){
	return a+b;
	}
	public int min(int a, int b){
		return a-b;
	}
	public int gop(int a, int b){
		return a*b;
	}
	public int nonu(int a, int b){
		return a/b;
	}
%>

<% int num1 = Integer.parseInt(request.getParameter("num1"));
	int num2 = Integer.parseInt(request.getParameter("num2"));%>

<%=num1 %>
 
+
 
<%=num2 %>
 : 
<%= add(num1, num2) %>
<br>
<%=num1 %>
 
-
 
<%=num2 %>
 : 
<%= min(num1, num2) %>
<br>
<%=num1 %>
 
*
 
<%=num2 %>
 : 
<%= gop(num1, num2) %>
<br>
<%=num1 %>
 
/
 
<%=num2 %>
 : 
<%= nonu(num1, num2) %>
<br>
</body>
</html>
profile
나는야 토마토

0개의 댓글