본문 바로가기

Programming/국비학원

221012 - JSTL

https://romanticdeveloper.tistory.com/45

포워딩, 바인딩 개념 복습
  • 포워딩

서블릿 간 / 서블릿 - JSP 간 정보 공유, 요청 전달 등 연동 작업이 필요할 때 사용

 

 

 

  • 웹 브라우저를 거쳐 전송되는 방법

1) redirect

response.sendRedirect("서블릿 매핑주소/JSP");
//response.sendRedirect("주소?전송할 데이터의 이름=값"); //GET 방식 데이터 전달 가능

2) refresh

response.addHeader("Refresh", "경과시간(초);url="url")

3) location

PrintWriter out = response.getWriter();
out.print("<script type='text/javascript'>");
out.print("location.href='url';");
out.print("</script>");

 

 

 

  • 웹 브라우저를 거치지 않고 바로 전송되는 방법

1) dispatch

위 방법들과 달리 클라이언트에서 포워딩이 되었는지 알 수 없다. (주소 변경되지 않음)

RequestDispatcher dispatch = request.getRequestDispatcher("url");
dispatch.forward(request, response);

 

 

 

 

  • 바인딩

웹 프로그램이 실행되었을 때 서블릿 관련 객체에 데이터 저장 후 다른 서블릿/JSP에서 공유

대량의 데이터를 공유/전달 시 사용

 

객체에 데이터를 저장한 후 다른 서블릿이나 JSP로 전송할 때에 포워딩 기능 필요

=> dispatch 포워딩 방식으로만 바인딩 사용 가능 (웹 브라우저를 거쳐서 전달되는 다른 포워딩 방법들 => 처음 요청 시에 받은 객체와, 다시 웹 브라우저를 거쳐 요청하는 객체가 서로 다른 객체이기 때문)

 

 

  • 바인딩 시 사용하는 서블릿 관련 객체 & 메소드

HttpServletRequest => 요청 후 응답 전까지 접근 가능

HttpSession => 같은 브라우저 내에서만 접근 가능

ServletContext => 어플리케이션 전체에서 접근

 

 

관련 메소드 기능
setAttribute(String name, Object obj) 자원(데이터)을 각 객체에 바인딩
getAttribute(String name) 각 객체에 바인딩된 자원(데이터)을 name으로 가져옴
removeAttribute(String name) 각 객체에 바인딩된 자원(데이터) 중 name 제거

 

 

 

 

https://prinha.tistory.com/entry/JSP-%EB%82%B4%EC%9E%A5%EA%B0%9D%EC%B2%B4Implicit-Object%EC%99%80-%EC%98%81%EC%97%ADScope

JSP 기본 내장객체 복습

1. request 객체 (javax.servlet.http.HttpServletRequest)
 : 웹 브라우저의 요청 정보를 저장하고 있는 객체

요청된 파라미터의 값 외에도 웹 브라우저와 웹 서버의 정보를 가져올 수 있음

 

입력폼에 입력한 사용자의 요구사항을 얻어내는 요청 메소드
String getParameter(name) 파라미터 변수 name에 저장된 변수 값을 얻어내는 메소드
String[] getParameterValues(name) 파라미터 변수 name에 저장된 모든 변수 값을 얻어내는 메소드
Enumeration getParameterNames() 요청에 의해 넘어오는 모든 파라미터 변수를 java.util.Enumeration 타입으로 리턴

 

웹 브라우저, 웹 서버 및 요청 헤더의 정보를 가져오는 메소드
String getProtocol() 웹 서버로 요청 시, 사용중인 프로토콜 리턴
String getServerName() 웹 서버로 요청 시, 서버의 도메인 이름 리턴

 

웹 서버-사용자의 요구사항을 얻어내는 요청 메소드
String getMethod() 웹 서버로 요청시, 요청에 사용된 요청 방식(GET/POST/PUT 등)을 리턴
String getQueryString() 웹 서버로 요청시, 요청에 사용된 QueryString을 리턴
String getRequestURI() 웹 서버로 요청시, 요청에 사용된 URL로부터 URI값을 리턴
String getRemoteHost() 웹 서버로 정보를 요청한 웹 브라우저의 호스트 네임을 리턴
String getRemoteAddr() 웹 서버로 정보를 요청한 웹 브라우저의 IP주소를 리턴
String getServerPort() 서버의 Port 번호를 리턴
String getContextPath() 해당 JSP페이지가 속한 웹 어플리케이션의 컨텍스트 경로를 리턴
String getHeader(name) HTTP 요청 헤더(header)의 헤더이름(name)에 해당하는 속성 값을 리턴
Enumeration getHeaderNames() 웹 서버로 요청시, HTTP 요청 헤더(header)에 있는 모든 헤더네임을 리턴

 

 

 

2. response 객체 (javax.servlet.http.HttpServletResponse)

: 웹 브라우저의 요청에 대한 응답 정보를 저장하는 객체

 

reponse 객체의 메소드
void setHeader(name, value) header 정보의 값을 수정
void setContentType(type) 웹 브라우저의 요청 결과를 보일 페이지의 contentType을 설정
void sendRedirect(url) 페이지 이동-리다이렉트

 

 

 

3. out 객체 (javax.servlet.jsp.JspWriter)

: 출력 스트림 객체

 

out 객체의 메소드
boolean isAutoFlush() 출력 버퍼가 다 찼을 때 처리여부를 결정
int getBufferSize() 전체 출력 버퍼의 크기를 리턴
int getRemaining() 현재 남아있는 출력 버퍼의 크기를 리턴
void clearBuffer() 출력 버퍼에 저장되어있는 내용을 비움
String println(str) 주어진 내용을 출력,  이때 줄 바꿈 적용X
void flush() 출력 버퍼의 내용을 웹 브라우저에 전송하고 비움
void close() 출력 버퍼의 내용을 웹 브라우저에 전송하고 출력 스트림을 닫음

 

 

 

4. pageContext 객체 (javax.servlet.jsp.PageContext)

: JSP페이지에 대한 정보를 저장하고 있는 객체

 

pageContext 객체의 메소드
ServletRequest getRequest() request 객체를 얻어냄
ServletResponse getResponse() reponse 객체를 얻어냄
JspWriter getOut() out 객체를 얻어냄
HttpSession getSession() session 객체를 얻어냄
ServletContext getServletContext() application 객체를 얻어냄
Object getPage() page 객체를 얻어냄
ServletConfig getServletConfig() config 객체를 얻어냄
Exception getException() exception 객체를 얻어냄

 

 

 

5. session 객체 (javax.servlet.http.HttpSession)

: 하나의 웹 브라우저 내에서 정보 유지하기 위한 세션 정보를 저장하고 있는 객체
=> 웹 브라우저(클라이언트) 당 1개만 할당됨 -> 주로 회원관리 시스템에서 사용자 인증에 관련된 작업 수행

 

session 객체의 메소드
String getId() 해당 웹 브라우저에 대한 고유한 세션 ID를 리턴
long getCreation Time() 해당 세션이 생성된 시간을 리턴
long getLastAccessedTime() 마지막 접근 시간을 리턴
void setMaxInactiveInterval(time) 세션 유지 시간을 지정
int getMaxInactiveInterval() 기본 값은 30분으로 세션 유지 시간을 리턴
boolean isNew() 새로 생성된 세션의 경우 true 값을 리턴
void invalidate() 세션 무효화

 

 

 

6. application 객체 (javax.servlet.ServletContext)

: 웹 어플리케이션 Context의 정보를 저장하고 있는 객체
웹 어플리케이션당 1개의 객체가 생성 -> 주로 방문자 카운트와 같은 하나의 웹 어플리케이션에서 공유하는 변수에 사용

application 객체의 메소드
String getServerInfo() 웹 컨테이너의 이름과 버전을 리턴
String getMimeType(fileName) 지정한 파일의 MIME 타입을 리턴
String getRealPath(path) 지정한 경로를 웹 어플리케이션 시스템상의 경로로 변경하여 리턴
void log(message) 로그 파일에 message를 기록

 

 

 

7. config 객체 - (javax.servlet.ServletConfig)

: JSP페이지에 대한 설정 정보를 저장하고 있는 객체

서블릿이 초기화되는 동안 참조해야 할 정보 전달

컨테이너당 1개의 객체가 생성

 

config 객체의 메소드
Enumeration getInitParameterNames() 모든 초기화 파라미터 이름을 리턴
String getInitParameter(name) 이름이 name인 초기화 파라미터의 값을 리턴
String getServletName() 서블릿의 이름을 리턴
ServletContext getServletContext() 서블릿 ServletContext 객체를 리턴

 

 

 

8. exception 객체 (java.lang.Throwable)

: JSP페이지에서 예외가 발생한 경우에 사용되는 객체

 

exception 객체의 메소드
String getMessage() 발생된 예외의 메세지를 리턴
String toString() 발생된 예외 클래스명과 메세지를 리턴
String printStackTrace() 예외발생시 예외가 발생한 곳을 추적함

 

 

 

9. page 객체 (java.lang.Object page)

: JSP 페이지를 구현한 자바 클래스 객체
웹 컨테이너는 자바만을 스크립트 언어로 지원 => page객체는 현재 거의 사용되지않음

 

 

  • 내장객체 스코프

1. page 영역
  - 한 번의 웹 브라우저(클라이언트)의 요청에 대해 하나의 JSP페이지가 호출
  - 웹 브라우저의 요청이 들어오면 이때 단 한 개의 페이지만 대응이 된다.
  - 따라서 page 영역은 하나의 페이지 내에서만 객체 공유가 가능하다.
  - page영역은 pageContext 객체를 사용한다.
 
2. request 영역
  - 한 번의 웹 브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응
  - 웹 브라우저의 한 번의 요청에 한 개의 페이지만 요청됨 / 같은 request 영역이면 두 개의 페이지가 같은 요청 공유 가능
  - 같은 request영역 => include 액션 태그, forward 액션 태그를 사용 시 request 객체를 공유하게 됨
  - 주로 페이지 모듈화에 사용됨
 
3. session 영역
  - 하나의 웹 브라우저당 1개의 session객체가 생성
  - 같은 웹 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유함 -> 주로 회원관리 회원인증에서 사용
 
4. application 영역
  - 하나의 웹 어플리케이션당 1개의 application객체가 생성
  - 같은 웹 어플리케이션에 요청되는 페이지들은 같은 객체를 공유함

 

 

 

JSTL (JSP Standard Tag Library)

: 자바 코드 대체하기 위해 만든 태그 라이브러리
=> 자주 사용될 수 있는 커스텀 태그들을 모아서 표준으로 모아놓은 태그 라이브러리

 


변수 선언, 조건식, 반복문 기능은 자바코드 이용해 구현해왔음 (스크립릿, 표현언어)
=> 코어 라이브러리 사용 시 이러한 자바 기능 대체 가능 (모든 기능 X) 

 

 

https://sjh836.tistory.com/136

  • 종류
라이브러리명 접두어 주요 기능 URI
코어 c 변수 지원, 제어문, 페이지 관련 처리 http://java.sun.com/jsp/jstl/core
함수 fn collection 처리, String 처리 http://java.sun.com/jsp/jstl/fuctions
포매팅 fmt 포맷 처리, 국제화 지원 http://java.sun.com/jsp/jstl/fmt
데이터베이스 sql DB관련 CRUD 처리 http://java.sun.com/jsp/jstl/sql
XML x XML관련 처리 http://java.sun.com/jsp/jstl/xml

 

 

 

  • 사용법

1. JSTL 라이브러리 다운로드, lib 폴더에 붙여넣기
jakarta.servlet.jsp.jstl-2.0.0.jar
jakarta.servlet.jsp.jstl-api-2.0.0.jar


2. JSP 내 커스텀 사용 선언
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

 

 

 

JSTL 코어 라이브러리

출처 : JSPStudy.com

 

  • <c:set> : 변수 선언

<c:set var="변수명" value="변수값" scope="스코프영역" /> 

 

<c:set var="count" value="10" /> 

=> (java) int count = 10
=> (JSP) pageContext.setAttribute("count",10)


※ scope = (page(디폴트), request, session, application) 

 

 

 

1)

  • member1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ////
<% request.setCharacterEncoding("utf-8"); %>
<c:set var="id" value="hong" scope="page" /> <%-- String id = hong --%> ////
<c:set var="name" value="홍길동" scope="page" /> ////
<c:set var="age" value="50" scope="page" /> ////
<c:set var="weight" value="70" scope="page" /> ////
<c:set var="height" value="180" scope="page" /> ////
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원정보 출력창</title>
</head>
<body>
	<table border="1" align="center">
		<tr align="center" bgcolor="beige">
			<th>아이디</th><th>이름</th><th>나이</th><th>키</th><th>몸무게</th>
		</tr>
		<tr align="center">
			<td>${id }</td> ////
			<td>${name }</td> ////
			<td>${age }</td> ////
			<td>${height }</td> ////
			<td>${weight }</td> ////
		</tr>
	</table>
</body>
</html>

 

 

 

  • login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ////
<c:set var="context" value="${pageContext.request.contextPath }"/> ////
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 창</title>
</head>
<body>
	<form action="result.jsp">
		아이디 <input type="text" name="id"><br>
		비밀번호 <input type="password" name="pw"><br>
		<input type="submit" value="로그인">
		<input type="reset" value="다시 입력"><br>
		<a href="${context }/memberForm.html">회원가입</a> ////
	</form>
</body>
</html>

 

 

※ jakarta.servlet.jsp.JspException cannot be resolved to a type 오류 발생
프로젝트 우클릭 - properties - project facets - runtimes 메뉴에 tomcat 체크 후 apply

 

 

 

2)

  • MemberBean.java
public class MemberBean {

	private String id;
	private String pwd;
	private String name;
	private String email;
	private Date joinDate;

	public MemberBean() {
		
	}

	public MemberBean(String id, String pwd, String name, String email) {
		this.id = id;
		this.pwd = pwd;
		this.name = name;
		this.email = email;
	}

	public Date getJoinDate() {
		return joinDate;
	}

	public void setJoinDate(Date joinDate) {
		this.joinDate = joinDate;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
	
}

 

 

 

  • member2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*, jsp04.ex01.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setCharacterEncoding("utf-8"); %>
<jsp:useBean id="memberList" class="java.util.ArrayList"/> <%-- 액션태그 --%>
<jsp:useBean id="memberMap" class="java.util.HashMap"/>
<% //스크립트릿
	memberMap.put("id","park");	
	memberMap.put("pwd","1234");	
	memberMap.put("name","박지성");	
	memberMap.put("email","park@naver.com");	
	MemberBean mem1 = new MemberBean("son", "1111","손흥민","son@gmail.com");
	MemberBean mem2 = new MemberBean("kim", "2222","김철수","kim@gmail.com");
	memberList.add(mem1);
	memberList.add(mem2);
	memberMap.put("memberList",memberList);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원정보 출력창</title>
</head>
<body>
	<table border="1" align="center">
		<tr align="center" bgcolor="beige">
			<th>아이디</th><th>비밀번호</th><th>이름</th><th>이메일</th>
		</tr>
		<tr align="center">
			<td>${memberMap.id }</td> //표현언어
			<td>${memberMap.pwd }</td>
			<td>${memberMap.name }</td>
			<td>${memberMap.email }</td>
		</tr>
		<tr align="center">
			<td>${memberMap.memberList[0].id }</td>
			<td>${memberMap.memberList[0].pwd }</td>
			<td>${memberMap.memberList[0].name }</td>
			<td>${memberMap.memberList[0].email }</td>
		</tr>
		<tr align="center">
			<td>${memberMap.memberList[1].id }</td>
			<td>${memberMap.memberList[1].pwd }</td>
			<td>${memberMap.memberList[1].name }</td>
			<td>${memberMap.memberList[1].email }</td>
		</tr>
	</table>	
</body>
</html>

 

=> JSTL 사용

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*, jsp04.ex01.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  ////
<% request.setCharacterEncoding("utf-8"); %>
<jsp:useBean id="memberList" class="java.util.ArrayList"/>  //액션태그
<jsp:useBean id="memberMap" class="java.util.HashMap"/>
<% //스크립트릿
	memberMap.put("id","park");	
	memberMap.put("pwd","1234");	
	memberMap.put("name","박지성");	
	memberMap.put("email","park@naver.com");	
	MemberBean mem1 = new MemberBean("son", "1111","손흥민","son@gmail.com");
	MemberBean mem2 = new MemberBean("kim", "2222","김철수","kim@gmail.com");
	memberList.add(mem1);
	memberList.add(mem2);
	memberMap.put("memberList",memberList);
%>
<c:set var="memList" value="${memberMap.memberList }" /> ////
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원정보 출력창</title>
</head>
<body>
	<table border="1" align="center">
		<tr align="center" bgcolor="beige">
			<th>아이디</th><th>비밀번호</th><th>이름</th><th>이메일</th>
		</tr>
		<tr align="center">
			<td>${memberMap.id }</td>
			<td>${memberMap.pwd }</td>
			<td>${memberMap.name }</td>
			<td>${memberMap.email }</td>
		</tr>
		<tr align="center">
			<td>${memList[0].id }</td> ////
			<td>${memList[0].pwd }</td>
			<td>${memList[0].name }</td>
			<td>${memList[0].email }</td>
		</tr>
		<tr align="center">
			<td>${memList[1].id }</td> ////
			<td>${memList[1].pwd }</td>
			<td>${memList[1].name }</td>
			<td>${memList[1].email }</td>
		</tr>
	</table>	
</body>
</html>

 

 

 

 

  • <c:remove> : 변수 제거

<c:remove var="변수명" />

 

 

 

  •  
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setCharacterEncoding("utf-8"); %>
<c:set var="id" value="hong" scope="page" /> <%-- String id = hong --%>
<c:set var="name" value="홍길동" scope="page" />
<c:set var="age" value="50" scope="page" />
<c:set var="weight" value="70" scope="page" />
<c:set var="height" value="180" scope="page" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원정보 출력창</title>
</head>
<body>
	<c:remove var="weight"/> ////
	<c:remove var="height"/> ////
	<table border="1" align="center">
		<tr align="center" bgcolor="beige">
			<th>아이디</th><th>이름</th><th>나이</th><th>키</th><th>몸무게</th>
		</tr>
		<tr align="center">
			<td>${id }</td>
			<td>${name }</td>
			<td>${age }</td>
			<td>${height }</td>
			<td>${weight }</td>
		</tr>
	</table>
</body>
</html>

//
아이디 이름 나이 키 몸무게
hong 홍길동 50

 

 

 

 

  • <c:if> : 조건문

<c:if test="조건식"> 참일때 실행할 문장 </c:if>

 

else문 없음

 

 

 

1)

  • member4.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setCharacterEncoding("utf-8"); %>
<c:set var="id" value="hong" scope="page" /> <%-- String id = hong --%>
<c:set var="name" value="홍길동" scope="page" />
<c:set var="age" value="50" scope="page" />
<c:set var="weight" value="70" scope="page" />
<c:set var="height" value="180" scope="page" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>조건문 실습</title>
</head>
<body>
	<c:if test="${true }">
		<h2>항상 참</h2>
	</c:if>
	<c:if test="${11==11 }">
		<h2>두 수는 같은 값</h2>
	</c:if>
	<c:if test="${11!=12 }">
		<h2>두 수는 같지 않음</h2>
	</c:if>
	<c:if test="${age>=50 }">
		<h2>${name }은 장년입니다</h2>
	</c:if>	
	<c:if test="${height>180 }">
		<h2>${name }은 키가 ${height }을 넘습니다</h2>
	</c:if>	//조건 만족 X -> 출력 X
	<c:if test="${(id=='hong') && (name=='홍길동')}">
		<h2>아이디는 ${id }, 이름은 ${name }</h2>
	</c:if>	
</body>
</html>

//

항상 참
두 수는 같은 값
두 수는 같지 않음
홍길동은 장년입니다
아이디는 hong, 이름은 홍길동

 

 

 

2

  • login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  ////
<c:set var="context" value="${pageContext.request.contextPath }"/>  ////
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 창</title>
</head>
<body>
	<form action="result.jsp">
		아이디 <input type="text" name="id"><br>
		비밀번호 <input type="password" name="pw"><br>
		<input type="submit" value="로그인">
		<input type="reset" value="다시 입력"><br>
		<a href="${context }/memberForm.html">회원가입</a>  ////
	</form>
</body>
</html>

 

 

 

  • result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setCharacterEncoding("utf-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 결과창</title>
</head>
<body>
	<c:if test="${empty param.id }"> //id 비워졌을 때
		<p>아이디를 입력하세요</p>
		<a href="login.jsp">로그인하기</a>
	</c:if>
	<c:if test="${not empty param.id }">
		<c:if test="${param.id == 'admin' }"> //아이디=admin
			<p>관리자로 로그인했습니다</p>
			<input type="button" value="회원정보 수정">
			<input type="button" value="회원정보 삭제">
		</c:if>
		<c:if test="${param.id != 'admin' }"> //아이디=admin이 아닌 다른 입력값
			<p>환영합니다 ${param.id }님</p>
		</c:if>		
	</c:if>
</body>
</html>

 

 

 

 

  • <c:choose>, <c:when>, <c:otherwise> : if~else / switch 문 

<c:choose>
    <c:when test="조건식1">
        참일 때 수행할 내용
    </c:when>
    <c:when test="조건식2">
        참일 때 수행할 내용
    </c:when>
    <c:otherwise>
        조건식들과 불일치할 때 수행할 내용
    </c:otherwise>
</c:choose>

 

 

 

1)

  • member5.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setCharacterEncoding("utf-8"); %>
<c:set var="id" value="hong" scope="page" /> <%-- String id = hong --%>
<c:set var="name" value="홍길동" scope="page" />
<c:set var="age" value="50" scope="page" />
<c:set var="weight" value="70" scope="page" />
<c:set var="height" value="180" scope="page" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>조건문 실습2</title>
</head>
<body>
	<table border="1" align="center">
		<tr align="center" bgcolor="beige">
			<th>아이디</th><th>이름</th><th>나이</th><th>키</th><th>몸무게</th>
		</tr>
		<c:choose>
			<c:when test="${empty name }">
				<tr align="center">
					<td colspan="5">이름을 입력해주세요</td>				
				</tr>
			</c:when>
			<c:otherwise>
				<tr align="center">
					<td>${id }</td>
					<td>${name }</td>
					<td>${age }</td>
					<td>${height }</td>
					<td>${weight }</td>
				</tr>
			</c:otherwise>
		</c:choose>
	</table>
</body>
</html>

//
아이디 이름 나이 키 몸무게
hong 홍길동 50 180 70

 

 

 

2)

  • scoreTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>시험 점수 입력</title>
</head>
<body>
	<h2>시험 점수 입력</h2>
	<form action="scoreResult.jsp" method="post">
		시험점수 : <input type="text" name="score"><br>
		<input type="submit" value="점수 변환">
	</form>
</body>
</html>

 

 

 

  • scoreResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% 
request.setCharacterEncoding("utf-8"); 
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>점수 변환 결과</title>
</head>
<body>
	<c:set var="score" value="${param.score }"/>  ////
	<h2>시험 점수 : ${score }점</h2>
	<c:choose>
    
		<c:when test="${score>=0 && score<=100 }">
			<c:choose>
				<c:when test="${score>=90 }">
					<h2>점수 변환 결과 : A</h2>	
				</c:when>
				<c:when test="${score>=80 }">
					<h2>점수 변환 결과 : B</h2>	
				</c:when>
				<c:when test="${score>=70 }">
					<h2>점수 변환 결과 : C</h2>	
				</c:when>
				<c:when test="${score>=60 }">
					<h2>점수 변환 결과 : D</h2>	
				</c:when>
                
				<c:otherwise>
					<h2>점수 변환 결과 : F</h2>	
				</c:otherwise>
			</c:choose>
		</c:when>
        
		<c:otherwise>
			<h2>점수를 잘못 입력했습니다. 다시 입력해주세요</h2>
			<a href="scoreTest.jsp">다시 입력하기</a>
		</c:otherwise>
        
	</c:choose>
</body>
</html>

 

 

 

3)

  • bmi.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BMI</title>
</head>
<body>
	<form action="bmiResult.jsp" method="post">
		이름 : <input type="text" name="name"><br>
		키 : <input type="text" name="height"><br>
		몸무게 : <input type="text" name="weight"><br>
		<input type="submit" value="계산하기">
	</form>
</body>
</html>

 

 

 

  • bmiResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setCharacterEncoding("utf-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BMI</title>
</head>
<body>

	<c:set var="name" value="${param.name }"/>
	<c:set var="height" value="${param.height }"/>
	<c:set var="weight" value="${param.weight }"/>
	<c:set var="standard" value="${(height-100)*0.9} "/>
	
	<c:choose>
	
		<c:when test="${name == null || name.length() ==0 }">
				<h2>이름을 입력해주세요</h2>
				<a href='bmi.jsp'>비만도 체크</a>
		</c:when>
		
		<c:otherwise>
			<c:choose>
				<c:when test="${standard-5<=weight && weight<=standard+5}">
						<h2>${name} 님은 ${weight } kg으로, 정상몸무게입니다</h2>
				</c:when>
				<c:when test="${weight<standard-5}">
						<h2>${name} 님은 ${weight } kg으로, 저체중입니다</h2>
				</c:when>
                
				<c:otherwise>
						<h2>${name} 님은 ${weight } kg으로, 비만입니다</h2>
				</c:otherwise>				
			</c:choose>
		</c:otherwise>
		
	</c:choose>
	
</body>
</html>

 

 

 

 

  • <c:forEach> : 반복문

<c:forEach var="변수명" items="반복할 객체명" begin="시작값" end="마지막값" step="증가값" varStatus="status(반복상태변수명)">
반복할 내용
</c:forEach>

 

 

 

  • varStatus의 속성

${status.current} : 현재 아이템
${status.index} : 0부터의 순서
${status.count} : 1부터의 순서
${status.first} : 현재 루프가 처음인지 (boolean)
${status.last} : 현재 루프가 마지막인지 (boolean)
${status.begin} : 시작값
${status.end} : 끝값
${status.step} : 증가값

 

 

1

  • forEachTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setCharacterEncoding("utf-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:forEach var="i" begin="1" end="5" step="1">
		<h2>안녕하세요(i=${i })</h2>
	</c:forEach>
	<c:forEach var="i" begin="1" end="10" step="1">
		<h2>${i }개 가격 : (i=${i*200 })</h2>
	</c:forEach>
	<c:forEach var="i" begin="1" end="30" step="3" varStatus="loop">
		<c:if test="${loop.last}">  ////
			<h2>마지막 수행했을 때 i=${i}</h2>
		</c:if>
		<h2>i=${i } 반복횟수=${loop.count }</h2>  ////
	</c:forEach>
</body>
</html>

//
안녕하세요(i=1)
안녕하세요(i=2)
안녕하세요(i=3)
안녕하세요(i=4)
안녕하세요(i=5)

1개 가격 : (i=200)
2개 가격 : (i=400)
3개 가격 : (i=600)
4개 가격 : (i=800)
5개 가격 : (i=1000)
6개 가격 : (i=1200)
7개 가격 : (i=1400)
8개 가격 : (i=1600)
9개 가격 : (i=1800)
10개 가격 : (i=2000)

i=1 반복횟수=1
i=4 반복횟수=2
i=7 반복횟수=3
i=10 반복횟수=4
i=13 반복횟수=5
i=16 반복횟수=6
i=19 반복횟수=7
i=22 반복횟수=8
i=25 반복횟수=9
마지막 수행했을 때 i=28
i=28 반복횟수=10