목록SERVLET (25)
삶 가운데 남긴 기록 AACII.TISTORY.COM
여기서는 한국어와 영어만을 대상으로 합니다. properties 파일 작성 Spring MVC 프로젝트에서... src/main/resources 경로에 message_ko.properties 와 message_en.properties 파일을 생성합니다. 그러면 빌드와 배포를 했을 때 WEB-INF/classes 경로(classpath)에 프로퍼티 파일들이 생성됩니다. 이 프로퍼티 파일들은 유니코드로 저장되며, 이클립스를 전자정부프레임워크를 사용하거나 properties editor 플러그인을 사용하면 자동으로 유니코드를 한국어로 표기해줍니다. Help > Install New Software... > Add... Name : properties editor Location : http://propedi..
html 파일에 한글 설정 server.xml 한글 설정 GET방식에서는 질의 문자열들을 URI에 포함되기 때문에 URI인코딩 처리 작업을 해야 합니다. server.xml 파일에 URIEncoding="UTF-8" 프로퍼티를 설정합니다. web.xml 한글 설정 encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter /* POST 전송 방식은 요청 body에 담아 전달됩니다. CharacterEncodingFilter는 http상 주고받는 데이터의 헤더 값을 인코딩합니다. Servlet에서 request.setCharacterEncoding("ut..
페이징 처리시 게시물 10개를 기준으로 10페이지씩 표기하는 방법을 기준으로 개발하는 것이 보통입니다. endPage endPage = (int)(Math.ceil(cri.getPage() / (double)displayPageNum) * displayPageNum); cri.getPage()는 현재 페이지 번호를 의미합니다. displayPageNum은 화면 하단에 페이징 버튼의 갯수를 의미합니다. 현재 페이지가 3일 때 : Math.ceil(3/10)*10 = 10 즉, endPage는 10입니다. 현재 페이지가 20일 때 : Math.ceil(20/10)*10 = 20 즉, endPage는 20입니다. 현재 페이지가 21일 때 : Math.ceil(21/10)*10 = 30 즉, endPage는 3..
스프링 부트(Spring boot) 기존 스프링 프레임워크는 세팅이 매우 복잡하기 때문에 세팅을 자동으로 해주는 스프링 부트가 등장했습니다. 스프링 부트 덕분에 Stand-alone 어플리케이션을 쉽게 구동가능해졌습니다. 기존에는 자바 웹 어플리케이션을 WAR 파일로 압축해서 WAS에 배포했었고 다수의 WAR 파일을 동시 구동할 수 있어서 stand-alone이 아닙니다. 스프링 부트는 내장된 임베디드 WAS(tomcat, jetty 등)로 구동하게 됩니다. IDE 는 전자정부프레임워크 4.0 이상이나 STS 에서 스프링 부트를 지원합니다. DispatcherServlet 기존 웹 어플리케이션 개발은 HttpServlet을 상속하는 클래스를 만들고 doGet()이나 doPost()메서드를 구현하고 Htt..
MVC패턴은 어플리케이션을 Model, View, Controller 으로 작업을 분리해서 모듈간 결합도를 최소화하여 각종 변화하는 상황에 대응하면서도 부작용을 줄이고, 유지보수성도 높일 수 있는 어플리케이션 개발 디자인 패턴을 말합니다. 작업을 모듈별로 나누어 작업하고 이를 결합해 주기 때문에 협업에도 유용하며, 협업시 개발자 자신이 맡은 역할에만 집중할 수 있도록 도와줍니다. View는 클라이언트와 서버간 인터페이스 역할을 하며, 클라이언트 요청을 받고 서버로부터의 결과를 표시해주는 기능을 합니다. Model은 비지니스 로직 서비스와 데이터베이스 처리를 담당합니다. Controller는 View와 Model을 연결해주는 역할을 합니다. 우선 SQL Developer 같은 DB 툴을 이용하여 오라클DB..
JSTL SQL 태그는 많이 사용하지는 않지만 알아두도록 합시다. SQL 기본 액션 : 커넥션 풀 DataSource를 생성하는 태그입니다. var: DataSource 의 설정값을 저장하는 변수의 이름을 지정합니다. dataSource : JNDI 서버에 등록하는 리소스 이름을 지정합니다. scope : 변수의 유효범위를 지정합니다. driver : 로딩할 JDBC 드라이버 정보를 지정합니다. url : 접속할 DB서버의 URL을 지정합니다. userName : DB서버에 로그인할 ID를 지정합니다. password : DB서버에 로그인할 패스워드를 지정합니다. : select 문을 수행하기 위한 태그입니다. sql : 실행할 sql문을 지정합니다. var : select 한 결과값을 ResultSet..
Properties 파일 웹 어플리케이션에서 다국어 지원을 위해 Properties 파일을 이용하는 경우가 많습니다. net.aacii.bundle 패키지를 생성해서 msg_ko.properties와 msg_en.properties 파일을 생성합니다. 이 properties 파일들은 한글의 경우 이클립스에서 자동으로 유니코드로 변환해주는데, 이 properties 파일들을 우클릭 후 open with를 선택 후 텍스트에디터로 열게 되면 한글이 유니코드로 변환되어 있는 것을 확인할 수 있습니다. 만약 자동으로 유니코드로 변환이 되지 않는다면, 이클립스 플러그인 중에 Properties Editor를 설치하시면 됩니다. 이 플러그인 설치 방법은 여기에서 다루지 않겠습니다. msg_ko.properties 을..
JSTL(Java Server Pages Standard Tag Library) 개요 자주 사용하는 기능은 커스텀 태그로 구현 한다음 재사용하면 편리합니다. 그러나 커스텀 태그는 직접 만드려면 많은 수고가 필요하게 됩니다. 그래서 표준 태그 라이브러리가 존재하는데 이것이 JSTL 입니다. JSTL 1.0은 Servlet 2.3과 JSP1.2와 호환 JSTL 1.1은 Servlet 2.4와 JSP2.0과 호환 JSTL 1.2은 Servlet 2.5와 JSP2.1과 호환 core는 기본 기능이 포함되어 있으며 formatting은 날짜 시간에 관한 기능, sql은 데이터베이스 작업기능 xml은 xml을 지원하는 기능 functions은 여러 함수 기능이 구현되어 있습니다. core: formatting: s..
태그 기반 커스텀 태그는 클래스 기반 커스텀 태그를 선행으로 학습해야 이해하기 쉽습니다. jsp파일에 커스텀 태그 기능을 구현한 다음, 확장자를 tag로 지정하면 하나의 커스텀 태그가 작성된 것입니다. 이 .tag파일이 태그 핸들러 클래스 파일(.class)로 변환되어 동작합니다. 커스텀 태그와 .tag 파일이 하나씩 일대일로 매핑되는것입니다. 또한 .tag파일의 파일명이 jsp페이지에서 사용하는 커스텀 태그의 이름이됩니다. 태그 기반 커스텀 태그는 아래와 같은 절차로 사용합니다. 1. tag 파일을 작성합니다. 저장 위치는 /WEB-INF/tags 폴더 혹은 그 하위 폴더만 가능합니다. 2. jsp 페이지에서 커스텀 태그를 사용하기 위한 taglib 지시자를 선언합니다. 3. 태그 파일을 커스텀 태그로..
커스텀 태그 JSP1.2 버전과의 차이점은 아래와 같습니다. SimpleTag 인터페이스 추가 SimpleTagSupport 클래스 제공 doTag() 메소드로 태그 관련 메소드 통일 JspFragment를 이용한 body 전달 동적 Attribute 추가 방법 제공 기본 예제 net.aacii.customTag 패키지에 MyCustomTag2.java 파일을 생서합니다. package net.aacii.customTag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; public class MyCustomTag2 extends SimpleTa..
EL 구문 ${ } 내에 표현식으로 작성합니다. JSP 2.0 부터 사용가능합니다. boolean변수, 숫자, 문자열, null 데이터 타입을 사용할 수 있습니다. JSP태그로 작업하는 기능은 EL구문으로 표현할 수 있습니다. ex18.jsp 문자: ${"Literals"} bool: ${5>3} 객체: ${header["host"]} EL 연산자 산술 연산자: + , - , * , / , %, mod 논리 연산자: &&, ||, !, and, or, not 비교 연산자: ==, !=, , =, eq, ne, lt, get, le, ge empty 연산자: 값이 null 이나 공백 문자인지 편단하는 연산자 ${empty "" } 혹은 ${empty null} EL 내장객체 jsp 내장 객체 처럼 선언하지..
서버 설치 및 세팅 CentOS 7 설치 CentOS 설치 vmware 가상 머신 생성 CentOS 소개 실무에서 많이 쓰는 리눅스 중에서 red hat 리눅스가 있습니다. 그 red hat 리눅스와 사실상 동일하다고 할수 있는 CentOS 운영체제라는 것이 있습니다. 그런데 red hat에 blog.aacii.net SSH 포트 변경 리눅스 SSH 포트 변경 보안을 위해 SSH 포트를 변경 할 수 있습니다. 1. 먼저 vi 에디터로 설정 파일을 편집합니다. #vi /etc/ssh/sshd_config 2. 주석제거 및 포트 변경 #Port 22 으로 되어 있는 부분을 주석 # 기호를 제거 한 후에 blog.aacii.net RSA 공개키/개인키로 Putty를 이용한 SSH 접속 RSA 공개키/개인키로 ..
내장 객체 서블릿에서는 변수, 메소드, 객체를 선언하고 초기화 한 후에 사용하지만 jsp에서는 내장되어 있는 객체들이 있어서 선언 및 초기화를 하지 않고 바로 사용할 수 있는 내장 객체들이 있습니다. 내장 객체들과 같은 이름으로 객체를 선언하려고 하면 오류가 발생합니다. request : HttpServletRequest 객체 response : HttpServletResponse 객체 session : HttpSession 객체 application : ServletContext 객체 config : ServletConfig 객체 out : JspWriter 객체(출력 처리) pageContext : PageContext 객체(jsp 페이지 처리 객체) request, response 객체 logInO..
JSP jsp는 템플릿코드(html 태그 등)와 서블릿 코드를 섞어서 같이 작성할 수있습니다. 컨테이너는 jsp를 해석해서 서블릿으로 변환 후 소스를 컴파일 합니다. 이러한 변환 작업은 최초 요청시 변환되고 이후 요청은 변환없이 이미 변환된 서블릿을 통해 수행됩니다. 예제 WebContent 경로에 우클릭 후 new->JSP file을 선택 후 example1.jsp로 생성합니다. Hello 태그는 지시자이며 page, include, taglib가 있고 페이지에 대한 정보를 설정합니다. 태그는 멤버 변수 혹은 메소드를 선언합니다. 태그는 서블릿(자바)으로 변환되어 서버측에서 수행됩니다. 태그는 out.print() 으로 변환되어 서블릿의 변수 값이 클라이언트(HTML)으로 전송되어 표기됩니다. 는 JS..
서블릿 오류 처리 오류를 처리할 페이지를 web.xml에 지정하면 오류가 발생하면 해당 페이지로 이동시킵니다. try-catch와 중복으로 설정한다면 try-catch문이 우선 처리 됩니다. try-catch문은 해당 블록만 오류를 처리하는 반면 web.xml은 웹 어플리케이션 전체에 대해 처리할 수 있습니다. web.xml에 태그가 설정되어 있을 때 나 에 지정한 오류가 발생하면 태그에 지정된 오류 페이지가 실행됩니다. web.xml에 다음과 같은 태그를 추가합니다. 404 /errorHandle java.lang.NullPointerException /errorHandle 이어서 오류를 처리할 errorHandle을 위해 ErrorHandleServlet.java를 작성합니다. package net...