JSP란?
JSP는 Java(Jakarta) Server Page로, HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹페이지를 생성하는 서버사이드 스크립트 언어이다. 스프링 MVC 구조에서 V(view) 역할을 담당한다. Thymeleaf라는 새로운 기술이 등장하며 Spring에서는 Thymeleaf 사용을 권장하지만 JSP가 이전에 사용되었던 기술이고, 쉽고 빠르다는 장점 때문에 아직도 많이 사용된다.
JSP는 실행 시에 내부에서 자바 서블릿으로 변환되어 실행된다. HTML 표준에 몇 가지를 추가하여 HTML에서 자바 코드를 실행하고, 그 값을 이용할 수 있게 된다.
JSP를 사용하려면. html이 아닌. jsp로 파일로 만들고, html처럼 사용하면 된다.
간단하게 사용법을 알아보자.
JSP 사용 선언
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
맨 위에 위와같은 태그를 추가하고, 아래는 그냥 HTML처럼 <html>, <head>, <body> 태그로 시작하면 된다.
<% %> 태그
<% 와 %> 사이에서 자바 코드를 작성할 수 있다.
<%와 %> 사이에 있는 모든 것들은 웹 브라우저가 인식하지 못한다.
이 사이에 자바 코드를 작성하여 필요한 값들을 얻고, 동적으로 html 태그 사이사이에 추가할 수 있다.
또한, 하나의 jsp 파일 내에서는 모든 변수를 공유한다.
따라서 어딘가에서 선언해 놓은 변수를 다른 곳에서 사용할 수 있다.
이럴 때는 <%= %> 태그를 사용한다.
<%= %>
이 태그 내의 값은 HTML에 추가되어 웹페이지에 출력된다.
값이 문자나 숫자로 그대로 변경되어 html의 일부처럼 동작하게 된다.
위에서 선언한 변수 x, y, sum을 <%=x%> , <%=y%> , <%=sum%>으로 직접 사용할 수 있다.
이 부분은 <p>1 + 2 = 3 </p>로 변환되어 웹페이지에 나타나게 된다.
그래서 자바 코드로 로직을 모두 작성한 뒤, 해당 클래스를 생성하여 작업을 하여 값을 사용한다.
public class CalculateService {
public int sumAtoB(int x, int y){
int sum = 0;
for(int i = x; i <= y; i++){
sum += i;
}
return sum;
}
}
위와 같이 자바 클래스를 만들고, JSP 파일에서는 해당 클래스를 생성하여 사용하면 된다.
자바 클래스는 import 하여 사용해야 한다. (IDE가 자동으로 improt 문을 생성해 준다.)
<%@ page import="com.example.test.CalculateService" %>
(출력 결과)
다른 페이지 호출, 파라미터 전달
<form> 태그를 통해 <input>에 값을 넣고 <button>을 눌러서 제출하고,
result.jsp에 값을 전달하고 이동한다.
x = 1, y = 10을 전달한 것을 볼 수 있다.
이렇게 하면, result.jsp에는 아래와 같이 파라미터가 추가되어 전달된다.
Request, Response 객체
대표적인 JSP의 내장 객체로 request와 response, out이 있다.
out은 웹페이지 화면에 출력하는 것이고,
request와 response는 각각 요청, 응답이다.
result.jsp파일에서는 위의 url의 쿼리파라미터 값들을 이용할 수 있다.
int value = request.getParameter("key"); // key : 키 , value : 값
따라서 아래와 같이 전달받은 파라미터 x=1 & y=10 값을 얻어올 수 있다.
(/result.jsp? x=1&y=10)
화면에 출력하지 않고, 자바 코드만 실행
jsp 파일을 호출했을 때, 호출받은 jsp파일에서 로직을 수행하고 바로 값을 반환해 줄 수 있다.
즉, jsp파일을 웹페이지 화면에 띄우지 않고 서버 측에서 연산만 수행하는 것이다.
(result.jsp)
result.jsp에서는 요청값으로 연산만 수행한 뒤, result2.jsp에 쿼리파라미터를 담아서 호출한다.
이때, response 객체를 사용한다.
response.sendRedirect(" url ");
해당 url로 redirect 한다.
위의 예제에서는 result2.jsp에 쿼리파라미터로 sum값을 담았다.
(result2.jsp)
이제 result2.jsp에서는 해당 값을 받아서 사용하면 된다.
Table 구성 예제
위에서 간단하게 History (id, lat, lnt, dateTime)이 담긴 List를 불러온다.
이 List의 값들을 table 형식으로 출력하는 예제이다.
위와 같이 html 코드 사이사이에 <%= %> 태그를 이용해 JSP 코드를 끼워 넣을 수 있다.
심지어 위쪽의 for문에서 중괄호를 열고 %> 태그를 닫고도,
아래쪽에서 다시 <% } %>로 중괄호를 닫을 수도 있다.
이렇게 JSP를 사용하여 여러 개의 간단한 코드들을 반복적으로 이용하여 간단한 웹페이지를 만들 수 있다.
'Front-End > Web Views' 카테고리의 다른 글
[JSP] JSP, 자바 웹프로젝트 환경설정 (IntelliJ, gradle, Tomcat) (0) | 2023.08.01 |
---|---|
[Thymeleaf] 기본 문법 (연산, 반복, if, 블록) (0) | 2023.05.04 |
[Thymeleaf, html, bootstrap] 자주 사용하는 태그 모음 (0) | 2023.04.22 |
[Thymeleaf] 기본객체, 유틸리티 객체 (0) | 2023.04.21 |
[Thymeleaf] 기본 문법 (text, 변수표현, URL 링크, 리터럴) (0) | 2023.04.20 |