JAVA
-
[spring] 의존성 주입(DI)JAVA 2021. 8. 13. 09:47
1. 의존성 주입(Dependency Injection)의 개념과 필요성 [ 의존성 주입(Dependency Injection) 이란? ] Spring 프레임워크는 3가지 핵심 프로그래밍 모델을 지원하고 있는데, 그 중 하나가 의존성 주입(Dependency Injection, DI) 이다. DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 다이나믹하게 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다. [ 의존성 주입(Dependency Injection)이 필요한 이유 ] 예를 들어 연필이라는 상품과 1개의 연필을 판..
-
[java] JSP, Servlet 의 기본 개념 및 MVC모델JAVA 2021. 8. 12. 17:22
Servlet(서블릿) 확장자가 .java인 파일 자바의 일반적인 클래스와 동일한 개념 웹을 다룰 수 있도록 해주는 "HttpServlet" 클래스를 상속받은 클래스를 의미함 서블릿(servlet)은 서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램이다. servlet은 Java코드 안에 HTML태그가 삽입되며 자바언어로 되어있다. .java가 확장자이다. 서블릿의 단어는 Server + Let의 합성어라고 알고 있는 사람도 있고 Server + Applet으로 알고 있는 사람도 있다. 사실 둘다 어려운 느낌이다. 하지만 쉽게 풀어보면 '클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 servlet 클래스의 구현 규칙을 지킨 자바프로그램'이라..
-
[spring] CharacterEncodingFilterJAVA 2021. 8. 12. 15:51
characterEncodingFilter.java 파일 입니다. protected void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String encoding = getEncoding(); if (encoding != null) { if (isForceRequestEncoding() || request.getCharacterEncoding() == null) { request.setCharacterEncoding(encoding); } if (isForceResponseEncoding()) { ..
-
[mybatis] 스코프와 생명주기JAVA 2021. 8. 12. 11:27
스코프(Scope) 와 생명주기(Lifecycle) 이제부터 다룰 스코프와 생명주기에 대해서 이해하는 것은 매우 중요하다. 스코프와 생명주기를 잘못 사용하는 것은 다양한 동시성 문제를 야기할 수 있다. 참고 객체 생명주기와 의존성 삽입 프레임워크 의존성 삽입 프레임워크는 쓰레드에 안전하도록 해준다. 트랜잭션 성질을 가지는 SqlSessions과 매퍼들 그리고 그것들을 직접 빈에 삽입하면 생명주기에 대해 기억하지 않아도 되게 해준다. DI프레임워크와 마이바티스를 사용하기 위해 좀더 많은 정보를 보기 위해서는 MyBatis-Spring이나 MyBatis-Guice 하위 프로젝트를 찾아보면 된다. SqlSessionFactoryBuilder 이 클래스는 인스턴스화되어 사용되고 던져질 수 있다. SqlSessi..
-
[mybatis] Mapper xml의 쿼리문과 매핑 원리JAVA 2021. 8. 12. 11:12
아래와 같은 Mapper xml의 쿼리 문이 있다고 할 경우, insert into tbl_member (userid, userpw, username, email) values (#{userid}, #{userpw}, #{username}, #{email}) VO 객체는 다음과 같고, public class MemberVO { private String userid; private String userpw; private String username; private String email; private Date regdate; private Date updatedate; ... 이하 getter, setter는 생략 ... } DAO에서 Mapper xml에 있는 쿼리 실행을 다음과 같이 한다고 할때,..
-
[java] 디자인패턴 - AdapterJAVA 2021. 8. 11. 23:59
Adapter 정의 어댑터 패턴은 이름대로 어댑터처럼 사용되는 패턴이다. 220V 를 사용하는 한국에서 쓰던 기기들을, 어댑터를 사용하면 110V 를 쓰는곳에 가서도 그대로 쓸 수 있다. 이처럼, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해주는 패턴이 어댑터 패턴이라고 할 수 있겠다. Client 써드파티 라이브러리나 외부시스템을 사용하려는 쪽이다. Adaptee 써드파티 라이브러리나 외부시스템을 의미한다. Target Interface Adapter 가 구현(implements) 하는 인터페이스이다. 클라이언트는 Target Interface 를 통해 Adaptee 인 써드파티 라이브러리를 사용하게 된다. Adapter Client 와 Adaptee 중간에서 호환..
-
[mybatis] Persistence FrameworkJAVA 2021. 8. 11. 23:22
퍼시스턴스(persistence)는 영속성이란 뜻으로 영어단어 뜻처럼 지속됨 이라는 뜻이다. 데이터를 생성한 프로그램의 실행이 종료되도 사라지지않는 데이터의 특성을 의미한다. 영속성을 가지지 않는 데이터는 단지 메모리에 존재해 프로그램이 종료되면 없어진다. 데이터가 영속성을 가지려면 파일 시스템, 데이터베이스를 활용해 구현하면 된다. 퍼시스턴스 프레임워크(Persistence Framework)는 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들의 집합이고 간단한 작업으로 데이터베이스와 연동되는 시스템을 개발하고 안정적인 구동을 보장하므로 JDBC프로그래밍의 복잡함과 번거로움을 해소해줄 수 있다. · 종류 - SQL문장으로 직접 DB데이터를 다루는 SQL Mapper - 자바 객체를 통..
-
jsp:액션태그,우편번호APIJAVA 2021. 8. 10. 23:23
JSP 액션태그 1. 처리 흐름이 외부 파일로 이동하였다가 다시 온다. ( 현재페이지에 설정페이지가 화면에 나온다. ) 데이터 전달: request 객체, param 액션 태그로 화면 레이아웃의 일 부분 모듈화시 용이. 2. 설정 페이지로 프로그램 제어가 이동 ( 주소창은 현재 페이지이지만 설정 페이지가 화면에 나온다. ) request 의 forward(request,response) 와 같다. 3. include, forward 액션 태그 안에서 사용. request.setParameter("매개변수명") 과 같다. include, forward 의 설정페이지에서 getParameter() 해서 value 를 얻어내거나 jstl 인 ${} 로 바로 가져올 수 있다. 단 ${} 는 setAttrib..