목록분류 전체보기 (500)
공부한것들을 정리하는 블로그 입니다.
대문자로 검색할 것 select TABLE_NAME, COLUMN_NAME from ALL_TAB_COLUMNS where COLUMN_NAME='컬럼명'; select TABLE_NAME, COLUMN_NAME from ALL_TAB_COLUMNS where COLUMN_NAME LIKE '%컬럼명%';
getBoard.jsp - 글 상세 조회를 특정 유저만 조회 할 수 있도록 하는 기능은 추후 실습에서 다룰 예정 - 글 상세 조회시 조회수(Cnt)가 증가하는 기능은 추후 실습에서 다룰 예정 - 글 등록 클릭 시 insertBoard.jsp 로 이동 - 글 삭제 클릭 시 deleteBoard_proc.jsp 실행 후 getBoardList.jsp 로 이동 - 글 목록 클릭 시 getBoardList.jsp 로 이동 글 상세 log out 제목 작성자 내용 등록일 조회수 글 등록 글 삭제 글 목록
getBoardList.jsp - login_proc.jsp에서 받은 id를 이용해 상단에 이용자의 id를 출력합니다. ex) **님 환영합니다 - boardDAO.getBoardList()를 실행하여 boardList 에 데이터를 리턴받은 후(Controller), 해당 데이터를 화면에 출력한다(View). - 페이징은 나중에 추가 할 예정이며 관련 글은 그때 설명드리도록 하겠습니다. - 글 검색 기능은 post보다는 get 방식이 자주 보입니다.(get은 가져오는 것이고 post는 수행하는 것입니다) 글 목록 님 환영합니다....log out 제목 내용 번호 제목 작성자 등록일 조회수 새 글 등록 BoardDAO.java - 기존에 진행했던 실습예제에서 getBoardList() 메서드에 수정이 있었..
login.jsp - 화면 상단에 errMsg를 받아와서 이를 출력 ex) 로그인 실패시 errMsg 출력 -> 추후 exceptionResolver 또는 Spring Security로 대체 예정 - ssesion을 초기화 시켜주는 부분 추가 -> 추후 @RequestParam 또는 @Annotation으로 대체 예정 login_proc.jsp - 처음에는 login.jsp에서 request.setAttribute() 를 사용하여 id 혹은 errMsg를 넘기려고하였으나 login.jsp에서 Attribute가 null로 확인됨 - 확인해보니 현재 MVC의 Controller의 역할을 하는 login_proc.jsp에서 response.sendRedirect()를 이용하여 페이지를 전환하고 있는데, 이 ..
참고 : https://zorba91.tistory.com/entry/Eclipse-%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4%EC%97%90%EC%84%9C-class-%ED%8C%8C%EC%9D%BC-%EC%97%B4%EA%B8%B0Class-Decompile
보통은 이클립스의 프로젝트의 properties - resource 에서 text file encoding (utf-8) 을 이용하는데 아예 이클립스 자체의 설정파일인 eclipse.ini 파일에서 -Dfile.encoding=utf-8 를 추가해 줘도 된다. eclipse - windows - preferences - general - workspace - text file encoding 에서 (utf-8) 해도 된다. 단, 기존에 다른 설정으로 작성된 글자들이 깨져버릴 수 있으니 주의하자. 특히 이클립스내에 import하고있는 프로젝트가 여러개 있다면 영향도를 예상할 수 없기 때문에 더더욱 조심하자. 추가로 eclipse.ini 파일에서 -Xms256m -Xmx1024m 이 부분을 수정하면 이클립스..
1. 기존에는 2.5를 사용하던 서블릿 버전을(web.xml), 프로젝트 환경 셋팅중에 pom.xml 내에서 서블릿 버전을 3.1로 정의하게됨(web.xml을 직접 건드린게 아니라, app-web이나 app-orm 등 다른걸 건드리다가 상위버전으로 정의해버린듯..) 2. maven에서 3.1을 다운로드 받아버렸고 프로젝트 설정(properties - project facets - dynamic web module)이 자동으로 3.1로 수정됨 3. maven이 업데이트되고 나서 에러( Cannot change version of project facet Dynamic Web Module to 2.5 )가 출력됨. 당연한 말이지만 프로젝트 run도 안됨.. 4. web.xml 상단을 3.1로 수정해주고나서 ..
https://www.findjar.com/class/org/springframework/web/util/Log4jConfigListener.html
MV패턴에 대해서는 생략하고 바로 진행하도록 하겠습니다. (MV패턴은 구글링하면 좋은 자료가 많습니다) 기능(서비스로직 구현) - 로그인 login.jsp, login_proc.jsp - 로그아웃 logout_proc.jsp - 글 목록 조회 getBoardList.jsp - 글 상세 조회 getBoard.jsp - 글 입력 insert.jsp, insert_proc.jsp - 글 수정 update.jsp, update_proc.jsp - 글 삭제 delete_proc.jsp 흐름 (request) ↓ login.jsp view ↓ 로그인 login_proc.jsp controller ↓ getBoardList.jsp v+c ↓ getBoard.jsp v+c ↓ insert.jsp v ↓ insert_p..
스프링에서는 트랜잭션 관련 설정을 앞에서 살펴본 AOP로 처리합니다. 그리고 추가로 트랜잭션을 제어하는 어드바이스를 설정하기 위해 스프링 설정 파일에 트랜잭션 관련 네임스페이스도 추가해야 합니다. 1. 트랜잭션 네임스페이스 등록 : Namespace에서 tx를 추가 2. 트랜잭션 관리자 등록 : 스프링 설정 파일에 DataSourceTransactionManager 클래스를 등록합니다. 이는 현재 우리가 가지고 잇는 두 개의 DAO 클래스가 모두 JDBC를 기반으로 동작하기 때문이데, 스프링은 어떤 기술을 이용하여 데이터베이스 연동을 처리햇느냐에 따라 트랜잭션 관리자가 달라집니다. 추후 Mybatis나 JPA를 이용하여 DAO 클래스를 추가로 구현 할 것이고, 당연히 그때 트랜잭션 관리자를 변경하게 될 ..
스프링 JDBC를 이용하기 위한 모든 설정이 마무리됐으면, 이제 JdbcTemplate 객체를 이용하여 DAO 클래스만 구현하면 됩니다. 그런데 DAO 클래스에서 JdbcTemplate 객체를 얻는 방법은 두가지 입니다. 1번째 방법. JdbcDaoSupprot 클래스를 상속하는 방법 2번째 방법. JdbcTemplate 클래스를 등록하고, 의존성 주입으로 처리 1번째 방법. JdbcDaoSupprot 클래스를 상속하는 방법 참고로 @Autowired 어노테이션은 주로 변수 위에 선언하는데 메소드 위에 선언해도 동작합니다. 메소드 위에 @Autowired를 붙이면 해당 메소드를 스프링 컨테이너가 자동으로 호출해주며, 이때 메소드 매개변수 타입을 확인하고 해당 타입의 객체가 메모리에 존재하면 그 객체를 인..
스프링 JDBC를 이용하면 DB연동에 필요한 자바코드를 스프링에서 대신 처리해주고, 개발자는 실행되는 SQL 구문만 관리할 수 있기 때문에 개발과 유지보수가 훨씬 편해질 수 있습니다. 스프링은 JDBC 기반의 DB연동 프로그램을 쉽게 개발할 수 있도록 JdbcTemplate클래스를 지원합니다. 1. 라이브러리 추가 2. DataSouce 설정 추가 기왕 만들거 프로퍼티 파일을 활용하도록 작성합니다. 스프링 JDBC를 위한 기본설정이 마무리됐으면 이제 JdbcTemplate 객체를 이용하여 DB연동을 간단하게 처리할 수 있습니다. queryForObject() 메소드는 SELECT 구문의 실행 결과를 특정 자바 객체로 매핑하여 리턴받을 때 사용합니다. 참고로 queryForObject() 메소드는검색결과가..
보호되어 있는 글입니다.
log4j.xml 파일의 하단에 위차한 root logger를 수정하면 로그레벨 등을 변경가능합니다. 가령 priority value를 trace로 수정하면, warn으로 설정하였을 때보다 더 많은 로그가 찍힌다(대부분 시스템 로그) ( 참고 : https://cofs.tistory.com/354 ) 또한 로그의 패턴도 수정이 가능합니다. web.xml에 log4j 관련부분 추가 web.xml에 log4j 관련부분은 따로 셋팅 할 필요없음(spring version 올라가면서 해당 클래스가 사라지고 통합됨) log4j.xml에서 셋팅 프로젝트를 실행해보면 지정해준 경로에 log파일과 로그 내역이 쌓이는 것을 확인 할 수 있습니다. 쓸데없는 로그가 너무 쌓여도 곤란하니 log4j.xml의 설정을 바꾸고 마..
이번 글에서는 LogAdvice를 Log4Advice로 교체해보도록 하겠습니다. 스프링 aop의 관심분리 덕분에, 횡단관심에 해당하는 log 파일 교체시에 핵심 관심인 BoardServiceImpl 등을 수정하지 않아도 됩니다. 1. applicationContext.xml에서 bean을 수정해준다 ( LogAdvice.java -> Log4Advice.java ) 2. applicationContext.xml을 AOP의 pointcut 엘리먼트를 활용하는 방법으로 수정하여 보자 ( pointcut 엘리먼트 실습 ) 3. AOP의 pointcut을 Spring에서 제공하는 annotation으로 작동하도록 수정해보자( XML설정 -> Annotation설정 ) 1. applicationContext.xm..
프로젝트 진행중에 Socket read interrupted, Authentication lapse 0 ms 에러가 발생하였습니다. 자세한 내용 및 해결방법은 본인의 다른 글(아래 링크)을 참고 바랍니다. https://drsggg.tistory.com/191 oracle error 해결 : Socket read interrupted, Authentication lapse 0 ms. 시간 흐름순으로 진행. 1. 프로젝트 실습중에 JDBC를 통한 oracle 접속에서 timeout 문제가 발생함 2. oracle sql developer를 통해 접속을 시도해 보았으나, 해당 계젱에서 timeout이 발생함. *당시에 출력된 에.. drsggg.tistory.com
oracle error : Socket read interrupted, Authentication lapse 0 ms. 또는 Eclipse Tomcat error : server ports required by tomcat are already in use Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. 시간 흐름순으로 진행. *참고 oracle sql developer에서 출력 확인한 에러 상태: 실패-테스트 실패: IO 오류: Socket read interrupted, Authentication lapse 0 ms. 1. 프로젝트 실습중에 JDBC를 통한 oracle 접속에서..
비즈니스 컴포넌트 개발에서 가장 중요한 두 가지 원칙은 낮은 결합도와 높은 응집도를 유지하는 것입니다. 스프링의 의존성 주입(Dependency Injection)을 이용하면 비즈니스 컴포넌트를 구성하는 객체들의 결합도를 떨어뜨릴 수 있어서 의존관계를 쉽게 변경할 수 있습니다. 스프링의 IoC가 결합도와 관련된 기능이라면, AOP(Aspect Oriented Programming)는 응집도와 관련된 기능이라 할 수 있습니다. AOP는 관심분리를 통해 메소드마다 공통으로 등장하는 로깅이나 예외, 트랜잭션 처리 같은 횡단 관심에 해당하는 공통 코드를 독립적인 모듈로 분리해냄으로써 코드 분석과 유지보수를 쉽게 만들어줍니다. 관심분리 = 횡단관심 + 핵심관심 핵심관심 : 사용자의 요청에 따라 실제로 수행되는 핵..
지난 글에서 board 테이블 관련 비즈니스 컴포넌트를 추가했었다. 이번에는 users 테이블 관련 비즈니스 컴포넌트를 추가해보겠다. UserServiceClient 와 applicationContext.xml 외에는 전부 파일첨부로 넘어가겠다. package com.springbook.biz.user; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; import org.springframework.stereotype.Service; public class UserServiceClient { pub..
이번 글에서는 일반적으로 프로젝트에서 사용하는 구조로 비즈니스 컴포넌트를 구현하는 실습을 진행해보도록 하겠습니다. 1. BoardWeb 프로젝트의 설정파일 applicationContext.xml 수정 2. JDBC 드라이브 추가 및 maven 수정 + Marker탭에서 Problem 출력 해결 3. JDBCUtil, BoardVO, BoardDAO, BoardService, BoardServiceImpl,BoardServiceClient, BoardListVO 추가 1. BoardWeb 프로젝트의 설정파일 applicationContext.xml 수정 (*2020.01.03 : 오랜만에 와봤는데 코드블럭 내의 소스코드가 깨져있네요.. 티스토리 개편되면서 날라갔나봅니다. 정확히 기억이 안나는 관계로 우선..