BackEnd 62

📑 Spring_국비Day81

프레임워크는 기본 틀을 만들어 놓은 상태에서 이 틀과 나의 코드를 조립하여 완성하는 것이다. 따라서 나의 코드를 Spring에서 준비해준 기본 틀과 알맞게 조립하기 위해서는 기본 틀을 이해할 필요가 있다. [ 스프링의 개요 ] Spring 프레임워크는 JavaEE 기반의 어플리케이션 개발을 쉽게 해주는 오픈소스 어플리케이션 프레임워크로, 간단한 자바 객체(POJO : Plain Old Java Object) 를 Spring의 경량(Lightweight) 컨테이너를 통해 생성 및 관리하는 빈(Bean) 으로 처리해준다. Spring이라는 이름의 기원은 전통적인 J2EE를 “겨울”에 빗대어 “겨울” 후의 “봄”으로 새로운 시작을 의미함 Rod Johnson이 창시한 개발프레임워크 EJB가 제공했던 대부분의 ..

📑 DispatcherServlet

src/main/java에 annotation, controller, filter폴더를 복사 WEB-INF에 web.xml복사 메인 컨트롤러는 DisPatcherServlet(사용자 요청을 최초로 받고, 이를 분석해서 적당한 컨트롤러에게 작업을 지시)이다. 이 컨트롤러가 작업을 지시할 컨트롤러(실제로 일을 하는 컨트롤러)를 초기에 메인 컨트롤러가 생성될 때 함께 생성한다. 이를 자동으로 하게 만드려고 web.xml파일에 init-param을 지정하는 것이다. 원리를 아는 것도 중요하지만 사용방법을 익혀라! 프레임워크 초기 실행 (혹은 restart) DispatcherServlet 생성 DispatcherServlet init() web.xml에 있는 태그에 정의된 값을 읽어옴 DispatcherServ..

📑 MVC_국비Day79

본격적으로 스프링에 대해 학습하기 전에 지금껏 해왔던 Model2 패턴을 정리하고, 스프링에서 사용할 MVC패턴과 비교분석하면서 MVC패턴의 구조를 학습해보자. 모델2 패턴은 사용자 요청사항마다 각각의 서블릿(서버에서 실행되는 서비스 객체)이 존재한다. 사용자의 요청사항에 100가지라고 한다면 100개의 서블릿이 존재해야 하는 비 효율적인 구조가 있을 수 있기 때문에 이를 보완하기 위해서 등장한 것이 MVC패턴이다. MVC패턴은 사용자의 요청 수와는 무관하게 하나의 컨트롤러(Front Controller)만 만들고, 이 컨트롤러가 요청사항을 제어한다. 여기서 말하는 컨트롤러가 Model2패턴에서의 서블릿이라고 생각하면 비교가 수월할 것이다. [ FrontController ] 사용자 요청 접수 사용자 요..

📑 Spring 학습_Day3_IoC_DI

기존 자바 코드에서 사용하던 객체 생성방법(main2)과 스프링에서 사용하는 객체 생성 방법(main)을 비교해보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package t_tok01; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main2(String[] args) { //기존 자바 코드 HelloWorld hello = new HelloWorld(); hello.setMsg("Hello W..

📑 Spring 학습 Day2_개발환경 구축

Java 설치 JDK 1.8설치 cmd창을 열고 java - version을 입력해보면 설치한 자바의 버전 정보를 확인할 수 있다. STS 설치(https://spring.io/tools) Eclipse + Spring Plugin IDE툴이란 통합 개발환경으로 코딩, 디버그, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경 스프링을 개발하기 위해서는 개발에 필요한 Spring plugin 설치 Eclipse이외의 tool에서도 가능하다. 본인의 OS에 맞는 IDE 버전을 설치 버전이 tools4로 업그레이드 되면서 .jar파일로 바뀌었는데 당황하지 말고 압축을 풀어준다. 그러면 contents.zip파일이 존재하는데 이 파일까지 압축을 풀어주면 실행파일이 나타난다. T..

📑 Spring 학습 Day1_개요 및 특징

[ Spring의 개요 및 특징 ] 스프링 프레임워크 (Spring FrameWork) 프레임 워크는 개발자가 맨 손으로 개발을 시작하지 않도록 기본적인 골조를 제공해주는 것이다. 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로 줄여서 스프링이라고 불린다. 애플리케이션 프레임워크 특정 계층이나, 기술, 업무 분야에 국한되지 않고 전 영역을 포괄하는 범용적인 프레임워크를 뜻한다. 경량급 프레임 워크 단순한 웹 컨테이너에서도 엔터프라이즈 개발의 고급기술을 대부분 사용할 수 있다. 이전 세대에서 사용하던 EJB를 주 프레임 워크로 사용할 때 불편했던 점들을 해소했다. 엔터프라이즈 개발에 용이 개발자가 복잡하고 실수하기 쉬운 low level에 대한 관심을 줄이고, 비즈니스 로직(실제 컨트롤러의 역할) 개..

📑 MyBatis_SubQuery_국비Day75

초기 프로젝트에 mybatis설정하는 순서 [복사해오는 경우 안 쓰는 내용을 수정하지 말고 모두 삭제해서 새로 만들자.] mybatis라이브러리 셋팅하기 (WEB-INF) context.xml파일 가져오기 (META-INF) sqlMapConfig.xml과 mapper파일 ~~.xml을 생성한다. (복사하는 경우 mapper파일의 명령은 모두 지우자.(에러가 발생할 가능성이 있음.)) MyBatisConnector 생성하기 -> SqlSessionFactory를 만들어 주는 객체 [ mybatis를 사용한 서브쿼리 구현하기 ] 1. dept_list가 호출되면, dept테이블에서 읽어온 deptno, dname, loc데이터를 dept_map으로 포장해서 반환한다. 2. 1에서 반환한 dept_map을 ..

📑 mybatis_검색기능_국비Day74

지난 시간에는 기존에 실습한 방명록 파일에 대한 DB접근을 mybatis ORM을 사용하도록 수정하는 작업을 거쳤다. 소스파일은 필자의 깃허브 주소에 있으니 내려받아서 DB접근을 mybatis로 수정하고, 검색기능을 추가하는 실습을 함께 따라해보면 좋을 것 같다. 소스코드는 여기에서 확인하길 바란다. [ visit_list.jsp ] 먼저, 모든 방명록을 한 곳에 리스트로 출력한 파일을 수정할 것이다. 이 부분에 검색을 할 수 있도록 ui를 다음과 같이 추가해주자. 어느 위치에 코드를 추가할지 인식할 수 있도록 하겠다. 15행에 value값으로 ${param.search_text}를 출력해주었는데, 이는 검색조건으로 자기 자신을 호출한 경우 정보 유지를 위해 사용한 것으로 자세한 설명은 밑에서 계속 하도..

📑 mybatis_국비Day73

지난 시간에는 JNDI를 사용한 mapping방법을 정리했다. 이 경우에는 DBCP에 대한 정보를 가지고 있는 JNDI방식이 context.xml파일에 정의된 내용을 기반으로 찾는 방식이므로 context.xml파일이 반드시 필요하다고 말을 했는데, 이 xml파일 없이도 mapping이 가능하다는 점을 오늘 배웠다. 후에 스프링을 배울때는 JNDI기법도 사용하긴 하지만 대부분 필자가 앞으로 사용하고자 하는 방식을 사용한다고 한다. 기본적으로 JNDI는 톰캣이 구동되면서 context.xml파일을 파싱하여 해당 환경 설정을 셋팅해주는 것인데 오늘 배운 POOLED방식을 사용하면 DBCP에 대한 정보를 입력해줌으로써 Mybatis가 직접 처리하도록 위임시키는 방법이다. 공유하는 소스코드에는 gogek.xml..

📑 ORM_DB프레임워크_국비_DAY72

ORM(Object Relationship Mapper) -> 데이터베이스 프레임워크를 통칭하는 말 DB와 객체를 연결시켜주는 프레임워크 (DB와 자바의 객체(Vo)와 자동으로 mapping 해주는 객체) DB Object처리하는 프레임워크 종류 Hibernate(ORM성격이 짙다. 객체의 속성명과 DB의 컬럼명을 일치시켜서 연결시켜놓는다.) : SQL 문장X 자바에서 지원하는 객체는 JPA가 있다. Mybatis(SQL Mapper) iBatis : 2.x에 대한 명칭 Mybatis: 3.x에 대한 명칭 sql문장으로 구성된 id를 이용해서 호출을 하면, SqlSession이 해당 sql명령을 처리해준다. [ MyBatis 작업 순서 ] 기존에 DB에 접근할때 사용했던 DBService를 사용하지 않고..

📑 XML_Naver검색API_국비DAY71

웹을 구현하는 프로그래밍 언어는 굉장히 다양하다. 하지만 프로그래밍 언어마다 사용하는 데이터 타입이 다르기 때문에 서로 다른 언어끼리는 직접적인 통신이 불가능하다. 그렇다면 어떤 방식으로 하나의 웹 서버에서 다른 언어로 구현한 데이터들을 송수신할 수 있을까? 이를 해결하기 위해 공통 DataType을 가지는 XML과 JSON이 존재한다. 서로 다른 언어들은 직접적으로 통신을 할 수는 없지만 아래 그림과 같이 공통 DataType인 XML과 JSON을 거치게 되면 서로 통신할 수 있도록 서비스를 제공한다. 오늘은 XML을 pharsing해보는 실습을 해보기 위해서 네이버에서 제공하는 검색 Open API를 사용해보겠다. [ Naver 검색 Open Api사용하기 ] 다음 사이트에 접속한다. https://..

📑 XML_국비_DAY70

XML(eXtensible Markup Language) 확장된 마크업 언어 사용자가 필요에 의해서 태그(Element)를 생성할 수 있다. 태그는 계층구조로 형성된다. DTD만 맞추어 두면, HTML과는 달리 사용자가 태그를 직접 만들어서 사용할 수 있다. DTD없이 XML을 정의해도 되지만, 데이터의 신뢰성이 떨어진다. 참고하는 형식 기준(DTD)없이 사용자가 임의로 태그를 추가해서 사용할 수 있기 때문이다. 반드시 DTD에서 정의한 형식으로 XML을 작성해야 한다. 하나의 xml문서 전체에서 root element는 반드시 1개만 존재해야 한다. 두 개 이상이 존재하면 오류난다. xml을 파싱하는 parser가 xml 전체 문서를 document라고 부른다. 파싱하는 순서는 반드시 정의된 순서대로 ..