YJ의 새벽

Servlet( EL ) 본문

SelfStudy/Server ( Servlet , JSP )

Servlet( EL )

YJDawn 2023. 3. 21. 15:35

 

 

 

 

 

  • EL  ( Expression Language )

--  JSP 의 표현식을 조금 더 효율적으로 간단히 작성할 수 있도록 고안된 표현 언어.

--  화면에 출력하고자 하는 자바 코드를

    ${ key }  형식으로 작성하면, 해당위치에  value가 출력됨.

     ${ key } 

     -- import 구문 생략

     -- 객체에 저장된 값 얻어올때 getter 호출하는데 

         get필드명() 이 아닌 ,  필드명만 작성하면 됨 . 

     -- 별도의 다운캐스팅이 필요없음.

 

 

--  EL 의 특징 

 

   -- get 이라는 단어를 사용하지 않는다.

        = 왜 ?  EL == 화면에 표한하는 언어, 출력용 언어 (setting 불가능)

            set 을 못하니까 get 만 남은상황 ,  get 생략해도 무조건 get

 

-- EL로 request에 세팅된 파라미터 얻어오는 방법.

  -- ${ param.name속성값 }

    -- 데이터 파싱 ( String->int ) 자동으로 된다 . !

 

   -- EL 은 null 을 빈칸으로 처리한다 . 

      ${ null 인 변수 }  --> 빈칸출력

      ${ NullPointerException 발생코드 }   --> 빈칸출력  ( 예외 X ) 

 

 

		List<String> list1 = null;   //null
		List<String> list2 = new ArrayList<>();  //비어있는 리스트
		List<String> list3 = new ArrayList<>();  //값이있는 리스트
		list3.add("테스트");

      --  EL 에서 null 과 ' 비어있다 ' 에 대한 처리방법 

      --  empty  : 비어있거나 null 인지 검사하는 연산자.

         $ { list1 == null }   or   $ { list1  eq null }   :   null 인지 검사하는 방법

         $ { list1  != null }   or   $ { list1  ne null }   :   null 아닌지 검사하는 방법

         $ { empty list1  }    :   null 도 비어있다고 판단.  

    -- list3 의 0번 인덱스 ::  ${ list3 [0] } 

 

 

 

 

 

 

 

 

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

ex))

index.html  -->   /elTest    -->  Get방식  --> elTest.jsp ( form 태그에서 /elTest로 Post방식으로 보냄 )

                                        --> Post방식  -->  elResult.jsp 

 

 

index.html

	<ul>
		<li>
			<!-- form태그를 제외한 모든 요청방식은 GET -->
			<a href="/JSPProject2/elTest">  EL </a>
				<!-- 절대 경로 방식  -->
		</li>
	</ul>

 

 

ELTestServlet class

@WebServlet("/elTest")
public class ELTestServlet extends HttpServlet{
	// 데이터 전달방식에 따라 여러가지 처리가 가능하다.
	
	// a 태그로 요청 (GET)
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/el/elTest.jsp");
		dispatcher.forward(req, resp);
	}
	// form태그 요청 (POST)
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		
		String name = req.getParameter("inputName");
		int age = Integer.parseInt(req.getParameter("inputAge"));
		String address = req.getParameter("inputAddress");
		
		String message = name+"님은 "+ age +"세 이고"+ address+"에 거주 중입니다";
	
		//Person 객체 생성
		Person p = new Person();
		p.setName(name+"님");
		p.setAge(age+10000);
		p.setAddress("대한민국 "+address);
		
		RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/el/elResult.jsp");
		
		req.setAttribute("message", message);
		req.setAttribute("person", p);
		
		dispatcher.forward(req, resp);
	}
}

 

elTest. jsp 

	<h1> EL (Expression Language)</h1>

	<form action="/JSPProject2/elTest" method="post">
		이름 : <input type="text" name="inputName"> <br>
		나이 : <input type="number" name="inputAge"> <br>
		주소 : <input type="text" name="inputAddress" size="50">  <br>
		<button>제출하기</button>
	</form>

 

elResult . jsp

	<h3>EL을 이용해서 출력하기</h3>
	<h4>파라미터</h4>
	
	이름 : ${param.inputName }<br>
	나이 : ${param.inputAge} <br>
	주소 : ${param.inputAddress }<br>
	${message }

 

index.html
/elTest
/elTest

 

 

 

 

 

 

 

  • Servlet / JSP 내장 객체와 범위 (scope) 

-- Servlet / JSP 에는 기본적으로 내장되어있는 4가지 객체가 존재한다.

-- 4종류의 객체는 각각 영향을 미칠수 있는 범위가 다르다.

 

  1.  page  :  현재 페이지

                -- 현재 Servlet 또는 JSP 에서만 사용가능 ( 1페이지 )

  2.  request 요청받은 페이지(Servlet/JSP) 와 

                        요청을 위임받은 페이지 (Servlet/JSP) 에서 사용 가능  ( 최소 2페이지 이상 )

  3.  session (HttpSession)현재 사이트에 접속한 브라우저당 1개씩 생성.

                                          브라우저가 종료되거나 session이 만료될때까지 유지. 

                                      ex ) 세션에 로그인정보를 기록해둠 --> 브라우저가 종료되거나, 로그아웃 되기전까지 유지 

  4.  application  (ServletContext) 하나의 웹 어플리케이션 당 1개만 생성되는 객체 . 

                                                      ex ) 서버 시작시 생성, 종료 까지 유지 . 

                                                       누구든지 사용 가능.

 

** 내장 객체의 우선 순위 

-- setAttribute ( " key "  , value ) 로 내장객체가 값을 세팅할 때

   key 값이 중복되는 경우 

-- $ { key } 만 작정하는경우 :  범위가 작은 내장객체가 높은 우선순위를 갖게된다.

    page  >  request  >  session  >  application 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'SelfStudy > Server ( Servlet , JSP )' 카테고리의 다른 글

Servlet( JSTL )  (0) 2023.03.21
Servlet vs JSP ( 차이점 )  (0) 2023.03.20
JSP (Java Server Pages) 란 ?  (0) 2023.03.20
Servlet 이란?( Get, Post 방식 )  (0) 2023.03.17
오라클 포트:8080 다른걸로 바꾸기 !!  (0) 2023.03.17
Comments