JSP 표현언어 2

MINJU KIM·2023년 12월 8일

JSP

목록 보기
22/30

쿠키 HTTP 헤더 컨텍스트 초기화 매개변수 출력하기

//OtherImplicitObj.jsp, 4장에서 배운cookieManager사용
<%@ page import="com.util.CookieManager" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    CookieManager.makeCookie(response, "ELCookie", "EL좋아요", 10);
%>
<html>
<head>
    <title>표현언어 그 외 내장 객체</title>
</head>
<body>
<h3>쿠키값 읽기</h3>
<li>ELCookie: ${ cookie.ELCookie.value }</li>
<h3>HTTP 헤더 읽기</h3>
<ul>
    <li>host : ${header.host}</li>
    <li>user-agent : ${header['user-agent']}</li>
    <li>cookie : ${header.cookie}</li>
</ul>
<h3>컨텍스트 초기화 매개 변수 읽기</h3>
<li>OracleDriver : ${ initParam.OracleDriver }</li>

<h3>컨텍스트 루트 경로 읽기</h3>
<li> ${ pageContext.request.contextPath}</li>
</body>
</html>

결과


경로 설정이 달라서 우리는 보이지 않는다.

컬렉션 사용하기

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="com.common.Person" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>표현언어 - 컬렉션</title>
</head>
<body>
<h2>List 컬렉션</h2>
<%
    List<Object> aList = new ArrayList<Object>();
    aList.add("청해진");
    aList.add(new Person("장보고", 28));
    pageContext.setAttribute("Ocean", aList);
%>

<ul>
    <li>0번째 요소 : ${ Ocean[0] }</li>
    <li>1번째 요소 : ${ Ocean[1].name }, ${ Ocean[1].age }</li>
    <li>2번째 요소 : ${ Ocean[2] } <!--출력되지않음--></li>

</ul>
<h2>Map 컬렉션</h2>
<%
    Map<String, String> map = new HashMap<String, String>();
    map.put("한글", "훈민정음");
    map.put("Eng", "English");
    pageContext.setAttribute("King", map);
%>
<ul>
    <li>영문 Key : ${ King ["Eng"] }, ${ King['Eng'] }, ${ King.Eng }</li>
    <li>한글 Key : ${ King ["한글"] }, ${ King['한글'] }, \${ King.한글 }<!--에러가 난다--></li>

</ul>
</body>
</html>
//${ King.한글 }는 오류가 난다! 한글은 잘 쓰지않는게 일반적이다.

결과

인스턴스메소드, 정적메소드 호출

//메소드를 만들어주자 MyElClass.java
package com.el;

public class MyElClass {

    //주민번호를 입력받아 성별을 반환합니다.
    public String getGender(String jumin) {
        String returnStr = "";
        int beginIdx = jumin.indexOf("-") + 1;
        String genderStr = jumin.substring(beginIdx, beginIdx + 1);
        int genderInt = Integer.parseInt(genderStr);
        if (genderInt == 1 || genderInt == 3) {
            returnStr = "남자";
        } else if (genderInt == 2 || genderInt == 4) {
            returnStr = "여자";
        } else {
            returnStr = "주민번호 오류입니다.";

        }return returnStr;
    }
    //입력받은 문자열이 숫자인지 판별해줍니다.
        public static boolean isNumber(String value){
            char[] chArr = value.toCharArray();
            for (int i = 0; i < chArr.length; i++) {
                if(!(chArr[i]>='0' && chArr[i] <='9')){
                    return false;
                }
            }
            return true;
        }
        //입력받은 정수까지의 구구단을 HTML 테이블로 출력
        public static String showGugudan(int limitDan){
            StringBuffer sb = new StringBuffer();
            try{
                sb.append("<table border='1'>");
                for (int i = 0; i < limitDan; i++) {
                    sb.append("<tr>");
                    for (int j = 0; j < 9; j++) {
                        sb.append("<td>" + i + "*" + j + "=" + (i * j) + "</td>");
                    }
                    sb.append("</tr>");
                }
                sb.append("</table>");
            }catch (Exception e){
                e.printStackTrace();
            }
            return sb.toString();
        }

    }



//ElCallMethod.jsp
<%@ page import="com.el.MyElClass" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    MyElClass myClass = new MyElClass(); //객체 생성
    pageContext.setAttribute("myClass", myClass); //page영역에 저장
%>
<html>
<head>
    <title>표현 언어 메서드 호출</title>
</head>
<body>
<h3>영역에 저장 후 메서드 호출하기</h3>
001225-3000000 => ${ myClass.getGender("0012225-3000000") }<br/>
001225-2000000 => ${ myClass.getGender("0012225-2000000") }<br/>
<h3>클래스명을 통해 정적 메서드 호출하기</h3>
${ MyElClass.showGugudan(7)}
</body>
</html>

EL은 영역에 저장된 값을 가져오는 기법이므로 호출하려면 먼저 객체를 만들어 영역에 저장해야한다. 그러고 나면 저장된 속성명을 통해 메서드를 호출할 수 있다.

0개의 댓글