본문 바로가기

Front End

javabean & error

** VO(Variable Object - Data Transfer Object)

- 여러 개의 속성을 묶어서 하나의 데이터를 표현하기 위한 객체

- 이 객체의 클래스를 만들 때는 아래와 같은 방식으로 만듭니다.


1. 데이터를 저장할 속성을 private 이나 protected 지정자를 이용해서 생성합니다.

최근에는 확장이 가능하도록 protected로 설정하는 경우가 많습니다.


2. 속성은 private 이나 protected로 선언했기 때문에 외부(인스턴스)에서 접근이 불가능하므로 접근자 메소드(getter & setter)를 만들어 줍니다.


3. 각 속성의 값을 빠르게 확인이 가능하도록 toString 메소드를 overriding 합니다.

- 여기까지는 필수


4. 외부에서 데이터를 가져와서 대입할 때 빠르게 하고자 하는 경우에는 생성자를 추가합니다. (일일히 set으로 넣으면 시간이 오래 걸리므로 매개변수에 대입이 가능하게 만들고 매개변수가 없는 일반적인 생성자도 만들어 줍니다.)


5. 인스턴스 단위로 전송하거나 기록하고자 하는 경우에는 Serializable 인터페이스를 implements 합니다.


6. 여러 개의 데이터를 묶어서 배열이나 List에 보관하고자 하는 경우에는 크기 비교를 위해서 Comparator 인터페이스를 구현해서 compareTo 메소드를 overriding 합니다.


7. 값의 동일성 여부를 비교하고자 하면 equals 메소드를 overriding 합니다.

(==는 저장된 위치 즉 주소 또는 해시 코드를 비교하는 것이므로 값 자체를 비교 해야하는 경우나 값이 문자열인 경우는 항상 equals를 사용합니다.)


8. 응용 프로그램 등에서 사용하는 경우 데이터를 복제할 수 있는 clone 메소드를 overriding 합니다.

(안드로이드의 경우는 클론을 사용하지 않는 경우가 많은데, 스마트폰의 특성(자원의 제약과 네트웍이 언제 끊길지 모름)을 생각해 보면 이해하기 쉽습니다)


** <jsp:useBean>

- 자바 클래스의 인스턴스를 생성해주는 태그

- 자바 클래스의 인스턴스는 생성자를 호출해서 생성해야 하지만 jsp 파일에서는 태그를 이용해서 생성이 가능한데 이 때 클래스에 매개변수가 없는 생성자가 있어야 합니다.

- 태그를 이용해서 인스턴스를 생성할 때는

class 속성에 클래스의 오나전한 이름을 설정하고 scope에 유효범위를 설정하며 id 에 이름을 설정합니다.

- scope는 page, request, session, application이 가능합니다.(주로 request와 session을 많이 씁니다)


** 예외나 에러가 발생했을 때 보여지는 페이지

- jsp페이지가 요청을 처리하는 도중에 예외가 발생하면 톰캣 서버가 에러화면을 출력합니다. 이로 인해 jsp 페이지에서는 예외를 처리하지 않아도 됩니다.


1. 예외나 에러가 발생했을 때 보여질 페이지 생성

페이지 상단에 <%@ page isErrorPage="true"%>를 추가합니다.

이 페이지에서는 예외가 발생했을 때 예외의 내용을 저장한 exception 객체를 사용할 수 있습니다.


2. 보여지는 페이지에서 예외나 에러가 발생했을 때 출력될 페이지 설정

<%@ page errorPage="보여질 페이지 경로" %>


3. IE에서는 에러 페이지의 크기가 513바이트가 되지 않으면 자체 페이지를 보여줍니다.

주석을 추가해서 513바이트 이상이 되도록 해야 모든 브라우저에서 동일한 에러페이지를 출력할 수 있습니다.


- 에러가 발생했을 때 프로젝트의 WebContent 디렉토리의 error/errorview.jsp 파일을 출력하는 test 페이지

-에러 페이지 경로를 설정할 때 /로 시작을 하면 WebContent 디렉토리부터 경로를 찾아갑니다.

-/를 안 붙이면 현재 디렉토리부터 찾습니다.


-실습 : 에러 발생 페이지 : test.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <%@ page errorPage="/error/errorview.jsp" %>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>에러 발생 페이지</title>

</head>

<body>

<!-- email 이라는 파라미터가 없는데 메소드를 호출해서 NullPointerExceprion이 발생합니다. -->

<%= request.getParameter("email").trim()  %>

</body>

</html>


- 에러가 발생했을 때 이동된 페이지 : errorview.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <%@ page isErrorPage="true" %>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>에러 페이지</title>

</head>

<body>

<h3><%=exception.getMessage() %></h3>

<p> 에러가 발생했습니다. 조속한 조취를 취하겠습니다.</p>

</body>

</html>


4. 에러 코드 별 에러 페이지 설정

- 위의 방법을 이용하면 에러가 발생했을 때 에러 페이지를 출력할 수 있지만 모든 페이지에 직접 설정을 하게되면 설정을 너무 자주 해야 해서 에러 종류 별 또는 코드 별로 보여지는 에러페이지를 설정할 수 있습니다.


- web.xml 파일에 아래처럼 설정

<error-page>

<error-code>에러코드</error-code>

<location>에러페이지의 경로</location>

</error-page>


- 404 에러에 대해서는 이런 방식으로 처리하는 경우가 많습니다.

- web.xml 파일은 웹 프로젝트 설정 파일입니다.

프로젝트가 실행될 때 처음 한 번만 읽어서 수행합니다.

이 파일의 내용이 잘못되면 프로젝트는 실행되지 않습니다.

이 파일을 수정하면 프로젝트는 반드시 재실행해야 합니다.

'Front End' 카테고리의 다른 글

커스텀태그(JSTL)  (0) 2018.08.30
el  (0) 2018.08.29
쿠키와 세션  (0) 2018.08.28
[0827]javaweb2  (0) 2018.08.27
Java Web  (0) 2018.08.23