반응형
Web

Web

    Intellij에서 spring boot multi module 사용시 jsp 못찾는 이슈 해결방법

    기존에 공부삼아서 개발중이던 wedulpos에 spring batch를 추가해보려고 했다. 그래서 공통으로 mono 프로젝트로 되어있던 wedulpos를 multi module로 수정했다. 그랬더니 이상하게 servlet context에서 jsp를 로드하지 못했다. 그래서 계속해서 ServletException not include... jsp 또는 ServletException not jsp found 오류가 발생했다. 그래서 엄청난 구글링을 2틀동안했다. 집에서 그리고 약속장소에서 기다리면서 노트북으로 그리고 퇴근하고 오늘.. 정말 가지가지한 방법을 다해봤었다. 기본적으로 embed-tomcat의 경우 jasper를 가지고 있지 못해서 별도의 모듈을 추가하고 servlet jspl 추가했고, comp..

    nginx 정리와 설치 및 기본 설정방법

    Ngnix 설명nginx는 기존 웹서버에서 많은 트래픽을 감당하기 위해서 확정성을 가지고 설계된 비동기 이벤트 드라이븐 방식의 웹서버를 칭한다. Nginx 설치nginx를 맥이 있으면 brew를 통해서 간단하게 설치가 가능하다.1brew install nginxcs Nginx 프로세스nginx는 하나의 마스터 프로세스와 여러 worker 프로세스를 가진다. 마스터 프로세스의 주요 목적은 read 권한 그리고 성능 측정과 worker 프로세스 관리이다. worker 프로세스는 요청을 처리한다. nginx는 event-based 모델을 사용하고 worker 프로세스 사이에 요청을 효율적으로 분배하기 위해서 os에 의존하는 매커니즘을 사용한다. worker 프로세스에 개수는 설정 파일에서 정의되며 정의된 프로..

    Spring Context 종류 및 특성

    Spring Context 종류 및 특성 Spring 프로젝트를 처음 생성할 시 root-context.xml과 servlet-contex.xml 두 개가 생성됩니다. 이 두개가 각각 하는일이 지정되어 있는데 무심코 사용하는 경우가 많습니다. 이 둘의 차이점에 대해서 설명하겠습니다. spring은 multi context 환경을 제공해주는데 기본적으로는 root context와 servlet context로 구분됩니다. 1. servlet-context web application의 client의 요청을 받기 위한 entry point 입니다. 따라서 해당 context의 설정에는 요청에 대한 처리를 해줄 controller의 매핑설정(handler mapping)과 요청처리 후 view처리를 어떻게 할..

    /과 /*의 차이점을 포함한 url-mapping 정리

    web.xml에서 servlet-mapping 설정 시 url-pattern을 설정하는 것에 대해 정확한 정리가 되어 있지 않아서 정리해보았다. [url-pattern별 의미] 1. "/"로 시작하고 "/*"로 끝나는 패턴은 path로 인식 -> /wedul/list, /wedul/user 등 모든 URL 패턴을 매칭 2. "*."으로 시작하는 경우 확장자 매칭 -> 과거 확장자 *.do 또는 *.ajax와 같은 패턴 매칭 3. "/"만 정의한 경우 디폴트 서블릿 의미 -> default servlet은 servlet mapping에 걸리지 않은 나머지 매핑요소들을 처리한다. 4. 그 외의 경우는 정확하게 일치하는 매칭 /* Dispathcher servlet을 /*으로 했을때의 문제/*으로 매핑하였을 ..

    외부 properties 파일을 이용해서 스프링 빈을 생성하는 방법

    1. XML에서 프로퍼티 설정 12345678910111213141516// xml // properties 파일db.driver=com.mysql.jdbc.Driverdb.jdbcUrl=jdbc:mysql://localhost/spring4fs?characterEncoding=utf8db.user=testdb.password=testColored by Color Scriptercs 태그는 location 속성으로 지정한 프로퍼티 파일로부터 정보를 읽어와 빈 설정에 입력한 플레이스 홀더의 값을 프로퍼티 파일에 존재하는 값으로 변경한다. # place holder는 ${로 시작하고 }로 끝나는 값. 주의 할 점은 서로 다른 xml에서 서로다른 위치에 프로퍼티 파일을 사용한다고 해도 먼저 열린 프로퍼티 값이..

    javascript로 여러 파일 다운로드 하기

    회사에서 프로젝트를 진행하다가 자바스크립트로 여러 파일을 동시에 다운받게 할 일이 있었다. 기존에 다음과 같이 반복을 통해서 진행하였더니, 정상적으로 동작하지 않았다. 그 이유는 정확히 알지 모르지만 같은 요청을 동시에 요청하는 것을 막는 것 같다. 12345678 Colored by Color Scriptercs 코드에 두개를 요청하였으나, 하나만 다운로드가 되는 것을 알 수 있다. 실패에 원인이 제대로 출력되지 않아 정상적으로 확인하기는 어렵다. [해결법] 이를 바꾸기 위해서는 어느정도에 interval을 주어야 한다. 12345678910dd Colored by Color Scriptercs 이렇게 하면 해결이 되지만, 만약 서버에 request 응답 시간이 지연되면 마찬가지로 되지 않는다. 그럴 ..

    var와 let 그리고 const 차이점과 사용법 소개

    es5까지 Javascript에는 변수 선언할때 var를 사용하였었다. 하지만 var를 선언하여 변수를 선언할때 잘못된 사용으로 인해 문제가 발생하는 경우가 있었다. 하지만 자바스크립트 es6로 올라가게 되면서 let 그리고 const 가 추가되었다. 프로젝트를 진행하면서 es6를 처음 사용하게 되었는데 java8이 나와서 java 사용이 편해진 것 처럼 es6를 사용하면서 더욱 편하게 개발을 진행하였다. 그럼 es6의 특징에 대해 알아보자. [var와의 차이] var는 function-scoped이고, let 그리고 const는 block-scoped 이다. 함수 스코프는 모든 변수가 함수에 속하고 한수 전체에 걸쳐서 사용되는 개념이다. block-scoped는 선언된 변수를 둘러싼 블록의 스코프를 이..

    Junit 정리 - MockMvc를 이용한 컨트롤러 테스트

    입사 후 개발을 한지 벌써 3년 차가 되었다. 개발을 처음 접할 때는 어떻게 구현해야 할지 어떻게 만들어야 하는지에 대한 관심이 더 컸다. 하지만 요새는 개발 후 어떻게 테스트를 진행하여 먼저 버그를 예방(?)할 수 있는지 고민하기 시작했다. 성격이 덜렁거리거나 대충 하는 스타일은 아니었는데, 요즘 열정이 많이 식어서 그런지 단순한 부분에서 버그를 유발하는 것 같아서 TDD를 통해 고쳐보려고 Junit을 공부하기로 했다. 스프링의 각 영역인 Controller. Service, Dao에 대한 테스트를 총 3장에 걸쳐서 설명하겠다. 그리고 Mockito에 대한 설명을 추가로 진행하겠다. 0. 공통 우선 스프링에서 단위테스트를 진행하기 위해서는 몇가지 라이브러리가 필요하다. 123456789101112131..

    Mybatis의 동적 SQL

    Mybatis의 동적 SQL Mybatis가 가지는 표현식은 다음과 같다. IfChoose(when, otherwise)Trim(where, set)Foreach 기능 사용 예 설명 if AND title like #{title} 코드로 작성할 때의 if 구문에 대한 처리 -> 참 거짓을 구별해서 사용할 때 처리한다. Choose, When, otherwise AND title like #{title"" AND author_name like #{author.name} AND featured = 1 switch와 같은 상황에 대한 처리 Trim, Where,set … 로직을 처리하면서 필요한 구문을 변경 foreach

    longpolling 방식 소개 및 comet 방식과의 차이점 설명

    Comet 기존의 지속적인 갱신을 위해서는 Polling이라고 불리는 일정 간격으로 서버에 요청을 보내서 바뀐 내용을 조회하는 방식이였지만 이 방식을 리얼타임 수준으로 갱신하려면 간격을 줄여야 해서 불편하였다. 반면Ajax Push라고도 불리는 Comet은 Long Polling 과 Streaming 방식 두 가지를 제공한다.1) Long Polling클라이언트가 요청을 보내면 서버에서 이벤트가 발생할 때까지 응답을 하지 않고 가지고 있다가 이벤트가 발생하면 응답을 하고 다시 클라이언트에서 요청이오면 응답을 하는 구조로 되어있다.2) Streaming요청을 최초의 한번 보내면 Chunk데이터를 통해서 이벤트가 있을 때마다 계속 클라이언트에 데이터를 보내준다.

    Get과 Post 방식의 차이점 설명

    GET 방식 vs port 방식 Get- 서버에 있는 정보를 가지고 오기위해 설계된 방법- 서버로 전달할 수 있는 크기는 최대 240 Byte- 쿼리 스트링 환경변수를 통해서 서버의 전달되는데 형식은 다음과 같다.http:// www.xxx.xx.xx/login?id=hj&name=hong ? 이후의 값들은 서버에서 Query_string을 통해 전달된다.URL 노출이 되면 보안문제 발생우려 POST 방식- 서버로 정보를 올리기 위해 설계된 방법- 선버의 전달할 수 있는 데이터 크기가 제한이 없다.- URL에는 파라미터가 표시되지 않는다. 출저 : 자바 웹 프로그래밍 - 한빛 미디어

    JSP 개념 설명

    JSP JSP(Java Server Page)는 서블릿이라고 하는 자바 웹 프로그래밍 기법에 기반을 두고 있으며, PHP나 ASS와 같이HTML과 함께 스크립트를 사용할 수 있도록 되어있다.-> JSP는 자바 서블릿 기반의 서버 스크립트 기술 중 하나이며, 서블릿의 특징을 대부분 가지고 있다.->JSP의 장점은 곧 서블릿의 장점과 일맥상통한데, 프로세스 기반이 아니라 스레드 기반으로 실행 된다는 것이다. 즉, 프로세스는 하나만 만들어지고 동일한 요청은 스레드를 만들어서 처리하기 때문에 시스템 자원을 절약하고효율적인 공유가 가능해진다.-> 자바를 기반으로 하는 강력한 객체지향 언어의 뒷바침으로써 자바의 모든기능을 쓸수 있는 자점이 있다. JSP 특징->빈즈(Beans)라고 하는 자바 컴포넌트를 사용할 수 ..

    아파치와 톰캣의 차이

    아파치와 톰캣의 차이 1. 아파치Http웹서버를 지칭하는 말이다. Http웹서버는 http요청을 처리할 수 있는 웹 서버이고, 아파치 http서버는 http요청을 처리하는 웹서버이다.(post,get,delete) 2. Tomcat톰캣은 흔히 was라고 말한다. Was는 웹 서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 서비를 말한다. 클라이언트의 요청이 있을 때 내부의 프로그램을 통해 결과를 만들어내고 이것을 다시 클라이언트에게 전달해주는 역할을 한다. 둘의 차이-> 그럼 was만 쓰면 되지 웹서버를 따로두는지 의문이 생긴다. 그 이유는 목적이 다르다. 웹 서버는 정적인 데이터를 처리하는 서버이다. 이미지나 단순 html 파일과 같은 리소스를 제공하는 서..

    jsp 기본 문법 설명

    주석JSP에서 주석 처리 방법 JSP 주석 : 클라이언트로 전달 되지 않는 주석 지시어지시어는 해당하는 JSP 파일의 속성을 기술하는 곳으로, JSP 컨테이너에게 해당 페이지를 어떻게 처리해야 하는지 전달하기 위한 내용을 담고 있다.크게 page, include, taglib으로 나뉘며 각각의 속성이 있다.Page 지시어Page 지시어는 현재의 JSP 페이지를 컨테이너에서 처리하는 데 필요한 각종 속성을 기술하는 부분으로 대개 소스 코드 맨 앞에서 볼 수 있다.문법) Ex)

    typeAliases 사용방법

    XML Mapper를 이용하는 데 있어 매번 parameterType이나 resultType을 패키지까지 포함된 클래스명을 작성하는 일이 번거롭다면 Mybatis의 설정 파일 mybatis-config.xml을 사용해서 typeAliases를지정해주면 된다. typeAliases는 하위 요소로 package와 typeAlias 요소를 가질 수 있다. 이 방법을 이용하면 매번 parameterType이나 resultType에 사용하는 클래스의 이름을 지정해줄 필요가 없다. 그렇게 되면 Mapper xml 에서 더 이상 resultType, marameterType에 긴 패키지명을 포함할 필요가 없다. 클래스명만 입력하면 된다.기존의 mapper파일에서 resultType을 설정할때 길게 입력하였다.다음과 ..

반응형