..열심히 공부하세../MVC

[01] 표현언어

댄스댄스 2012. 6. 18. 19:28

 

[표현언어:EL]

- expression Language
- JSP페이지에서 자바 코드의 역할을 대신하기 위해서 개발된 언어
- 데이터 처리 결과를 출력하는 JSP페이지에 주로 사용
- 복잡한 데이터 처리 로직을 구사할 수 없다
- JSP2.0에서 새롭게 추가된 스크립트 언어
- JSTL과 연동
- 표현언어(EL)의 표현식
  . 변수와 연산자를 포함한다.
  . JSP의 영역(page, request, session, application)에 저장된 어떤 속성 및 자바빈이라는 표현언어(EL)의 변수로 사용될 수 있다.
  . ${식}
   식 안에는 데이터이름, 연산자를 포함하는 EL식
- ${num}은 <%=num%>(표현식)와 결과가 같다
- JSP스크립트 내부에서는 쓸수 없다 <%%>, <%!%>, <%=%>
- 표현언어의 내장객체
  . pageScope
  . requestScope
  . sessionScope
  . applicationScope
  . param 모든 request 파라미터들을 문자열로 가진 콜렉션


- 연산자를 사용 elEx1.jsp
- 파라미터값 처리 elEx2.jsp -> elEx2ok.jsp
- 내장객체의 사용 elEx3.jsp
- 표현언어에서 자바 클래스의 메소드 사용 elEx4.jsp
  1) 자바 클래스 파일을 작성한다(.java)
  2) 태그 라이브러리에 대한 설정 정보를 담고 있는 TLD파일을 작성한다.
  3) web.xml 파일에 tld파일을 사용할 수 있는 설정 정보를 추가한다
  4) 자바 클래스의 메소드에 접근하는 JSP페이지를 작성한다

 

=============================
- JSP에서 자바클래스를 사용하는 방법
  1) <%@ page import="part.el.Compute" %>
  2) 자바빈 활용
      <jsp:useBean id="cmp2"
             class="part.el.Compute"
             scope="page"/>
  3) 표현언어에서 활용

============================

- 표현언어에서 자바 클래스의 메소드 사용 작성 순서
   1) Compute.java 작성
   2) /WEB-INF/tlds 폴더 생성
   3) /WEB-INF/tlds/el-functions.tld 파일 생성 (New->File->Source탭)

    //메소드 1개당 function태그 1개
    <function>
        <description> x 와 y의 합</description> //설명
        <name>add</name> //메소드명. ()는 생략되어야 한다
        <function-class>part.el.Compute</function-class>
       //사용할 메소드가 정의되어 있는 클래스명을 기술. 패키지명 포함
        <function-signature>
        int add(java.lang.String,java.lang.String)
       //매개변수의 타입은 객체형일 경우 패키지명을 포함한 풀네임을 써야 한다.
        </function-signature>
   </function>

 
   4) web.xml (배치기술자)

  <jsp-config>
    <taglib>
        //tld파일의 가르키는 것 (네임스페이스)
        <taglib-uri>mycompute</taglib-uri>

        //tld파일의 실제 물리적인 경로
        <taglib-location>/WEB-INF/tlds/el-functions.tld</taglib-location>
    </taglib>
  </jsp-config>


=============================
HTML+XML ->
XHTML ->
HTML+XHTML ->
HTML4(웹) 가장 일반화 ->
HTML5(스마트앱용)
=============================

 

- xml 문법
   . 사용자 만들어서 사용하는 태그
     예를들어) <green>그린컴퓨터학원</green>
   . 프로그램 개발시 자주 사용하는 문법은 아니다.
   . 서버에서 배치기술자라고 하는 web.xml에서 사용한다
   . 여는 태그가 있으면 반드시 닫는 태그가 와야 한다.
   . 여는 태그와 닫는 태그를 동시에 할수도 있다 <br/>

 

 

elEx1.jsp------------------------------

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>표현언어</title>
</head>
<body>

<%
String name="홍길동";
int kor=70,eng=80;
int aver=(kor+eng)/2;

if(aver>=70)
{
%>
   <a href="#"><%=name %> ${70}</a>
<%
}
else{
%>
   <a href="#">수박</a>
<%
}
%>

<br/>------------------
<br/>
<H3>간단한 표현언어(EL)예제</H3>
<P>
연산자를 사용한 예와 내장객체의 사용한 예:

<TABLE BORDER="1">
  <THEAD>
    <TD><B>표현식</B></TD>
    <TD><B>값</B></TD>
  </THEAD>
  <TR>
    <TD>\${2 + 5}</TD>
    <TD>${2 + 5}</TD>
  </TR>
  <TR>
    <TD>\${4/5}</TD>
    <TD>${4/5}</TD>
  </TR>
  <TR>
    <TD>\${5 div 6}</TD>
    <TD>${5 div 6}</TD>
  </TR>
  <TR>
    <TD>\${5 mod 7} 나머지</TD>
    <TD>${5 mod 7}</TD>
  </TR>
  <TR>
    <TD>\${2 < 3}</TD>
    <TD>${2 < 3}</TD>
  </TR>
  <TR>
    <TD>\${2 gt 3} </TD>
    <TD>${2 gt 3}</TD>
  </TR>
  <TR>
    <TD>\${(5 > 3) ? 5 : 3}</TD>
    <TD>${(5 > 3) ? 5 : 3}</TD>
  </TR>
  <TR>
    <TD>\${header["host"]}</TD>
    <TD>${header["host"]}</TD>
  </TR>

</TABLE>
</body>
</html>

 

 

elEx2.jsp-----------------------

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<TITLE>표현언어의 사용예제2</TITLE>
</HEAD>

<BODY>

<H3>표현언어의 사용예제2 -파라미터값 처리</H3>
<P>
<FORM action="elEx2ok.jsp" method="post">
   이름 : <input type="text" name="id">
   비번 : <input type="text" name="passwd">
       <input type="submit" value="확인">
</FORM>
</BODY>
</HTML>

 

elEx2ok.jsp---------------------------

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<% request.setCharacterEncoding("euc-kr");%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
String id=request.getParameter("id");
String passwd=request.getParameter("passwd");
%>
1)변수대입-----------<br/>
아이디:<%=id %><br/>
비번:<%=passwd %><br/>

2)request객체 직접 접근-----------<br/>
아이디:<%=request.getParameter("id") %><br/>
비번:<%=request.getParameter("passwd") %><br/>

3)표현언어 파라미터값 처리------------<br/>
아이디:${param.id}<br/>
비번:${param.passwd }<br/>

 

</body>
</html>

 

elEx3.jsp---------------------------------

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>표현언어 내장객체</title>
</head>
<body>
<%
String str="대한민국";
pageContext.setAttribute("name", "홍길동");//해당페이지에서만 생존
request.setAttribute("id", "user1");//request영역
session.setAttribute("pass", "1234");//session영역
%>

str : <%=str %> <br/>
str : ${str }<br/>
name : ${name }<br/>

표현언어로 접근------------<br/>
id : ${requestScope.id }<br/>
pass : ${sessionScope.pass }<br/>
name : ${pageScope.name }<br/>
param : ${param.name }<br/>

 

 


</body>
</html>

 

elEx4.jsp------------------------------

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<jsp:useBean id="cmp2"
             class="part.el.Compute"
             scope="page"/>
            
<%
int res=cmp2.add("5", "8");
out.print(res);
%>

<%--

1)첫번째 방법
<%@ page import="part.el.Compute" %>

<%
Compute cmp=new Compute();
int res=cmp.add("3", "5");
out.print(res);
%>

--%>

 

 

elEx5.jsp----------------

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<TITLE>표현언어에서 함수사용하기</TITLE>
</HEAD>

<BODY>

<H3>표현언어에서 함수사용하기 -두 숫자의 덧셈</H3>
<P>
<FORM action="elEx5ok.jsp" method="post">
   X : <input type="text" name="x" >
   <BR>
   Y : <input type="text" name="y" >
   <input type="submit" value="덧셈">
</FORM>

</BODY>
</HTML>

 

elEx5ok.jsp-----------------------

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
   
<%@ taglib prefix="test" uri="mycompute" %>

<% request.setCharacterEncoding("euc-kr");%>   
   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<TITLE>표현언어에서 함수사용하기</TITLE>
</HEAD>

<BODY>

<H3>표현언어에서 함수사용하기 -두 숫자의 덧셈</H3>
<P>

합은 : ${test:add(param.x,param.y)} 입니다.
<br/>
빼기 : ${test:sub(param.x,param.y)} 입니다.
<br/>
곱하기 : ${test:mul(param.x,param.y)} 입니다.
<br/>
나누기 : ${test:divide(param.x,param.y)} 입니다.
<br/>
나머지 : ${test:modulus(param.x,param.y)} 입니다.

</BODY>
</HTML>