■ EL
□ 설명
< el(Expression Language) 사용 >
javascript : client-side script language
jsp : server-side script language
remember :
action tag <jsp:include...> <jsp:forward...> (가독성 : 마치 태그처럼)
가능한 한 위와 같은 자바문법 사용을 줄위기 위한 목적(가독성 문제) 중의 하나로 사용 (action tag, useBean)
el은 parsing이 간단해져서 비교적 속도 빠름, 아주 복잡한 경우는 표현이 어려움.
- el에서 ${kab}은 자바표현식으로는 <%=kab%>과 같다.
- out.println(kab)
- ${kab}은 마치 자바가 아닌 것처럼, 태그와 유사하게 보임
- 즉, el언어 등이 사용되는 이유 : 가독성(자바인 것처럼 보이지 않기 위해)
(참고)
# 객체 형태는 저장이나 전송 X, 따라서 문자화 시켜야 한다. 이것을 직렬화라고 한다. 다시 사용시는 역직렬화(문자화 ==> 객체)
# 문자화 저장시 사용되는 방식 : xml, json, yaml
<데이터 직렬화 언어> (Data Serialization) : 객체를 바이트 형태로 바꿔주는 것
xml, json : 데이터 교환(자료를 규칙있게 표현해야)
### xml(태그형식으로)
<food>
<title>사과</title>
<price>3000</price>
</food>
### json (name:value)
title:"사과",
price:3000
(Yet Another Markup language)
### yaml (.yml, .yaml) (YAML Ain't Markup Language)
==> html 형식이 아니다(hyper text markup language)
ㄴ flutter, android 어플, spring
food:
title:사과 (2칸 spacebar, : 다음에 한칸)
price:3000
=> food.title='사과'
food.price=3000
car:
mycar:
price:3000000
□ 기본 실습
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
double kab = 27.8;
String kab2 = null;
%>
<%="온달" %> <!-- 표현식 out.println("온달") -->
<!-- "온달"을 el을 표현하여 출력하면? -->
${"온달"}
<br>
${"형이 말하는데 el 네가 왜 거기서 나와"}<br>
${"el"}은 참 간단해서 좋지만 공부는 해야 해<br>
${"다음 el의 답은 뭘까"}<br>
${100} ${100+200} ${100 > 2} ${200.35} ${10 % 3}<br>
${false} ${empty kab2} ${empty ""} ${empty "a"} ${null}등 같은 표현이 가능해<br>
<!-- ${null} : 아무것도 나오지 않는다. 즉 NPE(Null Pointer Exception) x -->
<!--
값이 없는 null 및 형 변환 등에 flexible
-->
문자형 숫자 * 숫자<br>
<%=Integer.parseInt("100") * 200 %><br>
${"100" * 200}<br> <!-- 20000 -->
${"100*200"}<br> <!-- 100*200 -->
${50 == 50}<br>
${50 eq 50}<br>
${(100 > 3) ? "커" : "작아"}<br> <!-- 자바의 삼항연산자 -->
${50 mod 5}<br> <!-- 나머지 연산자 -->
<!--
하하 vs 호호를 출력하기 위해 3가지 방법 사용중 4가지 정도의 표현을 사용해본다면
-->
${"하하 vs 호호"}<br> <!-- el -->
<%out.println("하하 vs 호호");%><br> <!-- scriptlet -->
<%!String hahahoho = "하하 vs 호호"; %> <!-- declaration -->
<%=hahahoho%><!-- expression -->
</body>
</html>
□ EL - getParameter
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="kajacalled.jsp" method="post">
이름 <input type="text" name="irum"><br>
국어점수 <input type="text" name="kor"><br>
영어점수 <input type="text" name="eng"><br>
<input type="submit" value="가자총점계산">
</form>
</body>
</html>
* kajacalled.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body><!-- kajacalled.jsp -->
[scriptlet]<br>
<%
String irum = request.getParameter("irum");
int kor = Integer.parseInt(request.getParameter("kor"));
int eng = Integer.parseInt(request.getParameter("eng"));
%>
이름 <%=irum %><br>
총점 <%=kor + eng %><br>
<!-- el -->
이름 ${param.irum }<br>
총점 ${param.kor + param.eng }<br> <!-- int 변환 안 해도 됨 -->
</body>
</html>
□ EL - scope
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
// 범위에서 해당 값 인식을 위해
// 아래처럼 하면 지금 페이지에 속성명을 가진 기억창고 4개가 만들어진다.
// scope.저장메소드("속성명", "속성값") // setter, getter
pageContext.setAttribute("page1", "pagelove"); // 페이지 범위
request.setAttribute("req1", "reqlove"); // 요청범위
session.setAttribute("ses1", "seslove"); // 브라우저가 살아있는 동안 // 1 browser - 1 session
application.setAttribute("app1", "applove"); // WAS가 계속 가동되는 동안 // 1 was - 1 application
%>
<a href="scope_el.jsp">scope_el.jsp로 이동</a>
</body>
</html>
* scope_el.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%-- <h2>${(해당 범위명 + Scope).속성명}를 사용하여 출력</h2> --%>
${pageScope.page1 }<br>
${requestScope.req1 }<br>
${sessionScope.ses1 }<br>
${applicationScope.app1 }<br>
<a href="scope_el2.jsp">scope_el2.jsp로 한번 가볼까!</a>
</body>
</html>
* scope_el2.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
${pageScope.page1 }<br>
${requestScope.req1 }<br>
${sessionScope.ses1 }<br>
${applicationScope.app1 }<br>
<a href="scope_el2.jsp">여기서 브라우저 모두 닫고 scope_el2.jsp 재수행!<br>
이어서 WAS 내리고 scope_el2.jsp 재수행! </a>
</body>
</html>
■ 액션태그
□ 설명
###### Action tag ######
- 자바 형식을 안 보이게(cf. el언어)
- .jsp를 실행하는 중간에 변화가 필요한 경우
- 미리 준비한 내용을 처리하기 위한 것
- standard action tag(표준액션)
* forward <jsp:forward>
* include <jsp:include>
* useBead <jsp:useBean> 자바빈
setProperty <jsp:setProperty>
getProperty <jsp:getProperty>
<action tag 문법>
* 기본적으로 xml 규칙을 따른다.
eXtensible Markup Language(html의 확장판)
-- 여는 태그, 닫는 태그가 있어야.
<br> <br />
<book>
<author>아무개</author>
<title>손자병법</title>
<author>아무개2</author>
<title>손자병법</title>
-- 전송, 환경설정 (구조화, 체계적)
<jsp:로 시작하여 /> 또는 </jsp:>로 끝
예1) <jsp:forward...../>
예2) <jsp:forward...> 문장들</jsp...>
* 대소문자를 구분한다.
- custom tag(커스텀) : 개발자가 작성
taglib를 사용하여 사용할 class를 미리 지시한다.
JSTL은 custom tag이나 표준으로 선정된
<%@ taglib prefix="c"...
<%@ taglib prefix="tf"
<c:set...
<tf:...
</book>
□ 액션태그 <include>
* 524_006_action_include.jsp (불러올 화면)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
out.println("jsp하고 있는데~" + "<br>");
out.println("You are My Love, You are my life" + "<br>");
%>
* 524_006_action_include_main.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h2>include</h2>
<pre>
include directive : 내용을 그대로 include
<%--
<%@ inclide file = "includeSub.jsp" %>
정적 파일을 포함시킬 때 , 포함후 처리가 된다.
--%>
include action tag : html, jsp 등의 처리결과를 include
</pre>
<jsp:include page="524_006_action_include.jsp"/>
</body>
</html>
□ 액션태그 <include> 2
* 524_007_include_sub_param.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title></title>
</head>
<body>
<h2>scriptlet</h2>
<%
String irum1 = request.getParameter("irum1");
String irum2 = request.getParameter("irum2");
out.println("이 안에 너 있다~" + "<br>");
%>
<hr>
<h2>el</h2>
${param.irum1 }가 ${param.irum2 }에게 말하기를<br>
${"이 안에 너 있다" }<br>
</body>
</html>
524_007_include_main.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h2>include-param</h2>
<pre>
include directive : 내용을 그래로 include
inclide action tag : html, jsp 등의 처리 결과를 include
parma : 값을 넘겨줄 때
</pre>
<!--
(1) 값을 입력, (2) value를 사용
-->
<!-- param을 넘겨줘서 sub쪽에서 실행한 결과가 지금 여기 main으로 넘어옴. -->
<jsp:include page="524_007_include_sub_param.jsp">
<jsp:param name="irum1" value="jahoon"/>
<jsp:param name="irum2" value="soobin"/>
</jsp:include>
</body>
</html>
□ <include>를 이용해 HTML5 웹 구현
nav의 메뉴에 있는 <a> 태그를 클릭하면 main 부분의 내용이 변하도록 설정하고자 한다.
* head.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<!-- head.jsp -->
<!-- 로고, 회사건물, 전경 -->
상단 부분
<img src="gom.jpg" width="100" height="100">
<script>
var head1 = document.getElementById("head1")
head1.style.backgroundColor = "pink";
</script>
* real_nav.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<!-- real_nav.jsp -->
메뉴 부분
<div id="nav1">
<ul>
<!-- 여기를 클릭하면 real_main.jsp로 가는데 인자로 name = value이므로 kaja이름으로 ceo를 가지고 간다 -->
<li><a href="real_main.jsp?kaja=ceo">CEO 인사말</a>
<li><a href="real_main.jsp?kaja=info">회사연혁</a>
</ul>
</div>
<script>
var nav1 = document.getElementById("nav1");
nav1.style.backgroundColor = "green";
</script>
* footer.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<!-- footer.jsp -->
하단부분<br>
대표자:홍길동<br>
서울 특별시 종로구 종로동 1번지<br>
* ceo.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>CEO가 인사말 하는 중</h1>
<pre>
안녕하세요! CEO입니다!
안녕하세요! CEO입니다!
안녕하세요! CEO입니다!
안녕하세요! CEO입니다!
안녕하세요! CEO입니다!
안녕하세요! CEO입니다!
안녕하세요! CEO입니다!
안녕하세요! CEO입니다!
안녕하세요! CEO입니다!
</pre>
</body>
</html>
* info.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<pre>
회사를 소개합니다. 저희 회사는요 소개합니다!
회사를 소개합니다. 저희 회사는요 소개합니다!
회사를 소개합니다. 저희 회사는요 소개합니다!
회사를 소개합니다. 저희 회사는요 소개합니다!
회사를 소개합니다. 저희 회사는요 소개합니다!
회사를 소개합니다. 저희 회사는요 소개합니다!
회사를 소개합니다. 저희 회사는요 소개합니다!
회사를 소개합니다. 저희 회사는요 소개합니다!
회사를 소개합니다. 저희 회사는요 소개합니다!
회사를 소개합니다. 저희 회사는요 소개합니다!
회사를 소개합니다. 저희 회사는요 소개합니다!
</pre>
</body>
</html>
□ real_main.jsp (메인)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<%
// 메인은 계속 변경되어야 함 (na_main.jsp는 메인이 하나인 경우)
String kaja2 = request.getParameter("kaja"); // 메뉴로부터 받아서
if(kaja2 == null){
kaja2 = "ceo"; //처음 나오는 메인 내용은 ceo.jsp
}
%>
<!-- real_main.jsp -->
<body>
<table width="800" border="2">
<tr>
<td id="head1" colspan="2"><jsp:include page="head.jsp"/></td>
</tr>
<tr>
<td width="200"><jsp:include page="real_nav.jsp"/></td>
<td width="600">
<jsp:include page='<%=kaja2 + ".jsp"%>'/>
</td>
</tr>
<tr>
<td colspan="2"><jsp:include page="footer.jsp"/></td>
</tr>
</table>
</body>
</html>
* 기본 시작은 ceo 인사말
* 회사연혁을 클릭했을 때
□ 액션태그 <forward>
* 524_008_forward_index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body> <!-- 524_008_forward_index.html -->
<!--
<jsp:forward page="implossible.jsp"/>
-->
<form action="524_008_forwardmain.jsp">
이름 : <input type="text" name="irum"><br>
전화번호 : <input type="text" name="tel"><br>
<input type="submit" value="서버로">
<input type="reset" value="취소">
</form>
</body>
</html>
* 525_008_forwardmain.jsp
irum과 tel를 받은 후 tel이 bimil이라면 관리자모드로, 아니라면 homepage로 보내자.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
String irum = request.getParameter("irum");
String tel = request.getParameter("tel"); // 전화번호를 특정 암호로 할 예정 "bimil"이면 관리자모드
// 아래에서 다시 다른 jsp로 forward(방향전환)할 때를 대비하여
session.setAttribute("sirum", irum);
session.setAttribute("stel", tel);
%>
<%
if(tel.equals("bimil")){
%>
<jsp:forward page="524_008_impossible.jsp"/>
<%
} else{
%>
<jsp:forward page="524_008_homepage.jsp"/>
<%
}
%>
</body>
</html>
* 524_008_impossible.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
${sessionScope.sirum }님!!!<br>
여기는 관리자 모드<br>
환영합니다<br>
<pre>
<h2>
짜잔! [Mission Impossible]
여기 정보가 있습니다 --------
우리는 당신들을 부인할 것입니다.
</h2>
</pre>
</body>
</html>
* 524_008_homepage.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<!-- 524_008_homepage.jsp -->
${sessionScope.sirum }님!<br>
우리 홈페이지에 오신 걸 환영합니다<br>
전화번호는 ${sessionScope.stel }이시군요<br>
<body>
</body>
</html>
■ JSTL
□ 기본 실습
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!--
myBatis vs iBatis
-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!-- standard.jar jstl.jar를 web-inf 아래 lib 폴더에 넣음 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!--
만일 위의 taglib 선언없이 이 문장을 사용하면 그냥 무시하고 패스
-->
<c:out value="안녕 jstl"/><br> <!-- 가독성 -->
<% out.println("안녕 jstl"); %>
<!-- jstl & el 1 -->
<%String aa = "chokichi";%>
<%=aa %>
<c:set var="bb" value="chokichi"></c:set><br>
${bb}<br> <!-- 보다시피 jstl과 el의 합작품 -->
<!-- jstl & el 2 -->
<%int jumsoo = 100;%>
<%=jumsoo %>
<c:set var="jum">100</c:set><br>
${jum }<br>
</body>
</html>
□ JSTL - if
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="524_010_kaja2.jsp">
<label for="hobby">취미는</label>
<select name="chimi">
<option value="tennis">tennis</option>
<option value="soccer">soccer</option>
<option value="golf">golf</option>
</select>
<input type="submit" value="가자">
</form>
</body>
</html>
* 524_010_kaja2.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!-- 524_010_kaja2.jsp -->
<!-- if 연습, el + jstl 융합(convergence), 아래 작은 따옴표, 큰 따옴표 사용주의 el처럼 jstl문법도 다양하지는 않음 -->
<!-- 자바처럼 == 대신에 equals() 사용 X -->
<c:if test="${param.chimi == 'tennis'}">
<div>아하 테니스</div>
</c:if> <!-- 자바로 치면 1형식 -->
<c:if test="${param.chimi == 'soccer'}">
<div>아하 축구</div>
</c:if>
<c:if test="${param.chimi == 'golf'}">
<div>아하 골프</div>
</c:if>
</body>
</html>
□ JSTL + EL 1
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="kaja_jstl_el.jsp" method="post">
이름 : <input type="text" name="irum"><br>
전화 : <input type="text" name="tel"><br>
<input type="submit" value="서버로">
</form>
</body>
</html>
* kaja_jstl_el.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h3>JSTL & EL 스타일</h3>
<fmt:requestEncoding value="UTF-8"></fmt:requestEncoding>
아하 이름은 <c:out value="${param.irum }"></c:out>
그리고 전화번호는 <c:out value="${param.tel }"></c:out>
</body>
</html>
□ JSTL + EL 2 (키오스크 주문)
* 524_012_input.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>주문입력</h1>
<form name="form1" action="524_012_output.jsp" method="get">
<table border="1" width="300">
<tr>
<td colspan="2" align="center">키오스크 주문</td>
</tr>
<tr>
<td align="center">금액 입력</td>
<td><input type="text" name="don"></td>
</tr>
<tr>
<td colspan="2" align="center">상품 선택</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="checkbox" name="jepoom" value="co,1000"> 콜라(1000원)
<input type="checkbox" name="jepoom" value="sa,1200"> 사이다(1200원)<br>
<input type="checkbox" name="jepoom" value="bb,900"> 빵 (900원)
<input type="checkbox" name="jepoom" value="kw,1000"> 과자(1000원)<br>
<input type="checkbox" name="jepoom" value="ko,1500"> 쿠키(1500원)
<input type="checkbox" name="jepoom" value="mi,1700"> 우유(1700원)
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="주문">
<input type="reset" value="다시입력">
</td>
</tr>
</table>
</form>
</body>
</html>
* 524_012_output.jsp
<%@page import="java.util.StringTokenizer"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>자판기</title>
</head>
<body>
<%
int don = Integer.parseInt(request.getParameter("don"));
String[] jepoom = request.getParameterValues("jepoom");
int cnt = jepoom.length;
String[] jname = new String[cnt];
int[] jprice = new int[cnt];
int hap = 0;
for(int i=0; i<jepoom.length; i++) {
StringTokenizer str1 = new StringTokenizer(jepoom[i],",");
jname[i] = str1.nextToken();
jprice[i] = Integer.parseInt(str1.nextToken());
hap = hap + jprice[i];
if(jname[i].equals("co")){
jname[i] = "콜라";
}else if(jname[i].equals("sa")){
jname[i] = "사이다";
}else if(jname[i].equals("bb")){
jname[i] = "빵";
}else if(jname[i].equals("kw")){
jname[i] = "과자";
}else if(jname[i].equals("ko")){
jname[i] = "쿠키";
}else if(jname[i].equals("mi")){
jname[i] = "우유";
}else{
jname[i] = "";
}
}
%>
<h1>주문내역 및 결제</h1>
<table border="5" width="500">
<tr>
<td colspan="2" align="center">키오스크 주문 결제</td>
</tr>
<tr>
<td align="center">결제 내역</td>
<td><%=don %></td>
</tr>
<tr>
<td align="center">선택 상품</td>
<td align="left">
<%
for(int j=0; j<cnt; j++){
out.println(jname[j] + " " + jprice[j] + "원" + "<br>");
}
%>
</td>
</tr>
<tr>
<td align="center">잔 액</td>
<td><%=don - hap %></td>
</tr>
<tr align="center">
<td colspan="2" align="center">
<form action="524_012_input.jsp">
<input type="submit" value="키오스크 주문 화면으로"/>
</form>
</td>
</tr>
</table>
</body>
</html>
□ forEach
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
String[] kwail = {"사과","배","감"};
session.setAttribute("kwail",kwail);
/* kwail이라는 속성명을 가진 기억창고에 kwail배열을 넣어라
name은 따옴표 사용, value는 기억창고이면 따옴표 없이, 문자열이면 따옴표 사용*/
%>
<a href="525_000_foreach_kaja.jsp">가자3-일단 foreach개념인 for(:)을 사용</a>
</body>
</html>
* 525_000_foreach_kaja.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h2>강남스타일 아니죠-자바스타일</h2>
<% //세션의 속성형 "kwail"
String[] kwail=(String[]) session.getAttribute("kwail");
//getParameter X
for(String imsi:kwail){ //자바문법방식으로 kwail 배열에서 하나씩 꺼내서 출력
out.println(imsi+"<br>");
//자바는 for-콜론 for(:)
//자바 스크립트에서는 for-in for(in)
}
%>
<h2>jstl + EL 스타일</h2><!-- 사과 배 감 -->
<c:forEach var="imsi" items="${sessionScope.kwail }">
${imsi }<br> <!-- session.getAttribute -->
</c:forEach>
</body>
</html>
□ textarea
<%@ 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>상품후기</h1>
<hr>
<form name="f1" action="525_001_textarea_output.jsp" method="post">
<table>
<tr>
<td>상품후기를 적어주세요</td>
</tr>
<tr>
<td>
<textarea cols="50" rows="5" name="textarea1" id="idtextarea"></textarea>
</td>
</tr>
<tr>
<td>
<input type="submit" value="후기 작성 보내기!">
<input type="reset" value="취소">
</td>
</tr>
</table>
</form>
</body>
</html>
* 525_001_textarea_output.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>구입내역출력</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
%>
<h2>구입 내역</h2>
<table border="2" width="700">
<tr>
<td>상품후기를 받았습니다</td>
</tr>
<tr>
<td>
<textarea cols="50" rows="5"><c:out value="${param.textarea1 }"/></textarea>
</td>
</tr>
<tr>
<td colspan="3">
후기 입력으로 가려면 <a href="525_001_textarea_input.jsp">여기</a>를 누르세요<br>
</td>
</tr>
</table>
</body>
</html>
□ MVC1 & JSP 연습 1
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!--
id에는 100,
text area에는 kim 엔터 / male 엔터, seoul 엔터 형식으로 입력
-->
<form action="525_002_SawonInsertPrepared.jsp">
DB에 입력 사원 저장<br>
<input type="text" name="id1"><br>
<textarea cols="50" rows="5" name="textarea1"></textarea>
<input type="submit" value="DB저장">
</form>
</body>
</html>
* 525_002_SawonInsertPrepared.jsp
- DB에 데이터를 넣는다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
// 지금 작업은 jsp + db
// 가장 "기본적인" jsp(DAO, VO 사용법 잘 모를 경우) 프로젝트에서는 jsp마다 이 작업을 써주어야 함
// 즉, 모든 jsp파일 처음에 아래 선언들을 먼저 기술해야 함
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con1 = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
PreparedStatement pstmt1 = null;
ResultSet rs1 = null;
%>
<%
request.setCharacterEncoding("EUC-KR");
request.setCharacterEncoding("EUC-KR");
String id1 = request.getParameter("id1");
String textarea1 = request.getParameter("textarea1");
String sql = "insert into TelTable7 values (?, ?)";
pstmt1 = con1.prepareStatement(sql);
pstmt1.setString(1, id1);
pstmt1.setString(2, textarea1);
pstmt1.executeUpdate();
%>
<a href="525_002_search.html">[자료검색]</a><br>
</body>
</html>
* 525_002_search.html
입력한 데이터를 검색해보자.
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!-- 아이디 100 사원정보를 넣었으므로 검색시에는 id에 100 입력 -->
<form action="525_002_SawonViewPrepared.jsp">
DB에서 검색<br>
<input type="text" name="id1"><br> <!-- id가 숫자이므로 100, 200 등으로 검색 -->
<input type="submit" value="검색">
</form>
</body>
</html>
* 525_002_SawonViewPrepared.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con1 = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
PreparedStatement pstmt1 = null;
ResultSet rs1 = null;
%>
<%
request.setCharacterEncoding("EUC-KR");
request.setCharacterEncoding("EUC-KR");
int overid1 = Integer.parseInt(request.getParameter("id1"));
String[] textarea1 = null;
String sql = "select * from TelTable7 where id = ?";
pstmt1 = con1.prepareStatement(sql);
pstmt1.setInt(1, overid1);
rs1 = pstmt1.executeQuery();
// 사번 100번은 1명만 있고 그리고 반드시 있음
while(rs1.next()){ // 해당 id가 있으면
%>
<textarea cols="50" rows="5" name="textarea1">
<%=rs1.getString("bigo") %>
</textarea><br>
<%
}
rs1.close();
pstmt1.close();
con1.close();
%>
</body>
</html>
□ 서버, 서블릿, JSP 버전 확인
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
서버버전은 <%=application.getServerInfo() %><br>
서블릿버전은 <br>
주버전은 <%=application.getMajorVersion() %><br>
부버전은 <%=application.getMinorVersion() %><br>
JSP버전은
<%=JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion() %>
</body>
</html>
□ MVC1 & JSP 연습 2
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!-- 전형적인 MVC1 모델 -->
<!--
검색하여 출력하는 output design
table 태그 사용하여
아이디 이름 전화 입사일
100 hong 010-3333-7777 2020-10-15
같은 형식으로 출력하자.
-->
<form action="525_004_SawonViewPrePared.jsp">
검색할 사원 번호를 입력하세요<br>
<input type="text" name="id1"><br>
<input type="submit" value="검색">
</form>
</body>
</html>
* 525_004_SawonViewPrePared.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>사원 전체 명단</h1>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con1 = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
PreparedStatement pstmt1 = null;
ResultSet rs1 = null;
%>
<table border="2">
<tr>
<th>아이디</th>
<th>이름</th>
<th>전화</th>
<th>입사일</th>
</tr>
<%
int overid = Integer.parseInt(request.getParameter("id1"));
String sqlstr1 = "select * from TelTable5 where id = ?";
pstmt1 = con1.prepareStatement(sqlstr1);
pstmt1.setInt(1, overid);
rs1 = pstmt1.executeQuery();
while(rs1.next()){
%>
<tr>
<td><%=rs1.getInt("id") %></td>
<td><%=rs1.getString("name") %></td>
<td><%=rs1.getString("tel") %></td>
<td><%=rs1.getDate("d") %></td>
</tr>
<%
}
rs1.close(); pstmt1.close(); con1.close();
%>
</table>
</body>
</html>
■ MVC1 모델 최종 실습 - 사원정보 관리
□ 525_005_index.jsp
'IT&코딩 > 국비지원' 카테고리의 다른 글
Servlet - 1 (설명, no_frontcontroller) (0) | 2023.05.29 |
---|---|
MVC1 모델 최종 (사원관리 프로그램) (0) | 2023.05.26 |
JSP, EL, JSTL - 1 (0) | 2023.05.25 |
Ajax (0) | 2023.05.24 |
jQuery (0) | 2023.05.22 |