멀티캠퍼스 백엔드 과정35일차[7월 20일] - 게시글 CRUD + EL

GoldenDusk·2023년 7월 26일
0

표현 언어 EL : Expression Language

표현언어란

표현언어

  • 변수의 값을 표현식보다 편하게 출력할 수 있게 지원
  • 표현 언어 소개 ⇒ EL의 내장객체 활용하기 ⇒ 컬렉션 사용하기 ⇒ EL 연산자들 ⇒ 인스턴스 메소드 호출 ⇒ 정적 메서드 호출하기

표현언어의 기능

  • JSP 내장 객체의 영역에 담긴 속성을 사용 가능
  • 산술 연산, 비교 연산, 논리 연산이 가능
  • 자바 클래스에 정의된 메서드를 호출할 수 있음
  • 표현 언어만의 객체를 통해 JSP와 동일한 기능을 수행

기본 사용법

  • EL 기본 사용법 : ${속성}
  • 속성은 영역에 저장된 속성을 의미
  • 즉, 변수나 값을 바로 쓸 수 있던 표현식과는 다르며, 만약 JSP에서 생성한 변수를
    접근하려면, 반드시 영역에 저장 후 사용
  • 만약 request 영역에 저장하였다면 다음과 같이 출력할 수 있음
<h2>${ reuqestScope.saveVar }</h2>

  • page, request, session, application 4가지 데이터
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
	//데이터 저장가능한 4개의 내장객체에 <이름, 값> 저장한다.
	pageContext.setAttribute("scopeValue", "페이지");
	request.setAttribute("scopeValue", "리퀘스트");
	session.setAttribute("scopeValue", "세션");
	application.setAttribute("scopeValue", "어플리케이션");

%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL 표현언어</title>
</head>
<body>
<ul>
<li>페이지 영역 : ${pageScope.scopeValue} </li>
<li>리퀘스트 :  ${requestScope.scopeValue} </li>
<li>세션 : ${sessionScope.scopeValue}  </li>
<li>어플리케이션 :  ${applicationScope.scopeValue} </li>
<li>${scopeValue} </li> <!-- 가장 작은 범위 출력 -->
</ul>
</body>
</html>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<meta charset="UTF-8">
<head><title>표현 언어(EL) - 폼값 처리</title></head>
<body>
    <h2>폼값 전송하기</h2>
    <form name="frm" method="post" action="FormResult.jsp">
        이름 : <input type="text" name="name" /><br />
        성별 : <input type="radio" name="gender" value="Man" />남자
               <input type="radio" name="gender" value="Woman" />여자<br />
        학력 :
            <select name="grade">
                <option value="ele">초딩</option>
                <option value="mid">중딩</option>
                <option value="high">고딩</option>
                <option value="uni">대딩</option>
            </select><br />
        관심 사항 : 
            <input type="checkbox" name="inter" value="pol" />정치
            <input type="checkbox" name="inter" value="eco" />경제
            <input type="checkbox" name="inter" value="ent" />연예
            <input type="checkbox" name="inter" value="spo" />운동<br />
        <input type="submit" value="전송하기" />
    </form>
</body>
</html>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>FormResult.jsp</title>
</head>
<body>
<h2>FormResult 결과 값 처리</h2>
<ul>
<li> 이름 : ${param.name}  </li>
<li> 성별 : ${param.gender } </li>
<li> 학력 : ${param.grade}  </li>
<li> 관심사항 : ${paramValues.inter[0]} 
			${paramValues.inter[1]}
			${paramValues.inter[2]}
			${paramValues.inter[3]}

</li>
</ul>
</body>
</html>

쿠키

<%@page import="utils.CookieManager"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<%
CookieManager.makeCookie(response, "ELcookie", "ELCookie좋아요", 10);
%>
<head>
<meta charset="UTF-8">
<title>쿠키 , HTTP 헤더 정보 읽기 </title>
</head>
<body>
   <h3>쿠키값 읽기</h3>
   <li>ELcookie : ${cookie.ELcookie.value}</li>
   <h3> 헤더 읽기</h3>
    <ul>
       <li>host : ${header.host}</li>
       <li>user-agent : ${header['user-agent']}</li>
       <li>cookie : ${header.cookie }</li>
       <li>OracleDriver : ${initParam.OracleDriver}</li>
    
    </ul>
</body>
</html>

객체 표현 방식

  • EL에서 객체를 표현할 때는 .(점)이나 []대괄호를 사용
  • 속성명에 특수 기호나 한글이 포함되었을 때는 대괄호만 사용 가능
${ header["user-agent"] } <!--가능-->
${ header.user-agent } <!--에러 발생-->
${ King['한글'] } <!--가능-->
${ King.한글 } <!--에러 발생-->
  • 예제

<%@ page import = "common.Person" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<title>객체 매개변수</title>
</head>
<body>
<h2>객체 매개변수</h2>
<%
	request.setAttribute("personObj", new Person("홍길동", 25));
	request.setAttribute("StringObj", "String : 문자열");
	request.setAttribute("IntegerObj", new Integer(100));
%>

<jsp:forward page="ObjectResult.jsp">
	<jsp:param value="10" name="firstNum" />
	<jsp:param value="20" name="secondNum" />
</jsp:forward>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ObjectResult.jsp</title>
</head>
<body>
<h2>ObjectResult 파라미터 값 출력</h2>
<ul>
<li>Person 객체 : 이름 : ${personObj.name }, 나이 : ${personObj.age }</li>
<li>String 객체 : ${requestScope.StringObj }</li>
<li>Integer 객체 : ${IntegerObj }</li>
<li>${param.firstNum + param['secondNum'] }</li>
<li>${param.firstNum }+ ${param["secondNum"] }</li>
</ul>
</body>
</html>

<%@page import="java.util.ArrayList" %>
<%@page import="java.util.Map" %>
<%@page import="java.util.HashMap" %>
<%@page import="java.util.List" %>
<%@page import="common.Person" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CollectionUse</title>
</head>
<body>
<h2>List Collection</h2>
<%
	List<Object> aList = new ArrayList<Object>();
	aList.add("홍길동");
	aList.add(new Person("둘리", 100));
	pageContext.setAttribute("person", aList);
%>

<ul>
<li>index 0 : ${person[0] }</li>
<li>index 1 : ${person[1].name }, ${person[1].age }</li>
<li>index 2 : ${person[2] }</li> <!-- 출력되지 않음 -->
</ul>

<h2>Map</h2>
<% 
	Map<String, String> map= new HashMap<String, String>();
	map.put("한글", "훈민정음 세종대왕");
	map.put("Eng", "English 미국");
	pageContext.setAttribute("language", map);
%>

<ul>
<li>영문 key : ${language['Eng']}, ${language["Eng"] }, ${language.Eng }</li>
<li>한글 key : ${language["한글"] }, ${language['한글'] }</li>
</ul>
</body>
</html>

회고

왜 어째서... PerperStatment에서 nullpointException이 날까.. 절망.... 게시글 수정할 수 있게 하는 코드에서 자꾸 값이 안 넘어온다 ㅠㅠㅠㅠ 구글링 하고 하는데도 안나오는데.... 왜야!!! 왜냐고.......ㅠㅠ 주말중으로 해보고 월요일에도 해봤는데 잘 모르겠어서 정리해서 강사님께 보냈다... 관련 링크 해결되면 이유도 적어둬야지
에러 노션

profile
내 지식을 기록하여, 다른 사람들과 공유하여 함께 발전하는 사람이 되고 싶다. gitbook에도 정리중 ~

0개의 댓글