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 제거 |
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 코어 라이브러리
- <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
'Programming > 국비학원' 카테고리의 다른 글
221013 - JSTL(fmt/fn 라이브러리, 등록/조회 구현) & 서블릿(URL 패턴,파일 다운로드/업로드) (0) | 2022.10.15 |
---|---|
221012 - JSTL - 코어 / fmt 라이브러리 (0) | 2022.10.13 |
221007 - EL - empty 연산자, 내장객체, 스코프 우선순위 (0) | 2022.10.09 |
221006 - JSP - 액션태그, EL (0) | 2022.10.07 |
221005 - JSP - 예외 처리, welcome 페이지, 액션 태그 (0) | 2022.10.06 |