본문 바로가기

SSR19

Thymeleaf (1) 자바의 웹 애플리케이션 레거시 프로젝트의 특징은 JSP를 활용하여 프론트, 백엔드 구분 없이 개발자가 전부 웹 개발을 진행한다는 점이다. 요즘은 전문적인 웹 클라이언트 사이드 렌더링 기술을 적극적으로 활용하는 웹 클라이언트 프레임워크, 혹은 라이브러리인 리액트나, 뷰, 앵귤러를 많이 사용한다. 간단한 웹 애플리케이션을 개발할 때 해당 웹 클라이언트 프레임워크 기술을 적용하여 개발하면 베스트이지만 웹 클라이언트 프레임워크는 정말 전문적인 영역으로 쉽게 접근할 수 없다는 점이다. 성능 최적화, 컴포넌트화, 타입 스크립트, 모듈화, 번들링.. 점점 쉽게 다가갈 수 없는 환경으로 이루어지기 때문에 기존 JSP로 서버사이드에서만 개발하던 개발자들이 해당 기술을 활용하려면 시간과 노력이 필요하다. 간단한 웹 애플리.. 2022. 1. 3.
서블릿 3.0 파일 업로드 서블릿 3.0에는 InputStream이나 외부 라이브러리를 사용하지 않고 웹 브라우저가 업로드한 파일을 읽어올 수 있는 기능이 추가되었습니다. HttpServletRequest의 getPart() 메서드를 이용해서 업로드 데이터에 접근합니다. 서블릿이 multipart 데이터를 처리할 수 있도록 설정합니다. Part 인터페이스는 miltipart/form-data POST 요청으로 수신받은 from 아이템이나 하나의 Part를 나타냅니다. @MultipartConfig 어노테이션을 사용하거나 web.xml에서 태그를 사용합니다. 어노테이션 사용방법 @MultipartConfig( fileSizeThreshold = 1024*1024, maxFileSize = 1024*1024*5, maxRequestS.. 2020. 5. 30.
Filter 필터를 사용하면 JSP/서블릿 등을 실행하기 이전에 요청이 올바른지 혹은 자원에 접근할 수 있는 권한을 가졌는지의 여부를 미리 처리할 수 있습니다. 또한 JSP/서블릿이 생성한 응답 데이터를 변경하거나 취소할 수 있는 기능 또한 구현이 가능합니다. 필터란? 필터를 간단히 이야기하면 HTTP 요청과 응답을 변경할 수 있는 재사용 가능한 클래스입니다. 필터는 클라이언트와 자원(jsp, servlet)의 사이에 위치하고 있으며 request정보를 알맞게 변경할 수 있으며 response(최종 자원의 요청 결과)를 알맞게 변경할 수 있습니다. 클라이언트와 자원 사이에 여러 개의 필터가 존재할 수 있으며 여러 개 생성된 필터들을 필터 체인(chain)을 형성하게 됩니다. 필터는 정보를 변경할 뿐만 아니라 흐름도 .. 2020. 5. 24.
DBCP를 이용해서 커넥션 풀 사용하기 커넥션 풀이란 데이터베이스와 연결된 커넥션을 미리 만들어서 풀(pool) 속에 저장해 두고 필요할 경우 커넥션을 풀(pool)에서 가져와 쓰고 다시 풀(pool)에 반환하는 기법입니다. 커넥션 풀은 풀 속에 미리 커넥션이 생성되어있기 때문에 커넥션을 생성하는 데 드는 연결 시간을 줄일 수 있습니다. 커넥션을 계속해서 재사용하기 때문에 생성되는 커넥션 수가 일정하게 유지됩니다. 우리가 MySQL을 이용해 커넥션을 얻는다고 한다면 아래 코드와 같이 연결하게 된다. try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } Connection con = null; Stateme.. 2020. 5. 20.
JSP SCOPE Servlet과 JSP를 개발하다 보면 변수를 많이 다루게 됩니다. 어떤 변수는 웹 애플리케이션에서 공유하고 싶은 변수가 있을 수도 있고, 어떤 변수는 사용자 별로 유지하고 싶은 변수가 있을 수 있습니다. 또 어떤 변수는 포워딩 되는 동안 유지하고 싶은 변수가 있습니다. 이렇게 변수를 어떤 범위 내에서 사용하기 위해서는 스코프(scope)라는 것에 대해서 알아야 합니다. Application 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용 애플리케이션이 소멸될 때까지 존재합니다. Session 세션객체가 새성 돼서 소멸될 때까지입니다. 여러 개의 요청이 들어와도 남아있습니다. 상태 유지를 위해서 사용됩니다. 웹 브라우저 별로 변수가 관리되는 경우 사용 Request 클라이언트로부터 요.. 2020. 5. 13.
HttpServletRequest/Response 서블릿을 공부하다 보면 요청, 응답이라는 용어가 많이 등장합니다. 클라이언트가 서버에게 보낸 요청을 추상화한 객체 HttpServletRequset와 서버가 클라이언트에게 응답하기 위한 정보를 추상화한 객체 HttpServletResponse에 대해서 공부합니다. 요청 / 응답 웹 브라우저에 URL을 입력하고 Enter을 입력하면 웹 브라우저는 도메인과 포트 번호를 이용해 서버에 접속합니다. 그다음 path정보, 클라이언트의 다양한 정보를 포함한 요청 정보를 서버에게 전송합니다. WAS는 웹 브라우저로부터 Servlet요청을 받게 되면 Requset , Response라는 객체를 생성합니다. Requset 객체에는 요청할 때 가지고 들어온 다양한 정보들을 담습니다. 또 WAS는 요청을 보낸 클라이언트에게.. 2020. 5. 9.
JSTL JSTL(JSP STANDARD TAG LIBRARY) JSP 개발을 단순화하기 위한 태그 library 태그를 이용한 제어구조 JSTL 은 크게 5가지의 태그 라이브러리를 제공해줍니다. CORE 제어의 행위를 담당하는 태그 라이브러리입니다, Formation 값을출력할때 화폐단위나 날짜를 포맷팅 하는 방식이 필요할 때 사용하는 태그 라이 러리 Functions 데이터를 el을이용해서 데이터 값을 추출할 때 가끔은 문자열을 쪼개서 사용하거나 소문자를 대문자로 바꾸거나 문자열 조작이 필요로 할 때 사용하는 함수들을 묶어놓는 것입니다. SQL, XML기능또한 있지만 사용을 권하지 않습니다. 그 이유는 MVC방법론이 나오기 전에 VIEW에서 비즈니스 로직을 전부 처리하기도 했을 때 사용했던 방식입니다. 사용하.. 2020. 4. 28.
View page 은닉하기. MVC2 패턴 VIEW PAGE 은닉 MVC2 model2 패턴에서 jsp파일에서 실행할 시 NullPointException이 발생합니다. 그 이유는 컨트롤러와 뷰를 분리했기 때문에 뷰에 해당되는 jsp파일에서 실행 시 첫 화면에 받아올 수 있는 비즈니스 로직이 구현되지 않았기 때문입니다. 또한 동적인페이지와, 설정, 라이브러리 등을 사용자가 직접 요청할 수 없도록 VIEW에 해당되는 페이지를 숨길 수 있도록 WAS에서 제공하는 파일이 있는데 바로 WEB-INF입니다. WEB-INF는 외부에 서비스되지않는 파일을 둘 수 있으며, 라이브러리나 설정파일이나 코드 파일을 둘 수 있습니다. 따라서 클라이언트가 요청할 수 있는 동적인 페이지나, 설정 파일을 분리시켜 사용해야 하며 그때 상대 경로로 지정한 코드들.. 2020. 4. 28.
JSP MVC model 1 MVC 패턴 MVC 패턴은 여러 가지 디자인 패턴 중에 하나입니다. 패턴은 어떻게 프로그램을 개발할 것인지의 개발 방법을 공식화한 패턴입니다. 패턴 중 MVC패턴은 사용자와 동적인 페이지상에서 상호작용을 하는 애플리케이션을 개발할 때 사용되는 방식입니다. 예를 들어 사용자가 웹페이지의 게시판에 글을 올리는 상황처럼 직접적으로 소통하는 부분들이 있는 곳에서 보편적으로 사용되는 패턴입니다. Model - 어플리케이션이 "무엇"을 할 것인지 비즈니스 영역의 로직을 처리합니다 JSP에서는 실질적으로 출력될 데이터입니다. *비즈니스 로직이란 : 업무에 필요한 데이터 처리를 수행하는 응용프로그램의 일부입니다. 예를 들어 사용자가 회원가입을 한다면 프로그래머는 아이디의 중복검사에 대해 서버와 소통하면서 데이터중 중복.. 2020. 4. 27.