18 Feb 2021
|
JSP
JSP - 예외 처리
-
에러코드별 에러페이지 지정 방법
- dd(web.xml)에 다음과 같이 에러 발생시 이동할 경로를 지정한다
<error-page>
<!-- 발생할 에러 코드를 적는다 -->
<error-code>404</error-code>
<!-- 에러 발생시 이동할 경로를 적는다 -->
<location>/error/error404.jsp</location>
</error-page>
- 해당 에러코드의 에러 발생시 보여줄 페이지를 기술한다
<%
<!-- 응답코드 200 지정하지 않으면 웹 브라우저에 내장된 에러페이지를 출력한다-->
response.setStatus(HttpServletResponse.SC_OK);
%>
<html>
<head><title>404에러 발생</title></head>
<body>
<b>요청한 페이지는 존재하지 않습니다</b>
</body>
</html>

-
지시어를 이용한 예외처리 방법
- 에러가 발생할 수도 있는 jsp페이지의 상단에 지시어를 작성한다
<%@ page errorPage="/error/error.jsp"%>
<!--
...
본문 내용
-->
- 에러를 처리할 페이지에서 exception 객체를 사용할 수 있다.
<%@ page isErrorPage="true" %>
<%
<!-- 응답코드 200 지정하지 않으면 웹 브라우저에 내장된 에러페이지를 출력한다-->
response.setStatus(HttpServletResponse.SC_OK);
%>
<html>
<head><title>예외 발생</title></head>
<body>
요청 처리 과정에서 예외가 발생하였습니다.<br>
빠른 시간내에 문제를 해결하도록 하겠습니다<br>
에러 타입 : <%= exception.getClass().getName() %><br>
에러 메세지 : <%= exception.getMessage() %>
</body>
</html>

-
예외종류별 에러페이지 지정 방법
<error-page>
<!-- 발생 가능한 에러 타입을 적는다 -->
<exception-type>java.lang.NullPointerException</exception-type>
<!-- 에러 발생시 이동할 경로를 적는다 -->
<location>/error/errorNull.jsp</location>
</error-page>
- 에러코드별 예외처리 방법과 중복되지 않으므로 어느 한쪽을 택해야한다
참고 자료
KG 아이티뱅크 강의 자료
처음해보는 JSP&Servlet 웹 프로그래밍
17 Feb 2021
|
로그포스
2021-02-17 TIL
- 오늘 한 것
- 리액트 공부 React The complete Guide - token을 이용한 로그인 방법과 token을 이용하여 인증된 사용자에게 보여줄 UI와 인증되지 않은 사용자가 보는 UI를 나누는 방법을 배웠다. 또, 로그아웃과 인증되지 않은 사용자가 버거 재료를 쌓아놓고 로그인한 뒤에 쌓아놓은 버거재료를 토대로 구매하는 것을 배웠는데, 여기서 애를 먹은게 나는 Redirect로 페이지 이동을 했을 경우에 state가 날라가는줄로만 알고 있었다. 어째서 버거재료가 살아있는가가 이해가 되지 않았는데 페이지 새로고침을 하지 않고 앱 내에서 Navigating이 일어날 경우에는 store에 저장된 state가 유지된다는 것을 알았다.
- 학원 비대면 수업 (15:30~22:00) JSP - JSP 개요와 기본 문법을 배웠다. HTML 안에서 자바를 사용한다는 점이 인상깊었는데, 스크립트 영역에서 JSP 표현식 안에 HTML 태그를 껴넣어 for문을 돌리는등 재미있는 점이 많았다. 괄호를 닫아도 자바의 중괄호를 닫지 않는이상 블록이 살아있다는 것도 알았다
- 내일 할 것
- 리액트 공부 - React The complete Guide
- 학원 대면 수업(15:30~22:00) JSP
내일부터는 학원에 나가서 대면수업을 받는다. 6개월 과정 중 절반이 지나고 나서야 학원에 간다…
일단 프로젝트 조의 조장을 맡고 있으니.. 내일은 가서 조원들과 얘기좀 나눠봐야겠다.
오늘의 한 줄 총평 : 드디어 대면
17 Feb 2021
|
JSP
JSP - 지시어(Directive)
-
지시어(Directive)
- JSP 컨테이너가 JSP 페이지를 파싱하여 자바소스로 변환하는데 필요한 정보를 알려주는데 사용
-
Page 지시어
- 페이지 관련 환경을 정의한다
- 주로 문자 인코딩, 응답페이지의 컨텐츠 타입 등을 정의한다
<%@ page autoFlush="true/false"
buffer="none/숫자kb"
contentType="mimeType;charset=문자코드"
extends="클래스명"
import="패키지명"
info="text"
errorPage="파일명"
isErrorPage="true/false"
isThreadSafe="true/false"
language="언어이름"
pageEncoding="문자코드"
session="true/false"
trimDirectiveWhitespaces="true/false"
%>
- autoFlush : 버퍼가 꽉 찼을 경우 비울것인지 여부를 결정, default=”true”이다.
false 설정시 버퍼가 꽉 차게되면 예외가 발생시킨다
- buffer : 출력 버퍼의 크기를 설정한다. default=”8kb”이다
buffer 속성이 none으로 설정되면 jspWriter 객체를 이용하지 않고 HTTP 응답을 즉시 클라이언트에 응답한다.
- contentType : 웹 브라우저에 전송되는 문서 타입과 문자코드를 지정한다
default=”text/html;charset=euc-kr”이다.
- errorPage : JSP 페이지에서 에러 발생시 이동할 에러페이지 경로이다
- isErrorPage : JSP 페이지에서 Throwable 객체인 exception을 사용할 것인지 결정한다.
default=”false”이다. true로 설정하면 exception 객체를 사용할 수 있다
- extends : JSP 페이지가 상속받을 부모 클래스를 지정한다. 생략시 Http.JspBase 클래스 자동으로 상속받으므로 사용할 일이 거의 없다
- import : import 할 패키지를 명시한다
<!--javax.servlet.*, javax.servlet.http.*, javax.servlet.jsp.* 자동 포함 -->
<%@ page import="java.util.*, java.io.*"%>
- info : 해당 JSP 파일의 정보를 기술한다. 일반적으로 정보,버전,저작권 등 기술
getServletInfo() 메소드로 내용을 가져올 수 있다
- isThreadSafe : SingleThreadModel를 지원할 것인가 여부를 결정한다. default=”true”
false 면 구현을 하는 것이고 true면 구현하지 않겠다는 의미. 일반적으로 이 기능보다는 synchronized() 사용 권장
- launguage : JSP 페이지에서 사용되는 스크립트 언어를 지정한다. 생략시 java
- pageEncoding : JSP 페이지의 문자 인코딩 방식을 결정한다. 생략시 contentType의 charset에 지정된 값을 사용한다
- session : HttpSession 객체를 사용할 것인지 결정. default=”true”라서 모든 페이지는 자동으로 세션이 생성된다. false면 사용하지 않는다.
- trimDirectiveWhitespaces : JSP 지시어 태그로 인해 생기는 소스코드의 공백을 없애준다. default=”false”이다.
- include : 변환 시점에서 현재 페이지에 포함할 코드나 jsp 문서를 정의한다. 반복되는 부분의 재사용으로 효율성을 높인다. 경로는 상대경로로 지정한다.
참고 자료
KG 아이티뱅크 강의 자료
처음해보는 JSP&Servlet 웹 프로그래밍
17 Feb 2021
|
JSP
JSP - 개요,기본문법,LifeCycle
-
JSP
- JSP(JavaServer Page)는 서블릿과 동일하게 동적인 웹 페이지를 개발하는 기술이다
- HTML 태그 내에 자바 코드를 삽입하는 형식
- 클라이언트의 요청이 접수되면 JSP는 WAS에 의해 서블릿 소스코드로 변환되어 서블릿 클래스로 컴파일 된 후 실행된다
- JSP는 Beans라는 자바 컴포넌트를 사용할 수 있다
- JSTL(JSP Standard Tag Library)와 같은 태그 라이브러리를 사용할 수 있다
- 동작 원리
- HTML 태그와 JSP태그를 사용하여 .jsp 파일을 작성
- 클라이언트로부터 JSP 요청이 들어오면 JSP 컨테이너는 JSP 파일을 자바 소스로 변환(.java)
- .java 파일을 컴파일하여 .class 파일을 만든다
- 컴파일된 .class파일은 서블릿 컨테이너에 의해 서블릿으로서 동작
- 변환과 컴파일 작업은 최초의 요청이나 JSP가 변경되었을 때만 수행된다
-
JSP 기본 문법
- JSP 페이지에 삽입된 코드를 통해서 멤버변수나 멤버메소드를 선언할 수 있다
- JSP LifeCycle Method 중에서 jspInit(), jspDestroy() 등을 재정의 할 때 사용할 수 있다
- 스크립트릿에서 선언된 변수는 지역 변수로 설정되며, 메소드 호출은 가능하나 선언은 불가능
- 스크립트릿의 자바코드는 _jspService() 메소드 내로 옮겨진다
- 스크립트릿의 자바코드는 이어진다
<% for(int i=0; i<10; i++){ %>
<h1>
<!-- for문은 끊어지지 않았다 -->
</h1>
<% } %>
- 표현식(expression)
- JSP 페이지 내에서 직접 클라이언트로 출력될 내용을 표시할 때 사용
- _jspService() 메소드 내에 삽입, 표현식에서는 세미콜론을 사용하지 않는다
<!-- html 주석, 소스보기 창에 나타남 -->
<%-- JSP 주석, 소스보기 창에 안나타남 --%>
// 자바 주석
/* 자바 주석 */
-
LifeCycle
- jspInit() : 서블릿의 init()에 해당, 재정의 가능, 초기화를 담당, 최초 호출시에만 작동
- jspDestroy() : 서블릿의 destroy()에 해당, 재정의 가능, 자원 해제 담당, 서버 중지 혹은 jsp 파일 unload시 작동
- _jspService() : 서블릿의 service()에 해당, 재정의 불가능, 요청이 들어올 때마다 새로은 스레드에서 실행된다
참고 자료
KG 아이티뱅크 강의 자료
처음해보는 JSP&Servlet 웹 프로그래밍
16 Feb 2021
|
로그포스
2021-02-16 TIL
- 오늘 한 것
- 리액트 공부 React The complete Guide - 구글 Firebase의 Authentication을 이용하여 튜토리얼 프로젝트에 사용자 인증을 추가하는 방법을 배웠다. 아직은 간단한 Sign in 정도지만 앞으로의 강의에서 더 다양한 기능을 배울 것이다.
- 학원 비대면 수업 (15:30~22:00) Servlet - 서블릿의 기초 개념과 생명주기에 대해 배웠고 간단하게 방명록과 로그인 기능을 구현해보았다. html, JSP 없이 서블릿만으로도 웹 애플리케이션이 만들어질 수 있구나라는 것을 알았지만 너무 노가다…
- 내일 할 것
- 리액트 공부 - React The complete Guide
- 학원 비대면 수업(15:30~22:00)
코로나 거리두기 단계가 내려가서 목요일부터는 학원 수업이 비대면이 아닌 대면수업으로 바뀐다. 절반이 지난 지금, 드디어 학원 친구들의 얼굴을 볼 수 있는 것인가..?
오늘의 한 줄 총평 : 코로나 얼른 내려가라