[ 웹 컨테이너 ]
웹 컨테이너란 웹 프로그램을 개발하기 위해 웹 어플리케이션과 함께 사용되는 프로그램이다.
- Tomcat
- Jetty
- Jboss
이들이 하는 일: JSP 구동, 서블릿 구동, JAVA 클래스로 실행
이클립스에서 웹 컨테이너를 사용하기 위해서는 약간의 설정이 필요하다.
설정 방법은 다음과 같다.
*참고로, 이클립스에서 Web 프로젝트를 생성하기 위해서는, ‘Dynamic Web Project’ 타입의 프로젝트
를 생성해야한다.
참고로 알아두면 좋을 것)
WebContent 안에 있는 파일들의 경로는 .ContextPath() 메서드로 찾을 수 있다.
[JSP 내부객체]
JSP뿐만 아니라, Java 클래스와 서블릿 안에서도 사용 가능하다.
빨간 색으로 표시한 객체들은 굉장히 중요하니 주의해서 보길 바란다.
특히나, session은 로그인 시 많이 사용된다.
(1) include: 동적인 처리가 많을 때는 include를 쓰는 것이 효과적이다.
include 태그를 사용할 때는, param 태그도 사용가능하다는 것을 명심하길 바란다.
<jsp:param>은 include 태그에 적어놓은 페이지(로컬 URL)로 데이터를 보낸다.
(2) forward: forward와 sendRedirect 메서드는 알다 시피, 특정 페이지로 이동하기 위해 사용된다.
그러나 forward/ sendRedirect의 차이점을 명심해두길 바란다. forward는 가지고 있는 request 안에 데
이터를 같이 전송해주는 데 비해, sendRedirect는 request 안에 있는 데이터를 전달해주지 않는다.
정리하자면, 넘겨줄 데이터 없이 간단하게 페이지를 이동하기 위해서는 sendRedirect를 사용할 수 있
다. 그러나 넘겨줄 데이터가 있다면 sendRedirect가 아닌 forward를 사용해야 한다.
(3) useBean: 사실 이것을 몇번 반복하는 지는 모른다만, 반복하여 설명한다는 것은 중요하다는 것이
다.
<jsp: useBean id=”” class= “” scope=””* /> 은 두가지 역할을 한다.
- 만약 scope에 저장된 객체가 없다면, 새로 인스턴스를 생성한다.이는
Member member = new Member();
와 같은 문법이라 할 수 있겠다.
- 만약 scope에 저장된 객체가 있다면(다른 페이지에서 이미 객체를 생성해 놓았다면), 저장된 객체를 불러온다.
*scope는 page/application/ request/ session 등 객체 타입을 정의 할 수 있다. 객체의 사용 범위 비교
는 다음과 같다. ( page < request < session < application )
[표현언어(EL : Expression Language) ]
: EL은 JSTL에 소개된 내용으로 JSP2.0에 추가된 기능이며 JSP의 기본문법을
보완하는 역할을 한다
(1) EL에서 제공하는 기능
- JSP의 네 가지 기본 객체가 제공하는 영역의 속성 사용
- 집합 객체에 대한 접근 방법 제공
- 수치 연산, 관계 연산, 논리 연산자 제공*
- 자바 클래스 메소드 호출 기능 제공
- 표현 언어만의 기본 객체 제공
표기법 : ${ expr }*
*EL 안에서 연산이 가능하다는 것을 잊기 쉽다. 그러나 연산이 가능하다. 이를 잘 이용하면
쉽고 간단한 코드를 짤 수 있다.
*예를 들면, #{member.name} 으로 member 객체 안에 있는 name 변수를 부를 수 있다. 이는
<%= member.getName()%>과 같은 의미이다.
(2) EL이 제공하는 기본 객체
- pageContext
- pageScope
- requestScope
- sessionScope
- applicationScope
- param*
- paramValues
*예를 들어, request.getParameter(“id”)를 간단하게 EL로 표현할 수 있다. 이는 ${param.id}
이다. 이렇게 쓰는 것이 훨씬 간단하지 않은가. 이 param은 JSTL의
<c: if> 태그에서 많이 사용되니 주의해서 보길 바란다.
(3)표현언어에서 자바메소드를 사용
- 자바클래스작성
- 태그라이브러리에 대한 설정정보를 담고 있는 tld파일을 작성
- web.xml에 tld파일을 사용할수 있는 설정정보를 추가
- 자바클래스에 접근하는 jsp파일을 작성
사실 이러한 처리는 DB에서도 가능하다. 오히려 출력만 한다면 DB에서 직접 처리하는 것이 훨씬
간단하다. 그러나 이 값들을 가공처리한다면 JSTL로 처리하는 것이 더 낫다.
* <c: url> 태그를 이용하면 contextPath() 경로를 설정할 때 간편하게 사용할 수 있다.
프로젝트의 규모가 크다면 모델2로 만들어야 한다. 모델1을 사용하면 프로젝트의 구조가 더욱 복잡해
지기 때문이다.
그러나 프로젝트의 규모가 크지 않다면 모델1을 채택하는 것이 더욱 효율적일 수 있다.
모델2에서 프레임워크를 많이 사용한다. 왜냐하면 위에 적어 놓았다시피, 구조를 설계하는데 많은 시
간을 할애해야 하기때문이다. 따라서 미리 구조를 만들어 놓아 사용하는데, 이때 미리 만들어 놓은 구
조를 프레임워크라고 한다. 대표적인 프레임워크에는 Sprig / MVC 등이 있다.
이 프레임워크의 장점은 구조가 미리 만들어져 있기 때문에 (1)구조를 설계하는 시간이 단축되며 (2)
유지보수와 확장이 더욱 좋아지고, (3)팀원에게 높은 수준을 요구하지 않는다.
그렇다면 MVC 패턴이란 무엇일까?
이렇게 구조가 나눠진 것을 말한다. 사실 실제로 프로젝트를 만들때, (1)뷰 (2)모델 부분만 심여를 기
울여 만들면된다. 왜냐하면 컨트롤러는 미리 만들어져있는 프레임워크를 사용하면되니까. 참고로 (2)
모델에는 서비스/Dao/ 모델 클래스들이 있다.
참고로 (1)뷰에서는 EL/JSTL을 사용하면 내장객체의 속성(request/ response / session)을 쉽고 간편
하게 처리 할 수 있다.
또한 (2)모델에서는 서비스/DAO/모델 클래스들로 구별하여 작성하면 관리가 더욱 편한 효율적인 구
조를 만들 수 있다.
댓글 없음:
댓글 쓰기