관리 메뉴

nkdk의 세상

2장 EL의 기본 예제들 기본 표현식 본문

My Programing/Framework

2장 EL의 기본 예제들 기본 표현식

nkdk 2008. 3. 9. 22:06
스트럭쳐를 좀 더 빛나게 하기 위해 el을 사용하면 좀 더 유용하겠죠.
한 장에 몰아서 넣습니다.

간단한 el의 사용

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<% request.setCharacterEncoding("euc-kr"); %>
<html><body>환영합니다.
<%
if(request.getParameter("userName")==null) {
%>
<jsp:forward page="el.html" />
<%
}
%>
표현식 사용 : <%=request.getParameter("userName") %>
<p>EL 사용 : ${param.userName}
</body></html>

---------------

간단한 연산식 연산하는 법

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<% request.setCharacterEncoding("euc-kr"); %>
<html><body><h2>EL TEST</h2>
html에서 넘어 온 이름 : ${param.irum }, ${param["irum"]}
<br>
html에서 넘어 온 성격 : ${paramValues.sung[0]}, ${paramValues.sung["1"]}
<p>
*** 연산자 사용 ***<br>
\${3+4} --> ${3+4}<br>
\${5/4} --> ${5/4}, ${5 div 4}<br>
\${3*4} --> ${3%4}, ${3 mod 4}<br>
\$(3 > 4} --> ${3 > 4}, ${3 gt 4}<br>
\${5>4?10:20} --> ${5>4?10:20}<br>
\${header.host} --> ${header.host}, ${header["host"]}
</body></html>

------------------------------

간단히 db연결하는 법 db연결

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<html><head><title>상품 자료 출력</title></head><h3>상품자료 출력</h3><body>
<sql:setDataSource var="ds" url="jdbc:mysql://localhost:3306/test" driver="com.mysql.jdbc.Driver"
user="root" password="123" />
<sql:query var="rs" dataSource="${ds}">
select * from sangdata where code >= ? and code <= ?
<sql:param value="${2}" />
<sql:param value="${4}" />
</sql:query>
<table border="1">
<tr>
<td>코드</td>
<td>상품명</td>
<td>수량</td>
<td>단가</td>
<td>금액</td>
</tr>
<c:forEach var="row" items="${rs.rows}" >
<tr>
<td><c:out value="${row.code}" /></td>
<td><c:out value="${row.sang}" /></td>
<td><c:out value="${row.su}" /></td>
<td><c:out value="${row.dan}" /></td>
<c:set var="tot" value="${row.su * row.dan}"/>
<td><c:out value="${tot}" /></td>
</tr>
</c:forEach>
</table>
</body></html>

---------------
jstl의 예제 변수 함수들

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>JSTL</title>
</head>
<body>
***변수 값 설정<br>
<c:set var="irum" value="한국인" scope="page"/>
<c:out value="${irum}" />
<br>
<c:set var="irum" scope="page">
한국인
</c:set>
<c:out value="${irum}" />
<br>
<c:set var="aa" value="${header['User-Agent']}" />
<br> aa 값은 <c:out value="${aa}" />
<c:remove var="aa" />
<br> aa 값은 <c:out value="${aa}" />
<p>
<c:set var="su1" value="${10 }" />
<c:set var="su2">
10.8
</c:set>
합은 : ${su1 + su2 }
<p>***조건문 연습 <br>
<c:set var="bb" value="${'star'}" />
<c:if test="${bb =='star'}">
if 연습 : bb 값은 <c:out value="${bb}"/>
</c:if>
<br>
<c:if test="${bb != null}">
if 연습 : bb 값은 <c:out value="${bb}"/>
</c:if>
<p>
choose 연습:
<c:choose>
<c:when test="${bb =='moon'}">
<c:out value="${bb}"/> <==첫번째 조건 처리
</c:when>
<c:when test="${bb =='star'}">
<c:out value="${bb}"/> <==두번째 조건 처리
</c:when>
<c:otherwise>어떠한 조건에도 맞지 않을 때 수행</c:otherwise>
</c:choose>
<p>
<c:choose>
<c:when test = "${empty param.name }">
<form>
이름 : <input type="text" name="name">
<input type="submit" name="확인">
</form>
</c:when>
<c:when test = "${param.name == 'admin' }">
관리자군요
</c:when>
<c:otherwise>
환영합니다. 회원 <c:out value="${param.name}" />님
</c:otherwise>
</c:choose>
<p>
***반복문 연습 <br>
forEach 연습:
<c:forEach var="cc" begin="1" end="10" step="1">
<c:out value="${cc }" />
</c:forEach>
<p>구구단 중 5단 찍기<br>
<c:forEach var="cc" begin="1" end="9" step="1">
5 * ${cc } = ${5*cc }<br>
</c:forEach>
<p>
컬렉션 정보 출력 (예: header) : <br>
<c:forEach var="h" items="${headerValues }">
속성 : <c:out value="${h.key}"></c:out>&&&
값: <c:forEach var="i" items="${h.value}">
<c:out value="${i}" /><br>
</c:forEach>
</c:forEach>
<%
//이전에 사용 하던 jsp문장
//String [] items=(String[]request.getAttrivute("name");
//for(int i=0; i < items.length; i++){
// String na = items[i];
// out.println(na);
//}
//요즘 사용 하는 문장
//<c:forEach var="na" items="${name}">
// ${na}
//</c:forEach>
%>
<p>
<%
java.util.HashMap map = new java.util.HashMap();
map.put("name","홍길동");
map.put("today",new java.util.Date());
%>
<c:set var="arr" value="<%=new int[]{1,2,3,4,5} %>" />
<c:set var="m" value="<%=map %>"/>
<p>* 배열 출력<br>
<c:forEach var="i" items="${arr}" begin="2" end="4">
[${i}]
</c:forEach>
<p>* Map 출력<br>
<c:forEach var="i" items="${m}">
${i.key} ; ${i.value}<br>
</c:forEach>
<p><hr>*** 문자열 분할<br>
<c:forTokens var="animal" items="hores, tiger, lion, pig, dog" delims=",">
동물 : <c:out value="${animal}" />
</c:forTokens>

<br>
<c:forTokens var="city" items="서울,부산*마산,광주" delims=",*" varStatus="st" >
<c:out value="${st.count}:${city}" />
</c:forTokens>
<p>
*** 숫자 및날짜 출력 서식
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
숫자 : <fmt:formatNumber value="12345.678" type="number" /><br>
통화 : <fmt:formatNumber value="12345.678" type="currency" currencySymbol="W" /><br>
숫자 : <fmt:formatNumber value="12345.678" type="percent" /><br>
소수이하 : <fmt:formatNumber value="12345.678" pattern=".0" /><br>
<p>
<c:set var="kor" value="90" />
<c:set var="eng" value="100" />
<fmt:formatNumber value="${(kor + eng)/2}" type="number"/>
<p>
<c:set var="now" value="<%=new java.util.Date() %>"/>
<c:out value="${now }" />
날짜:<fmt:formatDate value="${now}" type="date" />
시간:<fmt:formatDate value="${now}" type="time" />
모두:<fmt:formatDate value="${now}" type="both" />
</body></html>

-----------------------

자바에서 값을 넘겨서 받기


TestJstl.java


import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class TestJstl extends HttpServlet implements Servlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String irum = "마당쇠";
request.setAttribute("man", irum);

sk.Person p = new sk.Person();
p.setName("한국인");
request.setAttribute("person", p);

sk.Student s = new sk.Student();
s.setName("아사코");
s.setAge(20);
request.setAttribute("student", s);

// 문자열 처리
String []animal={"말", "고양이", "개", "돼지", "소"};
request.setAttribute("animal", animal);
String []food={"당근", "생선", "개밥", "밥", "여물"};
java.util.ArrayList<Object> list = new java.util.ArrayList<Object>();
list.add(animal);
list.add(food);
request.setAttribute("list", list);

RequestDispatcher view = request.getRequestDispatcher("/TestJstl.jsp");
view.forward(request, response);
}
}

값을 받아서 뿌려주기
TestJstl.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@page import="sk.*"%>
<html><body>
안녕 ${man}씨 <- 서블릿의 변수값 출력
<p>
<%=request.getAttribute("person") %> <-person의 주소가 출력된다.
<p>
<%
Person p = (Person) request.getAttribute("person");
%>
<%=p.getName() %> <- person 멤버 출력
<br>
<%=((Person)request.getAttribute("person")).getName() %>
<br>
${requestScope.person.name } <- el을 사용함.
<br>${requestScope.person["name"]} <- el을 사용함. 확장성이 더 좋다.
<p>
<%=((Student)request.getAttribute("student")).getName() %>
<%=((Student)request.getAttribute("student")).getAge() %>
<br>${requestScope.student["name"]}의 나이는 ${requestScope.student["age"]} 입니다.
<p>
<jsp:useBean id="per" class="sk.Person" scope="request" />
<jsp:setProperty name="per" property="name" value="이겨라" />
<jsp:getProperty name="per" property="name" />
<br>${per.name}
<p><hr>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
${animal[0]} ${animal[3]}<br>
${list[0][1]} ${list[1][1]}
<p>
<c:if test="${list != null }">
<a href="http://daum.net">daum</a>
</c:if>
<c:if test="${list == null }">
<a href="http://naver.com">naver</a>
</c:if>
<p>
<c:choose>
<c:when test = "${animal != '0'}">참이면 수행</c:when>
<c:when test = "${list != '0'}">현재가 참이어도 위가 참이면 수행 x</c:when>
<c:otherwise>모두 거짓일 때 수행</c:otherwise>
</c:choose>
<p><hr>
<c:catch var="ex" >
<% int a=10/0; out.println(a); %>
</c:catch>
<c:if test="${ex != null}">
에러발생 : ${ex.message}
</c:if>
<br>계속 진행
<%--다른 문서 포함 --%>
<%@ taglib prefix="good" uri="http://java.sun.com/jsp/jstl/core" %>
<good:import url="http://www.daum.net" />
<p>
<jsp:include flush="true" page="Poham.jsp">
<jsp:param name="title" value="hava a nice day!" />
</jsp:include>
<p>
<good:import url="Poham.jsp">
<good:param name="title" value="Fighting Korea!!!" />
</good:import>
<p><%--url 가져오기 --%>
<c:set var="url" value="http://naver.com"/>
<c:import var="u" url="${url}" />
<c:out value="${url}" />
<c:out value="${u}" />
<base href="<c:out value="${url}" />">
<c:out value="${u}" escapeXml="false" />
</base>
</p>
</body></html>

이곳에 전부 몰아 넣었습니다.

----