728x90
반응형

web.xml은 웹 애플리케이션의 전역 설정 파일


• DispatcherServlet 등록 → 스프링 MVC 구동
• ContextLoaderListener 등록 → Root ApplicationContext 구동
• 필터/리스너 등록 → 인코딩, 보안, 로깅 등 공통 처리
• 서블릿 매핑 → URL과 서블릿 연결


1. 웹 애플리케이션의 시작점 설정

• 웹 애플리케이션이 Tomcat 같은 서블릿 컨테이너에 배포될 때 가장 먼저 읽히는 설정 파일
• 어떤 Servlet, Filter, Listener를 사용할지 정의

2. DispatcherServlet 등록

웹 계층 담당
• Spring MVC의 핵심인 DispatcherServlet(Front Controller)을 등록하는 곳

<!—- 모든 요청이 DispatcherServlet으로 들어가도록 연결—->
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-name>/WEB-INF/…/dispatcher-servlet.xml</param-name>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>


3. ContextLoaderListener 등록

• Root ApplicationContext를 띄워주는 역할
비즈니스 로직 및 인프라 계층 담당(보통 서비스, DAO, DataSource 같은 Bean들은 여기서 초기화)

1. ContextLoaderListener + DispatcherServlet (정석 구조)
• Root Context (ContextLoaderListener)
• DataSource, TransactionManager, DAO, Service
• Web Context (DispatcherServlet)
• Controller, ViewResolver

2. DispatcherServlet만 사용하는 경우
• DispatcherServlet이 로딩하면서 DB 설정(iBatis Config)까지 다 들고감
• Root Context 없이 Web Context 하나로 통합 운영
• 초기 스프링/레거시 프로젝트에서 자주 보이는 방식

4. 필터(Filter) 설정

• 인코딩, 보안, 로깅 같은 기능을 전역으로 걸 수 있음

5. 서블릿 매핑

• 특정 URL 패턴을 어떤 서블릿이 처리할지 정의


728x90
반응형
728x90
반응형

✅ Spring

  • 자바 기반 애플리케이션 개발을 쉽게 해주는 프레임워크
  • 핵심은 DI(의존성 주입), AOP(관점 지향 프로그래밍) 같은 기능으로 객체 관리와 비즈니스 로직을 깔끔하게 분리할 수 있게 도움
  • 모듈형 구조라서, 프로젝트에서 필요한 기능에 따라 의존성을 선택적으로 추가하면 됨


✅ Modules

  • Core: 스프링의 기본 동작(빈 관리, DI, 표현식, 컨텍스트)
  • Web: 웹 애플리케이션 개발 지원
  • AOP: 부가 기능을 분리해주는 도구
  • Security:로그인/권한/보안 관리(인증/인가 처리)


https://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/overview.html

2. Introduction to Spring Framework

Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can focus on your application. Spring enables you to build applications from "plain old Java o

docs.spring.io



✅ 모듈 의존성 순서도

spring-core
   ↓
spring-beans
   ↓
spring-context
   ↓
spring-expression
   ↓
spring-aop
   ↓
spring-web
   ↓
spring-webmvc
   ↓
spring-security-core
   ↓
spring-security-web
   ↓
spring-security-config
   ↓
spring-security-taglibs


✅ 주요 Spring Core 모듈


1. spring-core
• 스프링의 가장 기본이 되는 모듈
• IoC(Inversion of Control), DI(Dependency Injection)를 제공
• BeanFactory 같은 핵심 컨테이너 기능이 포함

2. spring-beans
• Bean(객체) 정의, 생성, 주입을 담당
• XML, annotation, Java config 등 다양한 설정 방식 지원

3. spring-context
• spring-core, spring-beans 위에 올라가는 모듈
• ApplicationContext를 제공 → 메시지 리소스 처리, 이벤트 발행, 국제화(i18n) 지원

4. spring-expression(SpEL, Spring Expression Language)
• #{} 같은 표현식으로 객체 그래프를 조회·조작할 수 있게 해주는 언어
• 예: @Value("#{systemProperties['java.home']}")


✅ Spring Web 관련 모듈


1. spring-web
• Servlet API 위에서 동작
• 멀티파트 파일 업로드, 웹 관련 유틸, REST 지원 등

2. spring-webmvc
• 흔히 말하는 Spring MVC
• DispatcherServlet 기반으로 Model-View-Controller 패턴 지원
• REST API, 뷰 렌더링, 핸들러 매핑/어댑터, 컨트롤러 관리 등


✅ Spring AOP


• AOP(Aspect-Oriented Programming) 지원 모듈
• 로깅, 트랜잭션, 보안 같은 **횡단 관심사(Cross-cutting concerns)**를 분리
• 예: 모든 서비스 메서드 실행 전에 로깅 실행


✅ Spring Security 관련 모듈


1. spring-security-core
• 인증(Authentication), 인가(Authorization)의 핵심 로직
• 사용자 계정, 권한(Role) 관리

2. spring-security-web
• 보안을 웹 레벨(필터 기반)에서 적용
• 로그인/로그아웃, 세션 관리, CSRF 보호, URL 기반 접근 제어

3. spring-security-config
• XML, Java Config로 보안 설정을 쉽게 할 수 있게 해주는 모듈
• 예: @EnableWebSecurity

4. spring-security-taglibs
• JSP 같은 뷰에서 보안 태그 사용 가능.
• 예: <sec:authorize access="hasRole('ADMIN')">


Spring Boot일 경우‼️

대부분의 모듈을 직접 추가하지 않고, starter 의존성으로 해결

Ex)
spring-boot-starter-web
→ spring-web, spring-webmvc, spring-core 등 자동 포함
spring-boot-starter-security
→ spring-security-* 모듈 자동 포함

즉, Boot 사용 시에는 목적별 스타터만 추가하면 끝이고,
Legacy Spring 사용 시에는 개별 모듈을 직접 추가해야 함(pom.xml)


1. 소프트웨어에서 “레거시”의 일반 개념
• 레거시 시스템/프로젝트 = 오래된 기술, 아키텍처, 코드 스타일을 기반으로 돌아가는 시스템
• 당장은 동작하지만 유지보수나 확장이 어렵고, 최신 기술 스택과는 괴리가 있는 경우가 많음

2. 스프링 맥락에서 “레거시 프로젝트”
• 스프링에서 말하는 레거시 프로젝트는 보통 Spring Boot를 쓰지 않고, 직접 XML 또는 JavaConfig로 설정한 프로젝트 뜻함

• Maven/Gradle에서 필요한 모듈을 하나씩 직접 추가해야 함(spring-core, spring-beans, spring-webmvc 등)

• 환경 설정(XML, JavaConfig)을 직접 관리
-applicationContext.xml
-web.xml + dispatcher-servlet.xml

• 서버도 내장 Tomcat이 아니라, WAR 파일 빌드 후 외부 WAS(WebSphere, Tomcat 등)에 배포

• 프로젝트 구조가 복잡하고 설정 코드 양이 많음


728x90
반응형
728x90
반응형

1. 데이터베이스>새 데이터베이스 연결
2. 연결하고자 하는 db를 선택
3. 원하는 connection type을 선택 후, 그에 따라 db 접속 경로 지정

basic 방식
• 접속 정보(Host, Port, Service/SID)를 DBeaver에 직접 입력하는 방식

TNS 방식
• 오라클 클라이언트에서 제공하는 tnsnames.ora 파일에 정의된 TNS Alias를 사용
• DBeaver는 TNS Alias 이름만 지정하고, 실제 접속 정보는 tnsnames.ora에서 불러옴


4. 계정 정보 입력
5. 우측 하단 [Edit Driver Settings] 버튼 클릭
6. 하단 ’Libraries’ 탭에 기본 설정된 것들 전부 삭제
🔥7. [Add File] 버튼 클릭 후, 각 DB에 맞는 JDBC(Java Database Connectivity) 드라이버 선택

JDBC(Java Database Connectivity) 드라이버
• Java 애플리케이션이나 DBeaver 같은 툴이 DB에 접속하기 위해 꼭 필요한 중간 연결 역할
• Java 애플리케이션 ↔ 데이터베이스 사이에서 명령과 데이터를 주고받는 번역기 역할
• 형식은 .jar(Java ARchive), 해당 파일이 없으면 Java 프로그램이 DB 종류를 인식하지 못해 연결 불가
MySQL JDBC 드라이버(mysql-connector.jar)
Oracle JDBC 드라이버(ojdbc.jar)


8. 하단 중간에 위치한 [Find Class] 클릭하면 ‘Drive class’를 선택할 수 있는데 아무거나 선택
9. [Test Connection…] 버튼 클릭해서 테스트 해보면 됨

728x90
반응형
728x90
반응형

dataset.filter(“조건식”)

  • 데이터셋에 로드된 데이터 중, 조건에 만족하는 행(row)만 보이게 필터링하는 메서드
  • 데이터셋의 값과 조건식 값의 타입이 다른 경우엔 이유는 모르겠으나 부정 조건이 안 먹힘
  • 부정조건으로 필터링하려면 타입을 맞추거나 아래 메서드를 사용하면 됨


dataset.set_filterstr(“조건식“)

  • 추측컨대 조건식에 쓰이는 데이터 타입을 무조건 스트링 타입으로 바꿔서 필터링 하는 듯




728x90
반응형
728x90
반응형


Ctrl + Shift + F: 전체 검색


스크립트 탭

  • Alt+ G: 선택한 함수 정의 위치로 이동 (스크립트 내 에서 함수를 선택한 후 사용)
  • Alt + 아래 화살표: 스크립트 내에서 함수 목록을 탐색하고 선택
  • Ctrl +/ : 주석 처리
  • Ctrl + Alt : 주석 제거
  • Ctrl + R : 바꾸기


디자인 탭

  • Ctrl + B: 바인딩된 개체 표시


728x90
반응형
728x90
반응형

1. 노트 패드 테마 변경

설정>스타일 설정…

  • 테마 선택: Twilight(내 눈엔 이게 젤 편-안)


2. Workspace 열기

파일>Workspace으로 폴더 열기
(디컴파일한 소스 볼 때 좋음)

-폴더 별로 찾기: ctrl+f 누르고 [파일에서 찾기] 이동 후, 디렉토리 설정

728x90
반응형
728x90
반응형

grep

  • global regular expression print
  • 파일이나 출력에서 특정 문자열이나 패턴을 검색할 때 사용하는 명령어

grep [옵션] ‘패턴’ [파일명]



정규식

  • ^ : 행의 시작 지시자 -> ‘^summer’
  • $ : 행의 끝 지시자 -> ‘summer$’
  • . : 하나의 문자와 대응 -> ‘su..er’
  • [0-9] : 0부터 9까지의 숫자 -> ‘10:1[0-9]’


옵션

  • -i : 대소문자 구분없이(ignore)
  • -c : 찾은 행의 총 개수(count)
  • -n : 찾은 행의 파일 내 행 번호(line number)
  • --color : 매칭된 부분을 색상으로 강조



예시

grep -i -n error xxx.log
grep -i -c error xxx.log
grep ‘2025-07-17 10:[1-2][0-9]’ xxx.log


응용 예시1

grep ‘2025-07-17 10:[1-2][0-9]’ xxx.log > was1.txt
grep -i -c error xxx.log >> was1.txt

>

  • 표준 출력을 오른쪽 파일(was1.txt)에 저장


was1.txt

  • 검색 결과가 저장될 텍스트 파일 (없으면 생성, 있으면 덮어씀)


>> was1.txt

  • 기존 파일 끝에 내용을 추가



응용 예시2

ps -ef|grep test

ps -ef

  • 현재 시스템에서 실행 중인 **모든 프로세스를 전체 포맷(-f)**으로 보여줘
  • e: 모든 사용자의 프로세스 보기 (== -A)
  • f: 풀 포맷 (UID, PID, PPID, 시작 시간, 명령어 등 전체 정보 출력)


| (파이프)

  • 앞 명령어(ps -ef)의 출력을 뒤 명령어(grep test)의 입력으로 전달


grep test

  • 입력된 문자열 중에서 ‘test’라는 문자열이 포함된 줄만 출력
  • 즉, COMMAND 컬럼에 ‘test’라는 글자가 들어간 프로세스가 표시됨




728x90
반응형
728x90
반응형

카카오 맵 API 사용 시 

kakao is not defined

이와 같은 에러가 발생한다면 아래 항목을 잘 설정했는지 확인해보자

 

 

 

1. 도메인 등록

내 애플리케이션>앱 설정>플랫폼 - 사이트 도메인을 잘 입력했는지 확인

 

 

2. 앱 키 - 자바스크립트 키 

내 애플리케이션>앱 설정>앱 키 - 자바스크립트 키를 잘 복사해서 넣었는지 확인

 

 

1, 2번을 제대로 입력했는데도 동일한 에러가 반복된다면 브라우저에서 api를 직접 호출해보자 

https://dapi.kakao.com/v2/maps/sdk.js?appkey=여기에_JavaScript_키

위와 같은 에러가 난다면  지도 서비스(API 사용 권한)를 활성화하지 않은 것

 

 

3.  지도 서비스(API 사용 권한) 활성화

내 애플리케이션>제품 설정>카카오 맵 - 활성화가 되어있는지 확인

 

 

 

위 설정이 제대로 되어있다면 문제없이 지도가 그려졌을 것이다!

 

728x90
반응형

'ETC' 카테고리의 다른 글

notepad++ 꿀팁  (0) 2025.07.17
Sublime text 꿀팁  (0) 2024.06.25
RSA 암호화 적용하기 - 키 생성 및 암•복호화  (0) 2024.06.03
Git&GitHub Desktop 설치  (0) 2023.07.14
2022 INFCON(인프콘)에 다녀왔어요!  (0) 2022.08.27
728x90
반응형

문제 상황

로컬과 개발에서 제목이 한글인 파일을 다운로드할 때 404 에러 발생하는데 운영에선 문제가 없음
현재 로컬 WAS는 tomcat이고, 개발은 운영과 동일한 JEUS 사용 중

해결

1) tomcat
-server.xml 파일 내 커넥터 설정에 Engine 탭 내 URIEncoding=“UTF-8”을 추가해주면 됨

2) jeus

설정 파일의 물리적 위치를 몰라서 서버 관리 콘솔 기준으로 설명함

 

경로: Servers>(서버 선택)>Engine>Basic

설정하고자 하는 서버를 선택한 후, Engine 탭 - Basic 탭 화면으로 이동하면 하위에 Encoding 설정하는 부분이 있음!

각 항목마다 두가지 방식으로 설정 가능

  • Default
    • APP에  Encoding 설정이 되어있다면 해당 설정이 우선 적용되고, 설정이 없는 경우는 JEUS 설정을 적용
  • Forced 
    •  APP에 설정된 것과 상관없이 강제로 Encoding JEUS 설정 적용

 

운영 설정을 확인해보니까 Forced에 UTF-8로 적용되어 있길래 개발에도 똑같이 적용하니까

한글 깨짐 없이 다운로드 잘 됨!

728x90
반응형

'서버 > JEUS' 카테고리의 다른 글

[JEUS] 제우스 JNDI DataSource 설정  (0) 2024.11.13
728x90
반응형

java -version(JRE 버전 확인)

java version "17.0.4" 2022-07-19 LTS
Java(TM) SE Runtime Environment (build 17.0.4+8)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.4+8, mixed mode)


javac -version(JDK 컴파일러 버전 확인)

javac 21.0.4


jre와 jdk 버전이 다른 경우

1) java와 javac가 서로 다른 경로를 가르킴
2) System 폴더에서 java 실행 → 내 경우 이 문제

원인

Windows에서는 C:\Windows\System32 폴더가 PATH에서 우선순위가 높아 java 실행 시 System32 하위 Java가 실행될 수도 있음

where java

→ java 경로 확인

C:\Windows\System32\java.exe
C:\Program Files\Java\jdk-17\bin\java.exe

→ System32 내 java.exe가 먼저 실행되고 있음


해결

실행 상자(windows + R)에 sysdm.cpl 입력하면 시스템 속성창 열림

환경변수창(시스템 속성>고급-환경변수) 열고
시스템 속성란에 설정되어있는 JAVA_HOME, Path 변수 확인

JAVA_HOME 변수에 jdk 경로가 잘 설정 되어 있으면

Path 변수를 확인해서 jdk 경로를 최상위 우선 순위로 설정해주면 됨


728x90
반응형

+ Recent posts