목차
태그
#JAVA
#JSP
JSP 기초
2021년 11월 27일 01:33

이 글은 골든래빗 출판사로부터 책을 제공받아 작성했습니다.
http://www.yes24.com/Product/Goods/105016218 (저는 yes24를 좋아합니당^__^)
어제 기분좋게 책을 받고 처음부터 끝까지 훑어봤다
시작하기에 앞서 간단한 평이다
JSP에 대해서 정말 자세하게 알려주는 책이다. 또한 웹 개발에 있어서 기초적인 부분들을 정말 잘 설명해주는 책이다. 내가 부족했던 부분까지 채워줄 수 있었고, jsp안에서 정말 많이 쓰이는 EL태그와 JSTL에 대해 정리가 잘되어있었다. JSP부터 시작해 MVC 패턴으로 넘어오는 방식이 인상깊었다.
내가 앞으로 정리해볼것은 JSP기초, EL태그, JSTL을 간단하게 정리해볼것이다.
Chaper 1-4 스크립트 요소
- 선언부 (Declaration)
- 멤버 변수, 메서드를 선언
<%! 멤버 변수, 메서드 %>
- 스크립틀릿 (Scriptlet)
- 요청을 받을 때 실행돼야 할 자바 코드를 작성하는 영역
- 서블릿으로 변환 시 _jspService() 메서드 내부에 기술된다
- 즉, 다른 메서드를 선언할 수 없다
<% 자바 코드 %>
- 표현식 (Expression)
- 변수의 값을 웹 브라우저 화면에 출력할 때 사용
<%= 자바 표현식 %>
내가 따로 작성한 예제
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP EX</title>
</head>
<body>
<!-- HTML 주석 : 소스보기에서 보인다 -->
<%-- JSP 주석 : 소스보기에서 보이지 않는다 --%>
<%
// java 문법 시작 --> java 주석
// scriptlet
// - 메인 함수에 정의 하는 느낌
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
%>
<b>합계 : </b>
<input type="text" value="<%=sum%>">
<hr>
<%!
// 선언문 Declaration
private int num = 100;
public String getHelloWorld() {
return "Hello World!";
}
%>
<%-- 표현식 Expression --%>
<%=getHelloWorld()%>
<hr>
<%=num + 200%>
</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 nickname = request.getParameter("nickname");
String hobby = request.getParameter("hobby");
String animal = request.getParameter("animal");
String[] foodArr = request.getParameterValues("food"); // 선택 항목이 여러 개일 때 getParameterValues();
String fruit = request.getParameter("fruit");
%>
<table border=1>
<tr>
<th>별명</th>
<td><%= nickname %></td>
</tr>
<tr>
<th>취미</th>
<td><%= hobby %></td>
</tr>
<tr>
<th>좋아하는 동물</th>
<td><%= animal %></td>
</tr>
<tr>
<th>선호하는 음식</th>
<td>
<%
if(foodArr != null){
String result = "";
for (String food : foodArr) {
result += food + ", ";
}
// 맨 뒤에 붙은 , 제거
result = result.substring(0, result.length() - 2);
out.print(result);
}
%>
</td>
</tr>
<tr>
<th>좋아하는 과일</th>
<td><%= fruit %></td>
</tr>
</table>
</body>
</html>
Chapter 07 액션 태그
액션 태그 : JSP의 표준 태그
특징
- XML 문법을 따름
- 반드시 종료 태그를 사용
- 액션 태그 사이에 주석을 사용하면 에러남
크게 4가지의 종류
- jsp:include : 외부 파일을 현재 파일에 포함
- jsp:forward : 다른 페이지로 요청을 넘김
- jsp:userBean, jsp:setProperty, jsp:getProperty : 자바빈을 생성하고 값을 설정, 추출
- jsp:param : 다른 페이지로 매개변수 전달 (include, forwerd와 함께 사용)
이제 아래에 하나씩 설명
jsp:include
- 중요한 부분 - !페이지 자체를 현재 페이지에 포함시킨 후 컴파일 진행!
- 실무에서 주로 템플릿으로 많이 쓰인다
- 항상 있어야되는 부분을 나눈뒤 페이지 자체를 포함시킨뒤 뿌려준다
개인적으로 작성한 예제
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- <jsp:include와 같은거임 -->
<%@ include file="../WEB-INF/ex/templet/header.jsp" %>
<%@ include file="../WEB-INF/ex/templet/sideNav.jsp" %>
<table>
<thead>
<tr>
<th>#</th>
<th>title</th>
<th>content</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>안녕하세요</td>
<td>안녕하세요 초보 개발자입니다</td>
</tr>
</tbody>
</table>
<%@ include file="../WEB-INF/ex/templet/footer.jsp" %>
</body>
</html>
jsp:forward
얘는 예제 먼저 보는게 편하다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
pageContext.setAttribute("pAttr", "김유신"); // 결과값 안넘어감
request.setAttribute("rAttr", "계백"); // 결과값 넘어감
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:forward page="../WEB-INF/ex/templet/main.jsp" />
</body>
</html>
- 포워드된 페이지는 이전 페이지와는 서로 다른 페이지이므로, 페이지별로 생성되는 page영역은 공유되지 않는다
- 한편 포워드는 요청을 전달하므로 request영역에는 공유된다
jsp:useBean
, jsp:setProperty
, jsp:getProperty
<jsp:useBean id="자바빈 이름" class="사용할 패키지와 클래스명" scope="저장될 영역" />
- id : 자바빈 객체의 이름 지정
- class : 자바빈 객체의 실제 패키지명과 클래스명을 지정
- scope : 자바빈이 저장될 내장 객체 영역을 지정
<jsp:setProperty name="자바빈 이름" property="속성명(멤버 변수)" value="설정할 값" />
- name : 자바에서 클래스안, 인스턴스 변수를 지정하는 것과 같음 / 어떤 자바빈인지
- property : 자바빈의 멤버 변수명 지정 / cv 생성
- value : 멤버 변수 설정 값 / cv 값 설정
<jsp:getProperty name="자바빈 이름" property="속성명(멤버 변수)" />
예제
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- 자바빈(클래스) 생성 --%>
<jsp:useBean id="person" class="common.Persom" scope="request" />
<%-- 속성(변수) 지정 --%>
<jsp:setProperty property="person" name="name" value="홍채민" />
<jsp:setProperty property="person" name="age" value="19" />
<%-- 속성(변수) 읽기 --%>
<h4>이름 : <jsp:getProperty property="person" name="name" /></h4>
<h4>나이 : <jsp:getProperty property="person" name="age" /></h4>
</body>
</html>