Java 17

자바 Tiles 프레임워크 사용법과 특징

Tiles: view 단에서 페이지를 모듈화하는 과정에서 사용되는 프레임워크 - 원래는 InternalResouceViewResolver 만 썼었는데, Tiles를 사용하면 viewResolver를 여러개 쓸 수 있다. - Tiles는 Composite View Pattern을 사용한다. 1. tiles template 만들기 (design 을 갖고 있는 jsp) 2. insertAttribute . 그 세부 jsp들을 타일처럼 꽂아 넣어 3. definition이 최종적으로 뷰가 됨. xml에서 definition 만든다 http://tiles.apache.org/dtds/tiles-config_3_0.dtd preferences-> xml catalog에 이거 추가하삼 수정 전: ViewResolve..

WEB Application 2020.10.12

TIL 웹 프로그래밍 (Filter, Wrapper, JAVA 파일 업로드)

- 필터 체인 통과 -> FileUploadRequestWrapper덕에 원본 요청이 바뀜. -> PartWrapper로 파트 나누고 wrapping -> Front Controller에서는 req가 FileUploadRequestWrapper 가 되어 들어옴. 그안에는 partWrapperMap이 들어있음 -> HandlerInvoker -> FileUploadController - FileUploadCheckFilter: Request header에서 MIME에 multipart가 있는지 체크하는 필터. - 파라미터 대신 multipart로 되어있으면 part API 써야하는데 얘 어려우니 Part Wrapper를 쓰자. CommandHandler 만들 때 중요한 점 1. 필요한건 invoker로부터..

WEB Application 2020.09.26

TIL 웹 프로그래밍 (인증 / 인가 처리, 자바로 웹 파일 업로드 )

순서: Authentication -> Authorization 인가 처리, 인증 처리를 해서 접근 제어를 해줘야한다. 의도적으로 주소를 입력해 접속하는 것도 제어해야함. => 모든 요청에 대해 보안 처리를 하려면 Front Controller 앞에서 해줘야함. D.F.P(Decorating Filter Pattern) 을 사용한다. - Decorating 패턴 : 비즈니스 로직은 아니지만 부가적으로 추가하고 싶을 때 사용 - Filter: HTTP 요청과 응답을 변경할 수 있는 재사용 가능한 객체 변경? 원본에서 Wrapper 로 감싸진다. - 용도: 사용자 인증이나 권한 체크, request의 전처리와 response의 후처리를 담당하는 역할함 Filter Chain: 필터가 여러개일 때 Filter..

WEB Application 2020.09.24

웹 프로그래밍 (front controller 패턴에 resolvers 더하기)

www.notion.so/techsignal/resolver-a0d7c594c3d74a79941a4d6113887490 여러분 그거 아시나요? 웹으로 접속하셔서 링크에 커서를 갖다대면 무슨 일이 일어나는지???!?!?!!? resolver Resolvers: www.notion.so 클릭 클릭! ReqParam 어노테이션을 사용하면 해당 컨트롤러 코드 내에서 req.getParameter()를 할 필요가 없어진다. T 타입 사용하기 상세검색을 하고 싶은데 어떤 타입으로 지정해야할지 모르겠다??? 1. 일단 PagingVO에선 T타입으로 선언해둔다 2. 그 안에 들어갈 변수가 뭐뭐 있는지 봄 3. prod_lgu, prod_buyer, prod_name... ProdVO의 변수들이다?! ->컨트롤러에서 P..

WEB Application 2020.09.23

웹 프로그래밍 (xml 주의할 점, front controller 패턴 )

public int createProd(ProdVO prod); Service에서 리턴타입을 int로 하면 식별성 없음. (dao에선 가공을 못하므로 int로 할 수 밖에 없음) insert, update할 때 null허용일 때는 JDBCType 꼭~! DATE -> jdbcType=DATE CLOB -> jdbcType=VARCHAR NUMBER -> jdbcType=NUMERIC 컨트롤러에서 항상 반복되는 코드들 처음에 req.setCharacterEncoding("UTF-8"); 마지막에 req.getRequestDispatcher(goPage).forward(req, resp); Front Controller 들이 할 일 - 각 커맨드(URI에 연결되어있음)를 처리할 수 있는 백엔드 컨트롤러 목록..

WEB Application 2020.09.22

20/09/17 웹 프로그래밍 기초 (프레임워크, iBatis, MyBatis )

Java: OOPL DB: RDBMS 데이터를 표현하는 방식이 다름 객체 튜플, 릴레이션 프레임워크의 사용방법에 집중하기보다 동작구조의 원리를 보아야함 프레임워크: 미리 짜놓은 코드의 집합 =>프레임워크: IoC(Inversion of Control)됨, DI(Dependency Injection)패턴을 따르게 됨. Control권한이 역전되어 이제 개발자는 프레임워크를 따라야함 프레임워크와 라이브러리의 차이: Control이 inversion됐냐 안됐냐. e.g. common-lang3(라이브러리) 쓸때 우리는 우리 맘대로 했는데 iBatis의 구조는 개발자가 따라야만 함. 1. SQLMapper로서의 역할 - 커넥션과 쿼리객체를 대신 생성. (ibatis: #인라인파라미터# 를 pstmt의 ?로 바꾼..

WEB Application 2020.09.17

20/09/15 웹 프로그래밍 기초 (Reflection, 이클립스 정규표현식 대체, annotation)

우리가 지금까지 작성한 소스에 든 전역변수 commons beanutils 1.9.4 **Options에 Regular Expressions가 꼭 체크 되어있어야함** 영문자 \w 한개이상 + 그룹핑 () $1 * 0번 이상 반복 . 모든 타입의 글자 상관없이 한문자 [.\s] s는 스페이스 등등~~~ Replace with 부분에서 $1 : 위에서 첫번째 그룹( ) 반복할 것 없이 선택 가능 ajax에서 url, data, method는 요청과 관련되어 있고, dataType, success, error는 응답과 관련되어있다. 마샬링, 직렬화했을 때는 forward로 따로 보내줄 필요가 없다. writeValue()로 이미 응답 데이터가 나갔기 때문에 (=버퍼가 방출됨) forward 등을 해줄 수 없..

WEB Application 2020.09.15

20/09/14 웹 프로그래밍 (db properties 연결, DBCP)

수정사항에 유연한 대처가능 의존객체 생성 과정을 캡슐화(숨김) 가능 롬복: 플러그인 형태로 jar 설치해주는 것 중요! (관리자 버전으로 cmd쓰고,,, ..) www.kisa.or.kr/public/laws/laws3_View.jsp?cPage=6&mode=view&p_No=259&b_No=259&d_No=55&ST=T&SV= 기술안내서 가이드 < 관련법령·기술안내서 < 자료실 : 한국인터넷진흥원 기술안내서 가이드 기술안내서 가이드 상세보기 제목 JAVA 시큐어코딩 가이드 담당자 전자정부보호팀 박양환 전화 061-820-1652 이메일 등록일 2016-03-18 조회수 60706 첨부파일 코딩가이드(Java)_V1.2 www.kisa.or.kr SQL Injection: '3333' or '1'='1 ..

WEB Application 2020.09.14

20/09/10 웹 프로그래밍 기초 (layered architecture, trigger(), 메이븐 설치)

layered architecture Architecture Diagram 손님 들어옴 -> 웨이터 만남(컨트롤러) -> 주문 (요청 받아 요청 분석) -> 셰프에게 전달(로직을 갖고있는 객체, business logic Object=service) => Persistence layer가 db에서 raw data 가져옴(=dao) => service가 가공 => controller(웨이터)가 받음 -> VO로 통에 담음 (=DTO, java bean )-> controller한테 돌려줌 -> 컨트롤러가 받아서 view로 보냄 -> view에서 예쁘게 꾸밈 (UI 구성) -> 손님한테 감 => 전달 구조 (각 layer로 나눠져있음) raw data 가져올떄 그걸 담을 통:VO dao는 순수하게 데이터만 ..

WEB Application 2020.09.11