스프링을 위한 프로그램 설치 처음부터 끝까지
jdk 설치
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
jdk-8u201-windows-x64.exe
다운로드
설치 경로는 util_zip로 통일
java_home 환경변수 설정
제어판 시스템 및 보안 시스템 고급 시스템 설정
시스템 속성 창의 고급 탭 클릭한 뒤 환경변수 버튼 클릭
새로만들기 버튼 클릭하여 새사용자변수 창을 실행한 뒤
java_home 환경변수 이름과 값을 입력하고 확인을 누른다
환경변수의 사용자 변수에 java_home 환경변수가 추가되었다면 확인 버튼을 눌러 환경변수 설정을 완료한다
환경변수는 jdk 설치경로를 지정한다.
이클립스 가
웹개발을 위해서는 elipse ide for java ee developer 배포판을 다운로드
https://www.eclipse.org/downloads/packages/
다운로드
설치경로 통일.
이클립스 홈 디렉터리 eclipse.ini라는 환경파일에 -vmargs 옵션 위에 -vm을 추가하고 jdk가 가진 javaw.exe 파일의 정확한 위치를 지정
ex)-vm
c: ~~
톰캣 서버 설치 8.5
이클립스 서버 등록
오라클 다운로드
오라클 포트 변경
sts 플러그인 설치
utf-8 설정
스프링 기반의 웹프로젝트 생성
스프링 레거시 프로젝트 선택 후
템플릿은 스프링 mvc 프로젝트 선택
최상위 패키지 지정(경로에 최소 세개 이상의 패키지 지정)
ex)com.springbook.biz
프로젝트 설정 변경
변경하고자 하는 프로젝트를 오른쪽 클릭 하여 프로퍼티스 선택
왼쪽에 프로젝트 facets를 선택하고 자바 버젼을 설치한 버젼에 맞게 변경
오른쪽에 런타입 탭을 선택하고 아파치 톰캣 버젼을 체크한 후에 적용
자바빌드패스 라이브러리 탭에서 경로 확인해서 변경 적용 여부 확인
파일 정리
src/main/resources 소스 폴더에 log4j.xml 파일을 제외한 나머지 삭제
src/main/webapp/WEB-INF/web.xml 파일에서 <web-app> 루트 엘리먼트를 제외한 나머지 설정 모두 삭제 후 저장
porm.xml 파일의 스프링 버젼을 최신화
ex)
<properties>
<java-version>1.6</java-version>
<org.springframework-version>5.1.5.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
참고 - https://javacpro.tistory.com/56
컨트롤러 서블릿 생성 방법!
new servlet 패키지와 클래스네임을 등록해주고
넥스트 후 url매핑 설정
ex)name = action, url mappings /action 더블 클릭 후 *.do로 설정
web.xml 관련 설정 자동 추가
ex)
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>com.springbook.view.controller.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
모든 do 요청을 디스패처서블릿이 클래스의 객체가 처리한다는 설정
스프링 mvc 적용
web.xml 파일에 등록된 디스패처 클래스를 스프링 프레임워크에서 제공하는 디스패처로 변경
스프링 컨테이너 및 설정 파일
src/main/resources 오른쪽 클릭 new - other - 스프링 빈 콘피규어레이션 파일
이름은 appplicationContext (스프링(xml) 설정파일 생성)
설정파일을 로딩할경우에 컨테이너가 구동되며
<bean> 등록된 클래스들을 객체 생성하는 즉시로딩방식이다
ApplicationContext 가 스프링이 제공하는 컨테이너이다
구현클래스는 제너릭xml어플리케이션콘텍스트와
xml웹어플리케이션콘텍스트
스프링 설정파일 이름이 무엇이든 <beans>를 루트엘리먼트로 사용하며
엘리먼트 시작태그에 네임스페이스를 비롯한 xml 스키마 관련정보가 설정된다
sts를 이용해 만든 스프링 설정파일에는 beans 네임스페이스가 디폴트로 선언되어있으며, spring-beans.xsd 스키마 문서가 스키마로케이션으로 등록되어 있기에
<bean>과 <import>가 사용가능
<import>엘리먼트 태그를 사용하여 다른 스프링 설정 파일을 포함함으로써 한 파일에 작성하는것과 같은 효과를 낼 수 있음
<bean>엘리먼트 태그에는 클래스를 등록 할 수 있다.
id와 클래스 속성을 주어야함
어노테이션을 기반으로한 di
스프링설정파일에 context관련 네임스페이스와 스키마문서의 위치를 등록해야한다
p넴이스페이스이도 추가해놓자
컴포넌트스캔 설정
스프링 설정파일에 애플리케이션에서 사용할 객체들을 <bean> 등록하지 않고
자동으로 생성하려면 <context:component-scan/> 엘리먼트를 지정해야함
이 설정을 추가하면 스프링 컨테이너는 클래스패스에 있는 클래스들을 스캔하여
@Component가 설정된 클래스들을 자동으로 객체 생성
ex)<context:component-scan base-package="com.~~~~.~~~"></context:component-scan>
경로에 있는 스캔
사용하고자 하는 클래스위에 @Component("아이디(이름)")
메모리에 생성된 클래스의 객체를 생성하기 위해서 아이디를 지정
지정 안해줄경우에는 자동으로 이름이 설정 ex)LgTV -> lgTV
자주변하는 객체는 xml설정 변경되지 않는 객체는 어노테이션
허나 라이브러리 형태로 제공되는 클래스는 반드시 xml 설정을 통해서만 사용 가능
보드 테이블 생성
create table board(
seq number(5) primary key,
title varchar2(200),
writer varchar2(20),
content varchar2(2000),
regdate date default sysdate,
cnt number(5) default 0
);
보드vo 작성
테이블 컬럼과 동일한 이름의 private 멤버변수 선언
그 변수에 게터세터 선언
오라클 jdbc mybatis 연동
https://offbyone.tistory.com/18
https://pjsprogram.tistory.com/2
ex)
<repositories>
<repository>
<id>oracle</id>
<name>ORACLE JDBC Repository</name>
<url>http://repo.spring.io/plugins-release/</url>
</repository>
</repositories>
<dependencies>
<!-- spring jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<!-- DBCP 등록 설정 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- 오라클 JDBC 라이브러리 등록 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<!-- MyBatis 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- 마이바티스와 스프링 연동을 위한 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
applicationContext.xml 수정
dao 작성
@resp~
@auto~
mybatis
서비스 작성(alt shift t)
dao에 implements 삭제
서비스 구현 클래스 작성
@ser~
@auro
BoardDAO
트랜잭션 처리
스프링 설정 파일에
<!--트랜잭션 설정-->
<bean id="txmanager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="txmanager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="txPointcut" expression="execution(* com.springbook.biz..*(..))"/>
<aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/>
</aop:config>
porm.xml에 aop 라이브러리 추가
<!-- AOP 라이브러리 추가 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.8</version>
</dependency>
스프링 버젼 같게 해야함
<properties>
<java-version>1.6</java-version>
<org.springframework-version>5.1.5.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<dependencies>
<!-- spring jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
vo, dao가 모델기능의 자바객체이다
url 정보 수정
수정 전 프로젝트 이름 대신 biz가 컨텍스트 경로로 출력되어 있음
ex) http://localhost:8080/biz/login.jsp
->
http://localhost:8080/BoardWeb/login.jsp
서버 프로젝트에 server.xml 파일 수정
ex)<Context docBase="BoardWeb" path="/BoardWeb" reloadable="true" source="org.eclipse.jst.jee.server:BoardWeb"/></Host>
글 목록 검색 기능 구현
오라클 포트 변경
https://m.blog.naver.com/PostView.nhn?blogId=jeweltot&logNo=100138298543&proxyReferer=https%3A%2F%2Fwww.google.com%2F