전체 글 1097

org.apache.jasper.JasperException 해결하기

위의 코드를 그대로 실행 시키면 다음과 같은 에러 창이 발생된다. 8행 38열에 인용부호가 요구된다는 것을 친절하게도 알려주는데, 코드로 돌아가서 살펴보았다. value 에 숫자 10이어서 쌍따옴표가 필요 없을거라고 생각했었는데, 사실은 필요하다. 이 jsp 파일의 contentType 을 text/html 이라고 명시했기 때문이다. 이 부분만 수정하면 코드는 정상적으로 실행된다.

JSTL (JSP Standard Tag Library) { JSTL이란? , 코어태그 : set, remove 예제 }

수업목표 프런트 개발자가 JSP를 수정하는데, JSP 안에 자바코드와 HTML 코드가 섞여 있다면 수정할 때 굉장히 어려움을 느끼게 될 가능성이 큽니다. 이런 문제를 해결하기 위해서 등장한 것이 JSTL (JSP Standard Tag Library) 입니다. JSTL 을 이용하면 태그형식으로 조건문, 반복문 등을 사용할 수 있습니다. 그리고 앞에서 배운 EL 과 연동하면 더욱 강력하게 사용 가능합니다. 이번 시간에는 이러한 JSTL 에 대해서 알아보도록 하겠습니다. JSTL (JSP Standard Tag Library) 란 ? JSTL 은 JSP 페이지에서 조건문 처리, 반복문 처리 등을 html tag 형태로 작성할 수 있게 도와줍니다. 왜 멀쩡한 자바 코드를 JSTL 로 바꾸는 작업을 하는 것일까..

톰캣 10.1 이상 버전에서 JSTL 사용시 발생하는 오류 해결하기java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator

에러 원인 톰캣 10.1 전 버전에서는 javax 로 디렉터리가 설정되어있었는데, 10.1 톰캣부터는 jakarta 로 설정이 바뀌었다. 따라서 서버는 NoCLassDefFoundError 를 발생시킨다. 해결 방법 https://stackoverflow.com/questions/8021370/java-lang-noclassdeffounderror-javax-servlet-jsp-tagext-taglibraryvalidator 위 주소로 접속하면 같은 문제에 답한 사람의 글을 볼 수 있는데, 매우 간단하다. 위 2 파일 다운로드 받은 다음에 WEB-INF/lib 에 넣어주면 된다. 이렇게 넣어주고 프로젝트 Refresh 해준 다음 다시 서버 동작 시키면 정상적으로 구동하는 것을 볼 수 있다.

EL (Expression Language) 실습 { 연산자, isELIgnored }

수업목표 이번 시간에는 EL 표현언어의 실습을 통해서 더 알아보도록 하겠습니다. EL 실습 1 { EL 사용 } 값들을 설정한 다음 EL 코드로 출력하는 코드를 작성해보고자 합니다. 우선 Scriptlet 을 사용해서 자바 코드를 작성하겠습니다. page scope 를 사용하겠습니다. page scope 의 객체는 pageContext 였습니다. 값을 맡길 때는 setAttribute 를 사용했었습니다. request scope 도 사용해보겠습니다. JSP 에서 request 는 내장 객체가 있기 때문에 바로 request.setAttribute 하면 됩니다. session scope 도 사용해보겠습니다. JSP 에서 sessoin 도 내장 객체가 있기 때문에 바로 session.setAttribute ..

EL (Expression Language) { 등장 배경, 문법, 기본객체, 연산자, 버전 호환 }

수업목표 jsp 에서 표현식을 이용해 값을 출력할 때 변수의 값이 null 이면 화면에 null 이 출력되었습니다. 이 경우 null 여부를 check 한 후 null 이면 아무것도 없는 문자열을 출력해야 하는 등 불편한 과정을 거쳐야 합니다. EL 을 사용하면 좀 더 편리하게 변수를 JSP 에서 사용할 수 있습니다. 이번 시간에는 EL 에 대해서 공부해보겠습니다. EL (Expression Language) 의 등장 배경 EL 은 표현 언어를 의미합니다. EL은 표현 언어로써 JSP 의 문법을 보완하여 값을 표현하는 역할을 수행합니다. JSP 에는 자바 코드도 들어가지만 HTML 등 프런트의 요소들이 더 많이 들어갑니다. 프런트와 백엔드 개발자들이 동시에 보는 파일을 어떻게 하면 효율적으로 쓸 수 있을..

application scope { ServletContext }

수업목표 하나의 웹 어플리케이션에 공유하고 싶은 변수가 있을 때 application scope 를 사용합니다. 이번 시간에는 application scope 에 대해서 공부하겠습니다. application scope 란 ? 우리가 흔히 웹 어플리케이션을 사용할 때 Client 가 있고 Server 가 있습니다. Server 에는 Web application 이 여러 개가 있을 수 있습니다. 이때 Web application 은 무엇일까요? 우리가 실습들을 여러개 만들어보았는데요. firstweb 이라는 프로젝트에 주로 작업을 했었는데요. 이 프로젝트 하나가 하나의 웹 어플리케이션이라고 생각하시면 됩니다. URL 을 보았을 때 localhost 밑에 first web 이 있었는데요. 그것이 하나의 웹 어..

session scope { }

수업목표 접속한 웹 브라우저별로 정보를 관리하고 싶을 때 session scope 를 사용합니다. 이번 시간에 이러한 session scope 에 대해서 좀 더 자세히 알아보도록 하겠습니다. session scope 란 ? session scope 는 웹 브라우저 별로 변수를 관리하고자 할 경우 사용하게 됩니다. 클라이언트는 웹 브라우저라고 했었는데요. 클라이언트가 굉장히 많을 수 있습니다. 실제로 클라이언트마다 하나의 객체를 만들어서 관리하는 것이 세션입니다. 세션 객체는 상태정보를 유지하기 위해서 사용합니다. 그래서 고객 마다 상태 정보가 다를 텐데 이런 정보를 session scope 를 사용하여 관리하게 됩니다. 웹 브라우저 간의 탭간에는 세션 정보가 공유되기 때문에, 각각의 탭에서는 같은 세션 ..

request scope { requestDispatcher, HttpServletRequest }

수업목표 웹 브라우저로부터 WAS가 요청을 받은 후, forward 되는 동안 유지하고 싶은 정보가 있을 경우 request scope 를 사용합니다. 이번 시간에는 request scope 에 대해 알아보도록 하겠습니다. request scope 란? http 요청을 WAS 가 받아서 웹 브라우저에게 응답할 때까지 변수값을 유지하고자 할 경우 사용합니다. WAS 앞선 예제에서 forward 를 했었는데요. forward 할 때 클라이언트가 요청을 보냈을 때 실제로 서블릿이 요청을 받았고 서블릿에서 로직을 수행하다가 request 라는 객체에 값을 담아둔 다음 forward 를 jsp 에게 했을 때 jsp 는 맡겨놓은 값을 가져다가 사용할 수 있었습니다. 이때 사용했던 requestDispatcher 객..

page scope { PageContext }

수업목표 특정 서블릿이나 JSP가 실행되는 동안에만 정보를 유지하고 싶은 경우가 있습니다. 이 경우에 사용되는 것이 page scope 입니다. 이번 시간에는 page scope 에 대해서 알아보도록 하겠습니다. page scope page scope 는 PageContext 라는 추상 클래스를 사용합니다. JSP 페이지에서는 pageContext 라는 내장 객체로 사용 가능합니다. 실제로 우리가 이전에 보았던 jsp 의 실제 코드를 보면 PageContext 를 활용하여 사용하고 있는 것을 확인할 수 있습니다. forward가 될 경우 해당 page scope 에 지정된 변수는 사용할 수 없습니다. 왜냐하면 forward 를 한다는 것은 페이지를 벗어난다는 것을 의미하니까 page scope 에 있는 ..

scope 란?

수업목표 Servlet 과 JSP 를 개발하다보면 변수를 많이 다루게 됩니다. 어떤 변수는 웹 어플리케이션에서 공유하고 싶은 변수가 있을 수도 있고, 어떤 변수는 사용자 별로 유지하고 싶은 변수가 있을 수 있습니다. 또 어떤 변수는 포워딩 되는 동안 유지하고 싶은 변수가 있습니다. 이렇게 변수를 어떤 범위 내에서 사용하기 위해서는 스코프 scope 라는 것에 대해서 알아야 합니다. 이번 시간에는 scope 에 대해서 알아보도록 하겠습니다. scope 웹 프로그래밍을 하다 보면 이미 설정된 객체들이 있습니다. 이런 객체들은 4가지의 scope 을 가지고 있습니다. Application scope 는 하나의 어플리케이션이 생성되어서 어플리케이션이 소멸될 때까지 유지되는 scope 입니다. 범위가 제일 큰 s..