22.02.18 JSP 기초

최고고·2022년 2월 18일
0
post-custom-banner

JSP (Java Server Page)

-서블릿보다 더 간편하게 웹 어플리케이션을 개발하기 위해 등장한 언어
-자바로 서버 페이지(웹서버에 실행되는 페이지)를 작성하기 위한 언어
-HTML+JSP태그로 구성(HTML내에 java코드로 작성)
-확장자 .jsp
-서블릿으로 변환되고 클래스로 만들어져서 실행하게됨
-동적으로 작동하여 응답은 HTML로 함

  • 작동과정
    처음작동할때는 서블릿 컨테이너가 jsp->servlet->class->HTML->톰캣메모리 저장
    다음부터는 톰캣메모리에 저장된 클래스파일 실행

-프로젝트\src\main\webapp에 파일 생성됨

서블릿은 자바코드 내부에 HTML 코드가 들어가는 구조
JSP는 반대로 HTML 문서 내부에 자바 코드가 들어가는 구조

-서블릿 컨테이너가 만든 서블릿 경로 :
이클립스 워크스페이스.metadata . plugins\ org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\JSP\org\apache\jsp

JSP 구성요소 4가지

  • <% %> Scriptlet
    -자바 문법을 쓰는 공간 / 제일많이 사용
    -서버에 보낸 데이터에 따라 값이 바뀔 수 있는 변수에 저장된 내용들을 출력할때 사용-자바 언어, HTML은 변화가 없는 단순 상수값을 출력할 때 사용(정적인페이지)
    -주석 두가지 /* */, //
  • <%= %> Expression
    -웹페이지에 결과값을 보여줄 수 있다.
    -계산식이나 변수, 메소드의 결과 값 보여줄 수 있다.
    -세미콜론 안씀 => out.print();의 매개변수가 되기때문
    -문자열형태
  • < %@ %> 지시자 Directive
    페이지 속성을 지정함
    < %@ page 속성="값"%> : 페이지 전반의 환경설정
    contentType-페이지의 MIME타입결정, 웹서버가 브라우저에 전송할 페이지가 html일경우 contentType="text/html"(기본값) 서블릿에서 response.setContentType("text/html") / 이때 charset속성을 지정할 수 있다. page contentType="text/html;charset=인코딩방식"
    errorPage(에러시 보여줄페이지설정)
    import, language(생략가능) 등
    < %@ include file="URL" %> : 현재페이지에 다른 파일의 내용 삽입시
    < %@ taglib %> : 태그 라이브러리에서 태그를 꺼내와 사용하는 기능
  • <%! %> 선언문 Declaration
    -변수, 메소드 정의
    -사용빈도 낮다

서블릿 컨테이너가 해석한 서블릿코드에서 확인해 봤을 때
선언문에 선언한 변수는 서블릿클래스에서 필드로 선언되어있고 (전역변수)
스크립틀릿 변수는 지역변수 _jsService()메소드 내 지역변수로 선언되어있다 !

실습

1행 10열의 테이블 생성 데이터 1부터 값넣기

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<table border="1">
		<tr>
			<%
			for (int i = 1; i <= 10; i++) {
			%>
			<td><%=i%></td>
			<% } %>
		
		<tr>
	</table>

</body>

현재시간 출력하는 페이지 만들기 import속성

<%@page import="java.util.Calendar"%>
<%@page import="java.util.GregorianCalendar"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
	/* 캘린더만들기 현재시간 출력 */
	GregorianCalendar cal = new GregorianCalendar();
	
	
	%>
	<%= cal.get(Calendar.YEAR)%>년
	<%= cal.get(Calendar.MONTH)+1%>월
	<%= cal.get(Calendar.DATE) %>일
	<%= cal.get(Calendar.HOUR)%>시
	<%= cal.get(Calendar.MINUTE)%>분
	<%= cal.get(Calendar.SECOND)%>초

</body>
</html>

에러페이지 만들기

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR" errorPage="ex05errorPage.jsp"%>
    //에러났을 때 가는 곳 설정해줌
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h2>2를 0으로 나누면?</h2>
	<%=
		2/0
	
	%>
</body>
</html>

아래는 에러났을 때 나오는 페이지 파일 만들어줌

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>잠시만 기다려주세요 금방 복구됩니다.</h1>

</body>
</html>

메인페이지, footer페이지, 메인페이지2 생성

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	
	<h1>이곳은 메인페이지입니다.</h1>
	<hr>
		<a href="ex06mainPage2.jsp">메인페이지2가기</a>
	<hr>
	
	<%@ include file="ex06footer.jsp" %>
</body>
</html>

footer 페이지인 ex06footer.jsp 생성

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<p>대한민국 어딘가에 위치한 빌딩 </p>
	<p>email : 이메일주소 입력~~~!</p>
	<p>000-000-0000</p>
</body>
</html>

메인페이지에서 메인페이지2가기 a태그 클릭시 이동하는 ex06mainPage2.jsp 파일 생성

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	
	<h1>이곳은 메인페이지2입니다.</h1>
	
	<hr>
		<a href="ex06mainPage.jsp">메인1로가기</a>
	<hr>
	
	
	<%@ include file="ex06footer.jsp" %>
</body>
</html>
post-custom-banner

0개의 댓글