[문제해결] 이클립스 – 톰캣 연동시 에러 해결 2014-11-06

1. 문제상황

> 이클립스와 톰캣 연동시 서버를 추가하는 과정에서 다음과 같은 에러가 발생하며 Add 버튼이 활성화 되지 않는다.

1
* 에러메시지
Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules 

2. 문제해결

> 처음 프로젝트 생성시 Target runtime을 지정하여 생성하지 않았기 때문이다.

2
* Target runtime 의 셀렉트 박스에서 원하는 버전의 톰캣을 선택한 후 생성하면 문제가 해결된다.

[JSP & Servlet 배경지식] 8. JSP – Expression Language 2014-10-26

<표현언어 : Expression Language>

JSP 기본문법을 보완하기 위한 표현방법으로 여러가지 유연함을 제공한다.

> 1. 11가지 기본객체제공

- pageContext
- pageScope
- requestScope
- sessionScope
- applicationScope
- param
- paramValues
- header
- headerValues
- cookie
- initParam
ex> ${paramValues.ping}

> 2. 데이터 타입

- boolean
- integer
- float
- string
- null

> 3. 연산자

- 수치연산
--- '+'
--- '-'
--- '*'
--- '/' or div
--- '%' or mod
- 비교연산
--- '==' or eq
--- '!=' or nu
--- '<' or lt --- '>' or gt
--- '<=' or le --- '>=' or ge
- 논리연산
--- '&&' or and
--- '||' or or
--- '!' or not
- empty연산
--- empty {값}
- 비교선택 연산
--- {수식} ? {값} : {값}
- 우선순위
--- []
--- ()
--- -(단일) not ! empty
--- * / div % mod
--- +  -
--- <  >  <=  >=  lt  gt  le  ge
--- ==  !=  eq  ne
--- &&  and
--- ||  or
--- ?  :
ex> ${ 10 + 10 }

> 4. 객체의 메서드 호출

ex>
<%@page import="opendocs.test.SampleMethod"%>
<%
    SampleMethod sampleMethod = new SampleMethod();
    request.setAttribute("sm", sampleMethod);
%>
${sm.test('param')}

[JSP & Servlet 배경지식] 7. JSP 구성요소 2014-10-25

<구성인자>

> 1. Directive (지시어)

>>> page : JSP 페이지에 대한정보를 명시
-- contentTypes : MIME Type을 명시
ex> 
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-- import : 사용될 라이브러리를 읽어들임
ex> 
<%@ page import="java.util.*,java.text.*"%>
-- errorPage : 예외 발생시 이동될 페이지 지정
ex> 
<%@ page errorPage="/error/404.jsp" %>
>>> taglib : JSP 페이지에서 사용할 태그 라이브러리를 지정
ex> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
>>> include : JSP 페이지에 다른 문서를 포함시킴
ex> 
<%@ include file="/MyPage.jsp" %>

> 2. Scripting Elements (스크립팅 요소)

>>> Declaration (선언) : 메소드, 멤버변수를 선언함
ex>
<%! private int count; %>
<%! public int incrementCount() { ++count; } %>
>>> Scriptlet (스크립트릿) : 자바코드를 실행함
ex>
<% String text = "TEXT"; out.println(text); %>
>>> Expression (표현식) : 값을 출력함
ex>
<%=text%>

> 3. tag

>>> action tag (액션태그)
* JSP페이지에서 특별한 기능을 제공한다.
* 선언하지 않아도 기본으로 제공된다.
ex> MyPage.jsp 파일에 count 값을 보낸 결과를 인클루드 시킨다.
<%@ include file="/MyPage.jsp" %>
<jsp:include page="/MyPage.jsp">
   <jsp:param name="TEST" value="100" /%>
</jsp:include%>
>>> custom tag (커스텀태그)
* JSP페이지에서 특별한 기능을 제공한다.
* 개발자 원하는 기능을 구현해서 사용할 수 있다.
* JSP에서 중복되는 코드를 모듈화하거나 복잡함을 없애기 위해 사용한다.
ex> 개발자가 정의한 기능을 사용한다.
<%@ taglib prefix="mytag" uri="/taglib/mytag"%>
<mytag:echo name="TEST" value="100" /%>
>>> JSTL(JSP Standard Tag Library)
ex> cookie 값에 따른 자바스크립트 실행
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:if test="${empty cookie.uuid.value}">
   <script type="text/javascript">
      alert("Hello !");
   </script>
</c:if>

<기본제공 객체>

선언없이 JSP페이지에서 사용할 수 있는 객체들의 종류이며 <JEE6-API> 에서 해당 객체에 대한 설명을 확인 할 수 있다.

> 1. application

* web application 전체의 정보 객체
* javax.servlet.ServletContext

> 2. config

* 현재 페이지의 설정정보 객체
* javax.servlet.ServletConfig

> 3. session

* 현재 사용자의 세션정보 객체
* javax.servlet.http.HttpSession

> 4. request

* 클라이언트로부터 전송받은 요정정보 객체
* javax.servlet.ServletRequest의 서브클래스

> 5. response

* 클라이언트에게 전송할 응답정보 객체
* javax.servlet.ServletResponse의 서브클래스

> 6. page

* 현재 페이지를 구현한 자바클래스 인스턴스 객체
* java.lang.Object

> 7. pageContext

* 현재 페이지의 정보 객체
* javax.servlet.jsp.PageContext

> 8. out

* 현재 페이지에서 생성한 결과를 출력할때 사용되는 객체
* javax.servlet.jsp.JspWriter

> 9. exception

* 현재 페이지에서 발생한 익셉션, 에러처리 객체
* java.lang.Throwable

<참고문서>

> JSP 페이지에서 사용되는 각종 태그와 사용샘플이 정리된 문서를 확인하도록 하자.

* 다운로드 링크 : <Java Server Pages Syntax version 1.2>