JSP Servlet Java Server Pages 기본
1. JSP(Java Server Pages)
- HTML내에 Java 코드를 작성하고 웹 서버에서 웹 페이지를 생성하여 웹 브라우저에 돌려주는 자바를 기반으로 한 스크립트 언어
- .jsp 확장자를 가짐
- 동적으로 작동하여 응답은 html을 이용함
- jsp → Servlet(.java) → 클래스(.class) → html로 변환되어 실행
※ 실제 자동 생성되는 servlet과 .class
2. JSP 필요성
- Servlet의 특징
자바 코드로 구현한 후 컴파일하고 배포해야 한다.
코드가 수정되면 다시 컴파일하고 배포해야 한다.
HTML 코드를 Servlet 클래스 내에서 문자열로 작성해야 한다.
프로그램이 복잡해지면 출력되는 HTML 페이지를 상상하기 어렵다.
- Servlet, JSP 비교
3. JSP 구성요소
- 스크립트릿(Scriptlet) : <% %>, JSP 페이지 내부에 Java 소스 코드를 삽입
- 표현식(Expression) : <%= %>, 출력결과(html 요소 내)에 값을 넣기 위해 사용
- 선언문(Declaration) : <%! = %>, JSP 페이지 내부에 자바 메소드, 전역 변수를 선언
- 지시자(Directive) : <%@ %>, JSP에 대한 설정 정보 또는 JSP 페이지에 다른 문서를 포함시킬 때 사용
(Web container가 JSP page를 Servlet class로 변환할 때 필요한 정보를 기술하기 위해 사용)
page 지시자 : JSP 페이지의 전체적인 환경설정을 할 때 사용
include 지시자 : 현재 페이지에 다른 파일의 내용을 삽입할 때 사용
taglib 지시자 : 태그 라이브러리에서 태그를 가져와 사용할 수 있는 기능 제공
※ page 지시자
※ include 지시자
※ taglib 지시자
- 주석 <%-- --%> : 프로그램 설명, 테스트 목적으로 사용되는 태그
▶ 연습
<%@ 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>
<%
int num1 = 10;
int num2 = 20;
int sum = num1 + num2;
System.out.print(sum);
%>
<!-- Scriptlet 안에서 벗어난 경우 -->
int sum = num1 + num2;
<br>
<%= sum %>
</body>
</html>
▶ 예제
1~100까지 합을 구하여 화면에 출력하기
<%@ 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 sum = 0;
for (int i = 1; i < 101; i++){
sum += i;
}
%>
1~100까지의 합 : <%= sum %>
</body>
</html>
▶ 예제
방이 10개인 테이블을 만들어 화면에 출력하기
<%@ 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 = 1; i < 11; i++) {%>
<td><%= i %></td>
<%} %>
</tr>
</table>
</body>
</html>
▶ 예제
HTML에서 이름을 입력 받아 JSP에서 입력한 이름을 출력하기
※ action 속성에 .jsp (형식까지 적기)
※ JSP 파일은 내장 객체로 request 객체를 포함하고 있음
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Ex03PrintName.jsp">
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
<%@ 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>
<%
String name = request.getParameter("name");
%>
입력한 이름 : <%= name %>
</body>
</html>
▶ 예제
HTML에서 정수 2개와 연산기호를 입력 받아 JSP에서 연산 결과를 출력하기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Ex04Return.jsp">
<input type="text" name="num1"> <br>
<input type="text" name="num2"> <br>
<select name="op">
<option>+</option>
<option>-</option>
<option>*</option>
<option>-</option>
</select>
<input type="submit" value="계산">
</form>
</body>
</html>
<%@ 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 num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
String op = request.getParameter("op");
int result = 0;
if (op.equals("+")) {
result = num1 + num2;
} else if (op.equals("-")) {
result = num1 - num2;
} else if (op.equals("*")) {
result = num1 * num2;
} else if (op.equals("/")) {
result = num1 / num2;
}
%>
<%= num1 %> <%= op %> <%= num2 %> = <%= result %>
</body>
</html>
▶ 예제
절댓값을 구하는 메소드 abs를 작성하고 사용해보기
<%@ 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>
<%!
public int abs(int num){
int result = num>=0 ? num : -(num);
return result;
}
%>
5의 절댓값 : <%= abs(5) %> <br>
-5의 절댓값 : <%= abs(-5) %>
</body>
</html>
▶ 예제
num1, num2, sum 변수를 선언하고 정수의 홀짝을 판별하는 메소드를 작성하기
sum이 짝수인지, 홀수인지 화면에 출력하기
<%@ 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 num1 = 10;
int num2 = 21;
int sum = num1 + num2;
%>
sum은 <%= isOdd(sum) %>입니다.
<%!
public String isOdd(int num) {
String result = num%2==0 ? "짝수" : "홀수";
return result;
}
%>
</body>
</html>
예제
지시자를 이용해 오류페이지를 바꿔보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- page 지시자 추가 : 오류가 발생했을 때 띄워줄 수 있는 새로운 페이지 연결 -->
<%@ page errorPage="error.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
2를 0으로 나누면?
<%= 2/0 %>
</body>
</html>
<%@ 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>
<img src="https://previews.123rf.com/images/djvstock/djvstock1710/djvstock171000838/87280073-%ED%8C%8C%EB%9E%80%EC%83%89-%EB%B0%B0%EA%B2%BD-%EC%9C%84%EC%97%90%EB%8F%84-%ED%91%9C%EC%A7%80%ED%8C%90-%EC%98%A4%EB%A5%98-404%EC%9D%98-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%99%94%EB%A0%A4%ED%95%9C-%EB%94%94%EC%9E%90%EC%9D%B8-%EB%B2%A1%ED%84%B0-%EC%9D%BC%EB%9F%AC%EC%8A%A4%ED%8A%B8-%EB%A0%88%EC%9D%B4-%EC%85%98.jpg">
</body>
</html>
▶ 예제
include 지시자를 사용하여 a태그로 연결된 두 개의 페이지 내용 하단에
Eat Sleep Code Repeat
onlyPractice
출력하기
<%@ 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>
<h3>메인 페이지</h3> <br><br><br>
<a href="Ex08subPage.jsp">서브 페이지로 이동</a> <br><br><br>
<%@ include file="Ex08footer.jsp" %>
</body>
</html>
<%@ 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>
<h3>서브 페이지</h3> <br><br><br>
<a href="Ex08mainPage.jsp">메인 페이지로 이동</a> <br><br><br>
<%@ include file="Ex08footer.jsp" %>
</body>
</html>
<%@ 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 align="center">
Eat Sleep Code Repeat <br>
onlyPractice
</body>
</html>
'JSP Servlet' 카테고리의 다른 글
JSP Servlet 쿠키, 세션 (Cookie, Session) (0) | 2023.02.07 |
---|---|
JSP Servlet 내장 객체 (Implicit Object) (0) | 2023.02.04 |
JSP Servlet 데이터 전송 방식 Get, Post (0) | 2023.01.28 |
JSP Servlet 데이터 전송 form 태그, input 태그 (0) | 2023.01.27 |
JSP Servlet Print, Table (0) | 2023.01.26 |
댓글