WEB Application 29

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

웹 프로그래밍 (xml resultMap 사용법, has many, xml 매핑)

페이징 처리할때 PagingVO 만들어서 필요한 변수들 String- 컴파일 시점에 타입 체크 List와 같이 Generic - 실행(런타임) 시점에 타입 체크 = List여도 됨 관리자용 기능 - 회원 몇명인지 - 회원 정보 조회 total record 조회할 수 있는 메서드 이대로 xml 생성하는 이유: mapper proxy 사용하기 위하여 mapper namespace와 *** PagingVO 안에 getPagingHTML()이라는 메서드가 있음. 근데 pagingHTML이라는 변수는 해당 VO 안에 존재하지않음. 하지만 jsp에서 얠 불러 쓸 수 있다. 이유: Jackson Databind가 마샬링할때 자바빈 규약을 거꾸로 적용해 그 프로퍼티를 만들어내기 때문 마샬링만 해서 보내도될때랑 forw..

WEB Application 2020.09.22

20/09/18 웹 프로그래밍 (slf4j, 페이징 처리, DataTables)

오늘의 포스팅은 라이브러리 설치 및 응용 위주입니다~! SLF4J (Simple Logging Facade For Java)를 써봅시다 1. 일단 먼저 설치! 2. Pom.xml에 dependency 추가하고 만약 Log4j, SLF4j 2개라면 commons-logging에서는 exclude Maven artifact하기. Log4j, SLF4j 각각 하나씩 해서 리모컨(파사드) 2개 근데 둘 중 하나만 써야됨. 3. log4j2.xml 이라는 이름의 파일을 만들어 SLF4j 설정 - Appender: 어디에 출력할건지 (콘솔인지, 파일 내부인지 등등) 1. 인덱스 필요 2. 통계 필요 => JDBC appender를 사용해 log를 DB에 등록 가능 - Layout: 어떤 포맷? - Logger **..

WEB Application 2020.09.18

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/16 웹 프로그래밍 기초 (Annotation, constraints, jquery event propagation)

등록할때 검증할 데이터, 수정할때 검증할 데이터 서로 다를 수도 있음 e.g. 주민번호의 경우 등록만 가능, 수정 불가 => 그러면 business logic이 다르고 적용할 validation도 달라져야함 Marker Interface(메서드가없는 인터페이스): 마킹해주는 것. 그냥 얘가 이런애다~하고 표현해줌 e.g. serializable(Ctrl+Shift+T로 확인하쇼), payload '인서트그룹이라는 힌트'가 적용되있는 경우에만 검증하겠다! 제약조건 여러개가 모여 하나를 이루게 하기 docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-constraint-composition Hibernate Valida..

WEB Application 2020.09.16

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