회사는 정말 싫어욧

application.properties 파일에 DB 연결정보 입력


기본정보에 사용하고자 하는 DB에 따라 URL과 Driver Class Name 입력하는 부분만 달라진다

URL에 있는 파란색 부분은 실제 접속하고자 하는 주소이므로 똑같은 Local이라도 db쪽 이름? 그게 다르면 밑에 있는 내용하고 똑같지 않을 수도 있다



#DB Connect (기본 정보)

spring.datasource.driver-class-name= #입력

spring.datasource.url= #입력

spring.datasource.username= #입력

spring.datasource.password= #입력




#MySQL (MySQL 사용 시 driver/url)

spring.datasource.driver-class-name= com.mysql.jdbc.Driver

spring.datasource.url= jdbc:mysql://localhost:3306/text



#Oracle (Oracle 사용 시 driver/url)

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:xe


**Oracle로 하면 ojdbc 문제가 많다 ojdbc 해결 못하면 아래의 정보를 pom.xml에 입력

.......

dependency

.......


<dependency>

<groupId>com.oracle</groupId>

<artifactId>ojdbc7</artifactId>

<version>12.1.0.2</version>

</dependency>

</dependencies>

<repositories>

<repository>

<id>oracle</id>

<name>ORACLE JDBC Repository</name>

<url>http://maven.jahia.org/maven2</url>

</repository>

</repositories>




#H2 (H2 사용 시 driver/url)

spring.datasource.driver-class-name=org.h2.Driver

spring.datasource.url=jdbc:h2:mem:test

main이 있는 클래스에

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

어노테이션 추가


기본 Demo로 만들었을 경우 아래와 같음


@SpringBootApplication

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

public class DemoApplication {


public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

}


실행했을때 static/index.html을 실행하므로 index.html파일을 만들어줘야한다

인터넷 검색해보면 Dashboard에서 gradle을 설치하던데 나는 거기서 자꾸 오류가 뜨네


그래서 market에 들어가서 gradle로 검색해서 다운받았는데 다행히 실행이 된다

아주 심플하게 로컬에서 연습할 때 쓸 아이디 만드는 방법


CREATE USER 아이디 IDENTIFIED BY 비밀번호;

GRANT CONNECT, dba, resource TO 아이디;


모든 권한 다 주는 거라 연습용으로만 쓰길 권장

스프링부트를 해본적이 없어서 이거 해결한다고 개고생했는데 해결되서 너무 다행이다 ㅠㅠㅠㅠㅠㅠ

어디에 파일을 만드느냐가 매우매우 중요하므로 주의 또 주의하자..

컨트롤러나 화면 표시될 jsp는 이미 만들어져있다고 가정하고


데코레이터만 만들어서 사이트메쉬 적용하는걸 설명해보겠습니당


1. pom.xml에 sitemesh 추가


<!-- Sitemesh3 -->


<dependency>

<groupId>org.sitemesh</groupId>

<artifactId>sitemesh</artifactId>

<version>3.0.1</version>

</dependency>


2. src/main/webapp/WEB-INF/**에 decorator파일 생성 (deco기본에 적용되었는지 확인을 위해 div하나만 추가함)

저는 src/main/webapp/WEB-INF/decorator/maindeco.jsp 파일을 만듬

decorator폴더를 만들어서 넣은 이유는 deco를 권한별로 만들 수도 있으므로(admindeco, userdeco.. 등)


<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="EUC-KR">

<title><sitemesh:write property='title' /></title>

<sitemesh:write property='head' />

</head>

<body>

<div>HIHI 저는 데코입니당</div>


<sitemesh:write property='body' />

</body>

</html>


div는 데코 적용되었는지 구분하기 위해서 추가

sitemesh:write property는 title, head, body가 있는데 데코씌울 페이지의 title, head, body를 각각 해당 위치로 넣어주는거고

이부분은 sitemesh3 써본분들은 아실테니 자세한 설명은 생략합니당 모르시는분은 댓글로 써주시면 답변남겨드릴게요





3. src/main/java/**에 클래스 생성 (/**는 하위 디렉토리 있어도 상관없음)


import org.sitemesh.builder.SiteMeshFilterBuilder;

import org.sitemesh.config.ConfigurableSiteMeshFilter;


public class SitemeshFilter extends ConfigurableSiteMeshFilter {



@Override

protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {

builder.addDecoratorPath("/*", "/WEB-INF/decorator/maindeco.jsp");

}


}


이부분이 매우매우 중요****

앞에 /*는 모든 경로를 의미 /WEB-INF/decorator/maindeco.jsp는 2번에서 만든 decorator파일경로입니다

만약 본인이 WEB-INF밑에 바로 decorator파일을 만들었으면 /WEB-INF/maindeco.jsp 이렇게 써야함


1번째 매개변수 : 주소 (보통 controller의 requestMapping의 value값)

2번째 매개변수 : decorator 파일 경로



4. src/main/java/**에 클래스 생성


import org.springframework.boot.web.servlet.FilterRegistrationBean;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;


@Configuration

public class ServletFilterConfig {

@Bean

public FilterRegistrationBean siteMeshFilter() {

FilterRegistrationBean filter = new FilterRegistrationBean();

filter.setFilter(new SitemeshFilter()); //2번에서 만든 클래스 이름으로 사용


return filter;

}

}



실행해보면 페이지에 HIHI 저는 데코입니당이 추가로 보이게 됩니다



여기 있는 버전 꼭 맞추기

@RequestMapping(value="home")

public String home(){


return "home";

}


이거는 home.jsp를 실행하라는 의미



@RequestMapping(value="another")

public String another(){


return "redirect:/home";

}


이거는 RequestMapping에 value가 "home"인 걸 실행하라는 의미

<!-- data-options=onSelect:function(node){//버튼 별 클릭했을 때 node 정보 확인가능} -->

매개변수 구분

변수 : @RequestParam(value="current",required=false)Integer currentPage

객체 : @ModelAttribute BoardDTO dto

${pageContext,request.contextPath}/resources/../..



* 절대경로부터 시작할 때 이렇게 쓰는게 좋다