OpenFrameWork
오픈프레임워크_Day53
px
2015. 5. 29. 09:01
### : 목차 구분 기호
--- : 목차 내에 항목 구분 기호
@@@ : 태그 용도
--- : 목차 내에 항목 구분 기호
@@@ : 태그 용도
,,, : 같은 항목 내에 구분 기호
목차
1. 이론 및 정보
2. 설정 및 그 밖에
3. 소스코드 또는 실습
4. 과제
###################################
1. 이론 및 정보
-----------------------------------
* JSTL, JSP Standard Tag Library (Custom Action Tag 중에 잘 만들어 놓은 것)
반복문 같은 경우 어쩔 수 없이 자바코드가 들어가기 때문에
이를 해결하기 위해 Custom Action Tag를 만들어 썼는데
이 커스텀 액션 태그를 잘 만들어서 모아 놓은 것들이 JSTL 이다
JSTL은 또한 EL과 궁합이 매우 잘 맞아서 둘을 같이 사용하면
거의 완벽히 자바 코드를 거두어 낼 수 있다.
1. 라이브러리 다운로드
1) taglibs-standard-impl-1.2.5.jar, taglibs-standard-spec-1.2.5.jar
2) jstl.jar, standard.jar(이전 버전, 오라클에 있는 듯)
2. 역할 및 특징
1) EL이나 표준 액션태그로 처리하기 힘들 부분 담당
2) 연산, 조건, 반복처리
3) 개발자가 따로 구현 가능
3. 구분
(1) Core
1) 일반 프로그리밍에서 제공하는 것과 유사한 변수 선언,
실행 흐름의 제어 기능(조건,반복)을 제공한다
2) 페이지 이동 기술 제공
3) uri:http://java.sun.com/jsp/jstl/core, prefix : c
(2) Formatting
1) 숫자,날짜,시간을 포맷팅하는 기능과 국제화,다국어 기능
2) uri:http://java.sun.com/jsp/jstl/fmt, prefix : fmt
(3) Database
1) DB의 데이터를 수정/삭제/입력/조회하는 기능을 제공
2) uri:http://java.sun.com/jsp/jstl/sql, prefix : sql
(4) XML
1) XML문서를 처리할 때 필요한 기능을 제공
2) uri:http://java.sun.com/jsp/jstl/xml, prefix : xml
(5) Function
1) 문자열을 처리하는 함수를 제공(주로 String 클래스 메서드를 가져다 쓸 수 있게 해줌)
2) uri:http://java.sun.com/jsp/jstl/functions, prefix : fn
-----------------------------------
###################################
2. 설정 및 그 밖에
-----------------------------------
2. 설정 및 그 밖에
-----------------------------------
* 사용자 정의 함수 실습
폴더 만듬
/ELApp/WebContent/WEB-INF/tld
tld파일을 모아 놓을 폴더
반드시 WEB-INF 폴더 안에 있어야함
-----------------------------------
* JSTL 설정
톰캣 폴더 이동
~\apache-tomcat-8.0.21\webapps\examples\WEB-INF\lib\taglibs-standard-impl-1.2.5.jar
~\apache-tomcat-8.0.21\webapps\examples\WEB-INF\lib\taglibs-standard-spec-1.2.5.jar
이 두개가 JSTL 라이브러리
이 두개를 가져다 쓰면 됨
~\apache-tomcat-7.0.62\webapps\examples\WEB-INF\lib\taglibs-standard-impl-1.2.5.jar
~\apache-tomcat-7.0.62\webapps\examples\WEB-INF\lib\taglibs-standard-spec-1.2.5.jar
설치된 오라클에 이미 있는 듯
~\app\사용자이름\product\11.2.0\dbhome_1\owb\jrt\default-web-app\WEB-INF\lib\jstl.jar
~\app\사용자이름\product\11.2.0\dbhome_1\owb\jrt\default-web-app\WEB-INF\lib\standard.jar
* 프로젝트 새로 만듬 - JSTLApp
/JSTLApp/WebContent/WEB-INF/lib
안에
servlet-api.jar
taglibs-standard-impl-1.2.5.jar
taglibs-standard-spec-1.2.5.jar
taglibs-standard-impl-1.2.5.jar
taglibs-standard-spec-1.2.5.jar
넣음
-----------------------------------
###################################
3. 소스코드 또는 실습
3. 소스코드 또는 실습
-----------------------------------
3-1
수정
Workspace : ~\JSP\EclipseWork
/ELApp/WebContent/elTest08_proc.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
첫번째 숫자 : ${param.num1}<br/>
두번째 숫자 : ${param.num1}<br/>
두 수의 합 :
<%=request.getParameter("num1")%>
+ <%=request.getParameter("num2")%>
= <%=Integer.parseInt(request.getParameter("num1"))+Integer.parseInt(request.getParameter("num2"))%>
<hr/>
두 수의 합 : ${param.num1} + ${param.num2} = ${param.num1 + param.num2}
<br/><br/>
두 수는 모두 양수인가?
<%
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
if(num1>0 && num2>0){
out.println("양수");
}else{
out.println("아니다");
}
%>
<br/>
${(param.num1 gt 0) &&(param.num2 > 0)}
<br/><br/>
두 수가 모두 같은 숫자인가?<br/>
${param.num1 == param.num2 ? "예" : "아니오"}
${param.num1 eq param.num2 ? "예" : "아니오"}
<br/><br/>
전달되는 id값이 비어있으면 "guest"라고 출력하고 아니면 넘겨받은 값으로 출력
<br/>
안녕하세요~~ ${empty param.ID ? "guest" : param.ID}님...
</body>
</html>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
첫번째 숫자 : ${param.num1}<br/>
두번째 숫자 : ${param.num1}<br/>
두 수의 합 :
<%=request.getParameter("num1")%>
+ <%=request.getParameter("num2")%>
= <%=Integer.parseInt(request.getParameter("num1"))+Integer.parseInt(request.getParameter("num2"))%>
<hr/>
두 수의 합 : ${param.num1} + ${param.num2} = ${param.num1 + param.num2}
<br/><br/>
두 수는 모두 양수인가?
<%
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
if(num1>0 && num2>0){
out.println("양수");
}else{
out.println("아니다");
}
%>
<br/>
${(param.num1 gt 0) &&(param.num2 > 0)}
<br/><br/>
두 수가 모두 같은 숫자인가?<br/>
${param.num1 == param.num2 ? "예" : "아니오"}
${param.num1 eq param.num2 ? "예" : "아니오"}
<br/><br/>
전달되는 id값이 비어있으면 "guest"라고 출력하고 아니면 넘겨받은 값으로 출력
<br/>
안녕하세요~~ ${empty param.ID ? "guest" : param.ID}님...
</body>
</html>
-----------------------------------
3-2
생성
Workspace : ~\JSP\EclipseWork
/ELApp/WebContent/elTest09.jsp
<%@page import="mybean.Person"%>
<%@ page contentType="text/html; charset=EUC-KR"%>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
좋아하는 음식들 : ${food}<br/>
${food[0]},${food[1]},${food[2]},${food[3]},
${food[4]},${food[5]},${food[6]},${food[7]},
${food[8]},${food[9]}
<br/>
좋아하는 영화들 : ${movie}<br/>
${movie[0]},${movie[1]},${movie[2]},${movie[3]},${movie[4]},${movie[5]}
<br/>
${ADDRESS}<br/>
Edgar의 주소는 : ${ADDRESS.Edgar}<br/>
Thomas의 주소는 : ${ADDRESS["Thomas"]}<br/>
<%-- http://localhost:8080/ELApp/eltest?name=John --%>
${param.name}님의 주소는 ${ADDRESS[param.name]}<br/>
<br/><br/>
<%Person hong = (Person)request.getAttribute("hong");%>
강아지 이름 : <%=hong.getDog().getName()%><br/>
그 강아지 주인 이름 : <%=hong.getName() %><br/>
<br/><br/>
강아지 이름 : ${hong.dog.name}<br/>
그 강아지 주인 이름 : ${hong.name}<br/>
</body>
</html>
<%@ page contentType="text/html; charset=EUC-KR"%>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
좋아하는 음식들 : ${food}<br/>
${food[0]},${food[1]},${food[2]},${food[3]},
${food[4]},${food[5]},${food[6]},${food[7]},
${food[8]},${food[9]}
<br/>
좋아하는 영화들 : ${movie}<br/>
${movie[0]},${movie[1]},${movie[2]},${movie[3]},${movie[4]},${movie[5]}
<br/>
${ADDRESS}<br/>
Edgar의 주소는 : ${ADDRESS.Edgar}<br/>
Thomas의 주소는 : ${ADDRESS["Thomas"]}<br/>
<%-- http://localhost:8080/ELApp/eltest?name=John --%>
${param.name}님의 주소는 ${ADDRESS[param.name]}<br/>
<br/><br/>
<%Person hong = (Person)request.getAttribute("hong");%>
강아지 이름 : <%=hong.getDog().getName()%><br/>
그 강아지 주인 이름 : <%=hong.getName() %><br/>
<br/><br/>
강아지 이름 : ${hong.dog.name}<br/>
그 강아지 주인 이름 : ${hong.name}<br/>
</body>
</html>
-----------------------------------
3-3
수정
Workspace : ~\JSP\EclipseWork
/ELApp/src/myservlet/ElTestServlet.java
package myservlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import mybean.Dog;
import mybean.Person;
public class ElTestServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//System.out.println("test...");
/*
req.setAttribute("cnt", new Integer(1000));
RequestDispatcher view = req.getRequestDispatcher("/elTest02.jsp");
view.forward(req, resp);
*/
String favoriteFood[] = {"냉면","햄버거","피자","순대국","떡볶이","김밥","라면"};
req.setAttribute("food", favoriteFood);
ArrayList<String> favoriteMovie = new ArrayList<String>();
favoriteMovie.add("영웅본색1");
favoriteMovie.add("영웅본색2");
favoriteMovie.add("영웅본색3");
favoriteMovie.add("영웅본색4");
favoriteMovie.add("영웅본색5");
req.setAttribute("movie", favoriteMovie);
HashMap<String, String> map = new HashMap<String, String>();
map.put("Edgar", "보스톤");
map.put("Thomas", "오하이오");
map.put("John", "워싱턴");
map.put("홍길동", "뉴욕");
HttpSession session = req.getSession();
session.setAttribute("ADDRESS", map);
Person hong = new Person();
hong.setName("홍길동");
Dog popee = new Dog();
popee.setName("뽀삐");
hong.setDog(popee);
req.setAttribute("hong", hong);
RequestDispatcher view = req.getRequestDispatcher("/elTest09.jsp");
view.forward(req, resp);
}
public static String getString(){
return "이것은 서블릿에 만들어진 일반 메서드이다.";
}
}
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import mybean.Dog;
import mybean.Person;
public class ElTestServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//System.out.println("test...");
/*
req.setAttribute("cnt", new Integer(1000));
RequestDispatcher view = req.getRequestDispatcher("/elTest02.jsp");
view.forward(req, resp);
*/
String favoriteFood[] = {"냉면","햄버거","피자","순대국","떡볶이","김밥","라면"};
req.setAttribute("food", favoriteFood);
ArrayList<String> favoriteMovie = new ArrayList<String>();
favoriteMovie.add("영웅본색1");
favoriteMovie.add("영웅본색2");
favoriteMovie.add("영웅본색3");
favoriteMovie.add("영웅본색4");
favoriteMovie.add("영웅본색5");
req.setAttribute("movie", favoriteMovie);
HashMap<String, String> map = new HashMap<String, String>();
map.put("Edgar", "보스톤");
map.put("Thomas", "오하이오");
map.put("John", "워싱턴");
map.put("홍길동", "뉴욕");
HttpSession session = req.getSession();
session.setAttribute("ADDRESS", map);
Person hong = new Person();
hong.setName("홍길동");
Dog popee = new Dog();
popee.setName("뽀삐");
hong.setDog(popee);
req.setAttribute("hong", hong);
RequestDispatcher view = req.getRequestDispatcher("/elTest09.jsp");
view.forward(req, resp);
}
public static String getString(){
return "이것은 서블릿에 만들어진 일반 메서드이다.";
}
}
-----------------------------------
3-4
생성
Workspace : ~\JSP\EclipseWork
/ELApp/src/mybean/Person.java
package mybean;
public class Person {
private String name;
private Dog dog;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
}
public class Person {
private String name;
private Dog dog;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
}
-----------------------------------
3-5
생성
Workspace : ~\JSP\EclipseWork
/ELApp/src/mybean/Dog.java
package mybean;
public class Dog {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Dog {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
-----------------------------------
3-6
생성
Workspace : ~\JSP\EclipseWork
/ELApp/src/mybean/BeanTest.java
package mybean;
public class BeanTest {
private String name;
private String price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public static int rollDice(){
return (int)((Math.random() * 6)+1);
}
}
public class BeanTest {
private String name;
private String price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public static int rollDice(){
return (int)((Math.random() * 6)+1);
}
}
-----------------------------------
3-7
생성
Workspace : ~\JSP\EclipseWork
/ELApp/WebContent/elTest10.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<%@ taglib prefix="me" uri="test2" %>
<%@ taglib prefix="my" uri="test1" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="test" class="mybean.BeanTest"/>
<jsp:setProperty property="name" name="test" value="홍길동"/>
<jsp:setProperty property="price" name="test" value="1000000"/>
<h3>예전</h3>
이름 : <jsp:getProperty property="name" name="test"/><br/>
가격 : <jsp:getProperty property="price" name="test"/><br/>
<h3>EL</h3>
이름 : ${test.name}<br/>
가격 : ${test.price}<br/>
<hr/>
사용자 정의 함수 호출<br/>
주사위 값 : ${my:dice()}<br/>
서블릿 메시지 : ${my:msg()}<br/>
제곱근 :<%=Math.sqrt(4.0)%> 또는 ${me:root(4.0)}
</body>
</html>
<%@ taglib prefix="me" uri="test2" %>
<%@ taglib prefix="my" uri="test1" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="test" class="mybean.BeanTest"/>
<jsp:setProperty property="name" name="test" value="홍길동"/>
<jsp:setProperty property="price" name="test" value="1000000"/>
<h3>예전</h3>
이름 : <jsp:getProperty property="name" name="test"/><br/>
가격 : <jsp:getProperty property="price" name="test"/><br/>
<h3>EL</h3>
이름 : ${test.name}<br/>
가격 : ${test.price}<br/>
<hr/>
사용자 정의 함수 호출<br/>
주사위 값 : ${my:dice()}<br/>
서블릿 메시지 : ${my:msg()}<br/>
제곱근 :<%=Math.sqrt(4.0)%> 또는 ${me:root(4.0)}
</body>
</html>
-----------------------------------
3-8
생성
Workspace : ~\JSP\EclipseWork
/ELApp/WebContent/WEB-INF/tld/test1.tld
/ELApp/WebContent/WEB-INF/tld/test1.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>test1</short-name>
<uri>test1</uri>
<function>
<name>dice</name>
<function-class>mybean.BeanTest</function-class>
<function-signature>int rollDice()</function-signature>
</function>
<function>
<name>msg</name>
<function-class>myservlet.ElTestServlet</function-class>
<function-signature>String getString()</function-signature>
</function>
</taglib>
<taglib version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>test1</short-name>
<uri>test1</uri>
<function>
<name>dice</name>
<function-class>mybean.BeanTest</function-class>
<function-signature>int rollDice()</function-signature>
</function>
<function>
<name>msg</name>
<function-class>myservlet.ElTestServlet</function-class>
<function-signature>String getString()</function-signature>
</function>
</taglib>
-----------------------------------
3-9
생성
Workspace : ~\JSP\EclipseWork
/ELApp/WebContent/WEB-INF/tld/test2.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>test2</short-name>
<uri>test2</uri>
<function>
<name>root</name>
<function-class>java.lang.Math</function-class>
<function-signature>double sqrt(double)</function-signature>
</function>
</taglib>
<taglib version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>test2</short-name>
<uri>test2</uri>
<function>
<name>root</name>
<function-class>java.lang.Math</function-class>
<function-signature>double sqrt(double)</function-signature>
</function>
</taglib>
-----------------------------------
3-10
생성
Workspace : ~\JSP\EclipseWork
/JSTLApp/WebContent/core01.jsp<%@ page contentType="text/html; charset=EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2><c:set/></h2>
<c:set var="num1" value="7"/>
<c:set var="num2" value="8"/>
<c:set var="result" value="${num1+num2}"/>
두 수의 합 : ${result}
</body>
</html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2><c:set/></h2>
<c:set var="num1" value="7"/>
<c:set var="num2" value="8"/>
<c:set var="result" value="${num1+num2}"/>
두 수의 합 : ${result}
</body>
</html>
-----------------------------------
3-11
생성
Workspace : ~\JSP\EclipseWork
/JSTLApp/WebContent/core02.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2><c:out/></h2>
<c:out value="안녕하세요"/><br/>
<c:out value="${2*3}"/><br/>
<%-- 출력 값이 null일때 기본 값을 지정해 줄 수 있음 --%>
<c:out value="${member.gender}" default="남자"/><br/>
<abc>는 abc입니다.<br/>
<%-- 태그를 출력해 줄 수 있음 --%>
<c:out value="<abc>는 abc입니다."/>
</body>
</html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2><c:out/></h2>
<c:out value="안녕하세요"/><br/>
<c:out value="${2*3}"/><br/>
<%-- 출력 값이 null일때 기본 값을 지정해 줄 수 있음 --%>
<c:out value="${member.gender}" default="남자"/><br/>
<abc>는 abc입니다.<br/>
<%-- 태그를 출력해 줄 수 있음 --%>
<c:out value="<abc>는 abc입니다."/>
</body>
</html>
-----------------------------------
3-12
생성
Workspace : ~\JSP\EclipseWork
/JSTLApp/WebContent/core03.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%-- if문에는 else는 없음 --%>
<h2><c:if/></h2>
<h1>첫번째 예제</h1>
<c:set var="i" value="bbb"/>
<c:if test="${i == 'aaa'}">
aaa가 맞습니다.
</c:if>
<c:if test="${i == 'bbb'}">
bbb가 맞습니다.
</c:if>
<hr/>
<h2>두번째 예제</h2>
<form action="core03.jsp" method="post">
숫자 1 : <input type="text" name="num1"/><br/><br/>
숫자 2 : <input type="text" name="num2"/><br/><br/>
<input type="submit" value="최대값 구하기"/>
</form>
<br/><br/>
최대값 :
<c:if test="${param.num1 !=null}"><c:if test="${param.num2 !=null}">
<c:if test="${param.num1 > param.num2}">${param.num1} 이 큼</c:if>
<c:if test="${param.num1 < param.num2}">${param.num2} 이 큼</c:if>
<c:if test="${param.num1 == param.num2}">두 수 같음</c:if>
</c:if></c:if>
</body>
</html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%-- if문에는 else는 없음 --%>
<h2><c:if/></h2>
<h1>첫번째 예제</h1>
<c:set var="i" value="bbb"/>
<c:if test="${i == 'aaa'}">
aaa가 맞습니다.
</c:if>
<c:if test="${i == 'bbb'}">
bbb가 맞습니다.
</c:if>
<hr/>
<h2>두번째 예제</h2>
<form action="core03.jsp" method="post">
숫자 1 : <input type="text" name="num1"/><br/><br/>
숫자 2 : <input type="text" name="num2"/><br/><br/>
<input type="submit" value="최대값 구하기"/>
</form>
<br/><br/>
최대값 :
<c:if test="${param.num1 !=null}"><c:if test="${param.num2 !=null}">
<c:if test="${param.num1 > param.num2}">${param.num1} 이 큼</c:if>
<c:if test="${param.num1 < param.num2}">${param.num2} 이 큼</c:if>
<c:if test="${param.num1 == param.num2}">두 수 같음</c:if>
</c:if></c:if>
</body>
</html>
-----------------------------------
3-13
생성
Workspace : ~\JSP\EclipseWork
/JSTLApp/WebContent/core04.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2><c:choose/></h2>
<form action="core04.jsp" method="post">
숫자 1 : <input type="text" name="num1"/><br/><br/>
숫자 2 : <input type="text" name="num2"/><br/><br/>
<input type="submit" value="최대값 구하기"/>
</form>
<br/><br/>
최대값 :
<c:choose>
<c:when test="${param.num1 == null || param.num2 == null}"></c:when>
<c:when test="${param.num1 > param.num2}">num1이 크다</c:when>
<c:when test="${param.num1 < param.num2}">num2이 크다</c:when>
<c:when test="${param.num1 == param.num2}">같다.</c:when>
</c:choose>
</body>
</html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2><c:choose/></h2>
<form action="core04.jsp" method="post">
숫자 1 : <input type="text" name="num1"/><br/><br/>
숫자 2 : <input type="text" name="num2"/><br/><br/>
<input type="submit" value="최대값 구하기"/>
</form>
<br/><br/>
최대값 :
<c:choose>
<c:when test="${param.num1 == null || param.num2 == null}"></c:when>
<c:when test="${param.num1 > param.num2}">num1이 크다</c:when>
<c:when test="${param.num1 < param.num2}">num2이 크다</c:when>
<c:when test="${param.num1 == param.num2}">같다.</c:when>
</c:choose>
</body>
</html>
-----------------------------------
3-14
생성
Workspace : ~\JSP\EclipseWork
/JSTLApp/WebContent/core05.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2><c:forEach/></h2>
<c:forEach begin="1" end="10" step="1" var="i">
<font size="${i}">야호</font><br/>
</c:forEach>
<hr/>
<%
String[] arr = {"불고기 백반","오므라이스","콩국스"};
request.setAttribute("menu", arr);
%>
오늘의 메뉴<br/>
<ul>
<c:forEach items="${menu}" var="dish">
<li>${dish}</li>
</c:forEach>
</ul>
<hr/>
<a href="foreach.do">좋아하는 영화들</a>
<br/><br/>
<hr/>
<%-- 과제 부분 --%>
<a href="foreach.do?param=dot">댓글 달기</a>
</body>
</html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2><c:forEach/></h2>
<c:forEach begin="1" end="10" step="1" var="i">
<font size="${i}">야호</font><br/>
</c:forEach>
<hr/>
<%
String[] arr = {"불고기 백반","오므라이스","콩국스"};
request.setAttribute("menu", arr);
%>
오늘의 메뉴<br/>
<ul>
<c:forEach items="${menu}" var="dish">
<li>${dish}</li>
</c:forEach>
</ul>
<hr/>
<a href="foreach.do">좋아하는 영화들</a>
<br/><br/>
<hr/>
<%-- 과제 부분 --%>
<a href="foreach.do?param=dot">댓글 달기</a>
</body>
</html>
-----------------------------------
3-15
생성
Workspace : ~\JSP\EclipseWork
/JSTLApp/src/myservlet/ForeachServlet.java
package myservlet;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ForeachServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String[] movie1 = {"맨인블랙","매트릭스","아이언맨","토르","어벤져스"};
String[] movie2 = {"인터스텔라","관상","투캅스","넘버3","변호인"};
ArrayList<String[]> list = new ArrayList<String[]>();
list.add(movie1);
list.add(movie2);
req.setAttribute("movieList", list);
RequestDispatcher view = req.getRequestDispatcher("/core05_result.jsp");
view.forward(req, resp);
}
}
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ForeachServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String[] movie1 = {"맨인블랙","매트릭스","아이언맨","토르","어벤져스"};
String[] movie2 = {"인터스텔라","관상","투캅스","넘버3","변호인"};
ArrayList<String[]> list = new ArrayList<String[]>();
list.add(movie1);
list.add(movie2);
req.setAttribute("movieList", list);
RequestDispatcher view = req.getRequestDispatcher("/core05_result.jsp");
view.forward(req, resp);
}
}
-----------------------------------
3-16
생성
Workspace : ~\JSP\EclipseWork
/JSTLApp/WebContent/Core05_result.jsp
<%@page import="java.util.ArrayList"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=EUC-KR"%>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2>내가 좋아하는 영화들</h2>
<%
ArrayList<String[]> list = (ArrayList<String[]>)request.getAttribute("movieList");
for(String[] s : list){
for(int i=0;i<s.length;i++){
out.println(s[i]);%><br/><%
}
}
%>
<hr/>
<c:forEach items="${movieList}" var="list">
<c:forEach items="${list}" var="str">
${str}<br/>
</c:forEach>
</c:forEach>
<hr/>
<%-- 과제 부분 --%>
<h2>댓글 리스트</h2>
<%-- 댓글을 서블릿에서 만들어져 있도록 하라 가상으로!!! --%>
<%-- 댓글이 출력될 위치(대략 3~4개의 댓글이 출력 될 수 있도록 한다. --%>
<br/><br/>
<%-- 하단의 댓글 달기는 멤버일 경우에만 보여지게 한다. --%>
<%-- 회원인지 아닌지 조건문으로 달아라!!! --%>
<form action="foreach.do" method="post">
댓글 달기 : <br/>
<textarea rows="5" cols="60"></textarea><br/>
<input type="submit" value="댓글 달기"/>
</form>
</body>
</html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=EUC-KR"%>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2>내가 좋아하는 영화들</h2>
<%
ArrayList<String[]> list = (ArrayList<String[]>)request.getAttribute("movieList");
for(String[] s : list){
for(int i=0;i<s.length;i++){
out.println(s[i]);%><br/><%
}
}
%>
<hr/>
<c:forEach items="${movieList}" var="list">
<c:forEach items="${list}" var="str">
${str}<br/>
</c:forEach>
</c:forEach>
<hr/>
<%-- 과제 부분 --%>
<h2>댓글 리스트</h2>
<%-- 댓글을 서블릿에서 만들어져 있도록 하라 가상으로!!! --%>
<%-- 댓글이 출력될 위치(대략 3~4개의 댓글이 출력 될 수 있도록 한다. --%>
<br/><br/>
<%-- 하단의 댓글 달기는 멤버일 경우에만 보여지게 한다. --%>
<%-- 회원인지 아닌지 조건문으로 달아라!!! --%>
<form action="foreach.do" method="post">
댓글 달기 : <br/>
<textarea rows="5" cols="60"></textarea><br/>
<input type="submit" value="댓글 달기"/>
</form>
</body>
</html>
-----------------------------------
3-17
생성
Workspace : ~\JSP\EclipseWork
/JSTLApp/WebContent/homework.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2>두번째 과제</h2>
<a href="memUpdate.do">회원 정보 수정</a>
<h2>세번째 과제</h2>
만약 당신이 차를 고른다면 어떤 것이 가장 중요하겠습니까?<br/>
<form action="choose.do" method="post">
<input type="radio" name="choice" value="성능"/>성능<br/>
<input type="radio" name="choice" value="안전성"/>안전성<br/>
<input type="radio" name="choice" value="유지비"/>유지비<br/>
<input type="submit" value="투표"/>
</form>
<%-- 투표 결과를 바로 아래에서 확인 할 수 있게 알아서 만들어라 --%>
결과 :
<%-- 만약 성능을 선택했다면 --%>
지금까지 성능에 대한 투표수는 ? 입니다.
<%-- 만약 안전성을 선택했다면 --%>
지금까지 안전성에 대한 투표수는 ? 입니다.
<%-- 만약 유지비을 선택했다면 --%>
지금까지 유지비에 대한 투표수는 ? 입니다.
</body>
</html>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2>두번째 과제</h2>
<a href="memUpdate.do">회원 정보 수정</a>
<h2>세번째 과제</h2>
만약 당신이 차를 고른다면 어떤 것이 가장 중요하겠습니까?<br/>
<form action="choose.do" method="post">
<input type="radio" name="choice" value="성능"/>성능<br/>
<input type="radio" name="choice" value="안전성"/>안전성<br/>
<input type="radio" name="choice" value="유지비"/>유지비<br/>
<input type="submit" value="투표"/>
</form>
<%-- 투표 결과를 바로 아래에서 확인 할 수 있게 알아서 만들어라 --%>
결과 :
<%-- 만약 성능을 선택했다면 --%>
지금까지 성능에 대한 투표수는 ? 입니다.
<%-- 만약 안전성을 선택했다면 --%>
지금까지 안전성에 대한 투표수는 ? 입니다.
<%-- 만약 유지비을 선택했다면 --%>
지금까지 유지비에 대한 투표수는 ? 입니다.
</body>
</html>
-----------------------------------
3-18
생성
Workspace : ~\JSP\EclipseWork
/JSTLApp/WebContent/memUpdate.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%--
MemberServlet 클래스 생성 후 한명의 정보 생성
--%>
<%
MemberDto dto = (MemberDto)request.getAttribute("memUpdate");
%>
<ul>
<li>아이디 : <%=dto.getID()%></li>
<li>패스워드 : <%=dto.getPw()%></li>
<li>이름 : <%=dto.getName()%></li>
<li>주소 : <%=dto.getAddr()%></li>
<li>전화번호 : <%=dto.getTel()%></li>
</ul>
</body>
</html>
<!DOCTYPE html >
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%--
MemberServlet 클래스 생성 후 한명의 정보 생성
--%>
<%
MemberDto dto = (MemberDto)request.getAttribute("memUpdate");
%>
<ul>
<li>아이디 : <%=dto.getID()%></li>
<li>패스워드 : <%=dto.getPw()%></li>
<li>이름 : <%=dto.getName()%></li>
<li>주소 : <%=dto.getAddr()%></li>
<li>전화번호 : <%=dto.getTel()%></li>
</ul>
</body>
</html>
-----------------------------------
###################################
4. 과제
-----------------------------------
4. 과제
-----------------------------------
4-1
프로젝트
기획서, 스토리보드, UML, ERD 잘 준비해 놓아라
추가 발생 문서, 회의록 잘 정리 해서 나중에 제출 할 수 있도록
-----------------------------------
4-2
1 게시판을 MVC 모델로 바꾼뒤
2 지금까지 배운 내용들 전부 jstl과 El 버전으로 만들어 보기
게시판 이동하기 위한 컨트롤러
컨트롤러 안에서 글을 읽을 수 있는 컨트롤러, 쓸수 있는 컨트롤러, 볼수 있는 컨트롤러, 삭제하는 컨트롤러
컨트롤러는 한개의 기능만 가질 수 있도록 만든다
-----------------------------------
4-3
/JSTLApp/WebContent/core05_result.jsp
/JSTLApp/WebContent/core05.jsp
-----------------------------------
4-4
/JSTLApp/WebContent/homework.jsp
/JSTLApp/WebContent/memUpdate.jsp
homework에 과제 두개 있음
다음 주 월요일 테스트가 있을 예정
-----------------------------------
###################################
5. 과제 해결
-----------------------------------
5. 과제 해결
-----------------------------------
-----------------------------------
###################################
6. 기타
----------------------------------- -----------------------------------