고래씌

[JSP] 3-1. JSP (스크립팅 원소, page 지시어) 본문

Server/JSP과 Servlet

[JSP] 3-1. JSP (스크립팅 원소, page 지시어)

고래씌 2023. 12. 5. 15:56

1. 실습준비

 

=> WebContent\WEB-INF\classes   임

 

 

 

 

 

2. JSP(Java Server Page)

: JSP란, HTML형식 내에서 자바코드를 쓸 수 있는 자바언어로 서블릿(자바코드)에서 응답화면을 구현했던 복잡함을 보다 간단하게 해결가능하다.


=> 즉, JSP의 가장 큰 장접은 Servlet에서는 비즈니스 로직처리에만 집중하고 프레젠테이션 로직 처리는 JSP에서 집중하게끔 분리할 수 있다는 것

 

 

▶ 선언문 : <%! %> 
멤버변수와 메소드 등을 선언하기 위해 사용

 

▶ 스클립틀릿 : <% %>

JSP에서 자바 코드를 기술하기 위한 제일 기본적인 표현법

 

▶ 표현식(출력식) : <%= %>

자바에서 작성한 값 혹은 메소드 호출결과를 "출력"하기 위해 사용

 

 

■ index.html 파일

 

 

■ 01_ScriptingElement.jsp 파일

 

1) 스크립팅 원소

- 스클립틀릿 : 이 안에 일반적인 자바 코드를 작성(변수 선언 및 초기화, 제어문 등..)

 

 

- 화면으로 출력하고자 한다면
스클립틀릿을 이용해서 출력 가능 : <% out.println(sum); %> 
표현식(출력식) 으로도 출력 가능 : <%= sum %>

 

 

2) 배열 사용

 

<h5>배열의 길이 : <%= names.length %></h5>

<%= names %> <br>

<%= String.join(", ", names) %>

 

 

 

3) 반복문을 통해 html요소를 반복적으로 화면에 출력 가능

 

 

3. 지시어(Directive) <%@ page/include/taglib 속성="속성값" ... %>

- page 지시어 : 현재의 jsp페이지를 처리하는데 필요한 각종 속성을 기술하는 부분

 

 

language : 사용할 스크립트 언어 유형을 지정
contentType : 웹 브라우저가 받아볼 해당 페이지의 형식 및 인코딩 방식 지정
pageEncoding : jsp 파일에 기록된 자바코드의 인코딩방식 지정
import : 자바의 import와 같은 의미로 사용
errorPage : 해당 jsp상에서 오류가 발생했을 경우 보여줄 에러페이지의 경로 지정
isELIgnored : jsp상에서 EL표현식을 사용할지 여부를 지정(기본값 false)

 

 

 

=> 맨 위에 <%@ page import ~ %> 에 필요한 것을 import하여 작성한 결과(ArrayList, Date) body 태그에 ArrayList와 Date는 사용할 수 있지만, HasMap은 import하지 않아 에러가 발생한다.

 

 

 

▶ 에러 페이지에 해당 페이지로 이동하여 출력하고 싶다면...?

 

=> 에러가 발생하면 error500.jsp로 이동하도록 경로 설정

 

 

■ error500.jsp 파일

 

=> 에러가 발생하면 다음과 같이 화면이 이동하는 것 확인

 

 

■ 02_DirectivePage.jsp 파일

<%@ page import="java.util.ArrayList, java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error500.jsp"%>
    
    <!-- 에러가 발생한다면 error500.jsp 파일이 열릴 것임 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h1>page 지시어</h1>
	<%
		// AraayList 사용
		// 지시어 부분에 import="java.util.AraayList"를 반드시 추가해야한다.
		ArrayList<String> list = new ArrayList<>();
		list.add("Servlet");
		list.add("JSP");
		
		Date today = new Date();
		
		// 추가하지 않은 클래스 사용시 에러 발생.
		// HashMap map = new HashMap();
	%>
	
	<p>
		리스트의 길이 : <%= list.size() %> <br>
		0번 인덱스의 값 : <%= list.get(0) %> <br>
		현재 날짜 및 시간 : <%= today %>
	</p>
	
	

</body>
</html>

 

 

 

▶ 404에러와 500에러로 각각 이동하게 하고 싶다면...?

 

=> web.xml 파일에 다음과 같은 코드 추가

 

 

■ web.xml 파일

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  
  <!-- 
  	* web.xml 파일
  	- 배포서술자(DD, Deployment Descriptor)라고 해서 웹 애플리케이션의
  	  기본적인 설정을 위해 작성하는 파일
  	- 현재 웹 애플리케이션을 구동시키는 서버를 start할 때 가장 먼저 읽혀지는 파일
  	- 개발자가 web.xml을 수정하지 않고도 개발 및 운영이 가능하지만 규모가 커지고
  	  다양한 Filter, Servlet, Wrpper등을 사용하게 되면 직접 수정을 해야하는 경우도 많다.
   -->
  
  <display-name>1_Servlet</display-name>
  <welcome-file-list>
  	<!-- 
  		* welcome-file : 처음에 url로 현재 어플리케이션의 루트경로(contextpath)로 요청시
  		제일 먼저 보여지게 되는 메인페이지를 지정해 놓는것
  		=> 각자 본인컴퓨터에 구축해놓은 서버로 요청을 보내기(현재 서버의 ip주고 127.0.0.1 = localhost)
  		=> 서버의 포트번호 : 8081로 설정
  		-> 서버내의 구동중인 어플리케이션의 루트경로 context root : servlet
  		=> 합치면 localhost:8081/servlet 으로 요청시 WebContent바로 아래에 있는 index파일이 서비스
  	 -->
  
  	
  
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <error-page>
  	<error-code>500</error-code>
  	<location>/views/error500.jsp</location>
  </error-page>
  
  <error-page>
    	<error-code>404</error-code>
  		<location>/views/error404.jsp</location>
  </error-page>
</web-app>

'Server > JSP과 Servlet' 카테고리의 다른 글

[JSP] 피자주문 실습문제  (1) 2023.12.06
[JSP] 3-2. include 지시어  (0) 2023.12.06
[Servlet] 1-2. Post 방식으로 전달 실습  (0) 2023.12.05
[Servlet] 1-1. GET 방식 전달 실습  (0) 2023.12.05
[Servlet] 0. 서버 설정  (0) 2023.12.05