Development/Java

JSP, EL 보충 #7

evagrim 2022. 8. 15. 16:05

 


html 파일 => jsp 변환 시 소스코드의 한글이 깨졌을때 인코딩 방식 변경방법
File > Properties (Alt+Enter) > Resource > Text file encoding > UTF-8


JSP로 바뀌었으면 브라우저에 출력 인코딩 정보도 넘겨주어야 하기 때문에 page 지시자로 다음 코드도 넣어준다
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>


JSP에서 java 모듈을 임포트 할때도 page 지시자를 쓴다. (hotkey - ctrl+spacebar)
ex) <%@page import="java.sql.DriverManager"%>


웹개발시 서버의 물리적 환경을 어떻게 구축할지 모르기 때문에 참조하는 라이브러리 파일의 path가 달라질 수 있다.
때문에 개발에 사용되는 ojdbc.jar, jstl.jar 또는 직접만든 재사용 라이브러리 등의 파일은 배포할때 함께 포함시켜서 상대 경로로 path를 등록해주어야 한다.

톰캣을 이용한 웹개발에서는 별개로 사용하는 라이브러리가 있을 경우 다음 경로에 포함시켜준다
Prj\src\main\webapp\WEB-INF\lib




< Model 데이터를 위한 클래스(Entity) 정의와 사용방법의 변화 >

 

MVC에서 모델로 사용할 데이터를 그대로 가져다 쓰면 비슷한 코드의 반복이 많아지거나 모델 변수명이 비슷한 의미로 중첩되어 스파게티스러워 진다. 데이터를 클레스로 구조화 시켜주면 유지보수나 개발 시에 직관적으로 파악할 수 있다.

예시)
request.setAttribute("title", title);
request.setAttribute("writerId", writerId);
request.setAttribute("regdate", regdate);
request.setAttribute("hit", hit);
request.setAttribute("files", files);
request.setAttribute("content", content);
== 구조화 ==> request.setAttribute("n", notice);
== JSP 사용시 ==> ${n.title}


EL 사용을 염두해 두고 model 데이터 클래스로 정의하기

 

public class Notice {
private int id;
private String title;
private String writer;
private Date regdate;
private String content;
private int hit;

public int getId() {
return id;
}
}

-멤버 변수들 세팅용 생성자를 오버로드 해주고, getter와 setter 그리고 확인용으로 toString 메소드도 추가해준다.


<td>${notice.id}</td>
<a href=detail.jsp?c=${notice.code}">${notice.title}</a>


-EL 표현식은 get이후 첫스펠링은 소문자로 그리고 get과 생성자함수() 표현은 생략한다.

(private 멤버변수를 꺼내올 수는 없는 거고, getter를 써서 끌어쓰기 때문에 EL에서는 표현식을 생략하고 있는 것을 확인할 수 있다)
-EL은 반복할 수 있는 기능이 없다. 그래서 게시판 등에서 전달받은 목록 배열을 뿌려줄때는 태그 라이브러리(JSTL) 기능 등을 사용하기도 한다.



<View 페이지 은닉>

MVC model2 방식으로 소스를 나눴다면 출력부분은 콘트롤러에 의해서만 불려지고
클라이언트에서 직접 요청해서는 안되는 부분이기 때문에 WEB-INF 폴더에 따로 빼서
사용자가 요청할 수 없는 페이지로 만들어준다.