YJ의 새벽
Servlet( EL ) 본문
- 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 }
- 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 |