4.1.0버전
eclipse + sts4 + 한국형 플러그인
지금 application.properties는 평문으로 되어 있지만, 암호화될 수 있다.
# 포트변경시
# server.port=80
포트를 주석처리해서 변경 안 했을 때 어떻게 되는지도 본다. (8080이 됨)
index.jsp가 아닌 main.jsp같은 걸로 하면 첫 화면으로 안 뜰 것,, (,,,)
application.properties 에 있던 이거
# mybatis
mybatis.type-aliases-package=com.apple.web.dto
mybatis.mapper-locations=static/mapper/*.xml
MyBatis XML Mapper로 만든다.
@Controller
public class IndexController {
@GetMapping("/index")
public ModelAndView index() {
ModelAndView mv = new ModelAndView("index");
mv.addObject("test", "테스트 입니다.");
return mv;
}
}
ModelAndView를 사용했다.
url을 localhost
만 쳤을 때는 컨트롤러를 거쳐오지 않아서 ModelAndView가 안 온다.
localhost/index
여야 온다.
패키지에 기능별로 모을 수도 있고,
controller, service, dao 끼리 모을 수도 있고 선택이다.
start.spring.io에서 생성한 프로젝트일 경우
압축을 푼 파일을 전자정부 workspace로 옮긴 뒤
전자정부 이클립스에서 import - existing gradle project
application.properties에
#DB
, #mybatis
, #port
<- 설정 가져오기
이 경우 실행시키려면
프로젝트명 우클릭 - run as - java application
프로젝트명Application을 구동해야 한다.
이 파일을 실행하는 것.
내용물은
package com.apple.web;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class WebApplication {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
}
여기의 main()
메서드를 실행하는 것.
패키지명에 따른 Application 이름은
이런데 ServletInitializer.java의 경우 start.spring.io에서 생성할 시 없다 -> 나중에 생기거나 할 것 같다고 하심.
타임리프 쓸 때 html 태그에 이렇게 써주는거 잊지말기~
<html xmlns:th="http://www.thymeleaf.org">
war = 그냥 zip
jar = 압축 + 구동 (이번엔 이걸로 배포)
detail 페이지 만듦.
text는 그냥 텍스트로 만들고
utext는 html 형태로 만들어준다.
<th:block th:text="${detail.board_no}"></th:block>
<th:block th:text="${detail.board_title}"></th:block>
<th:block th:text="${detail.mname}"></th:block>
<th:block th:utext="${detail.board_content}"></th:block>
카테고리구분
(여러 게시판에 한 테이블만 만들 수 있다)
게시판 - 1
공지사항 - 2
문의 - 3
뭐뭐게시판 - 4
어떤게시판 - 5
댓글 테이블도 게시판 종류만 번호로 받아서 하나로 운영할 수 있다.
JPA에서는 컬럼명에 들어간 언더바가 오류를 일으키기 때문에 컬럼명은 다음과 같이 접두사 mt를 붙이도록 한다.
mtno INT(11) NU, PK, AI
mttitle VARCHAR(100) NU,
mtcontent LONGTEXT NU,
mno INT(11) NU, FK
mtdate DATETIME CURRENT_TIMESTAMP
mtip VARCHAR() NULL
mtdel INT(1) DV 1
mtread INT(11) DV 1
mtcate INT(1) NU
DV
는 Default Value
CREATE TABLE multiboard(
mtno INT(11) NOT NULL AUTO_INCREMENT,
mttitle VARCHAR(100) NOT NULL,
mtcontent LONGTEXT NOT NULL,
mno INT(11) NOT NULL,
mtdate DATETIME NULL DEFAULT current_timestamp(),
mtip VARCHAR(50) NULL DEFAULT NULL,
mtdel INT(1) NULL DEFAULT 1,
mtcate INT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (mtno),
INDEX FK_board_member (mno)
)
이 상태로는 외래키가 안 먹힘.
외래키 설정을 해줘야한다.
CREATE TABLE multiboard (
mtno INT(11) NOT NULL AUTO_INCREMENT,
mttitle VARCHAR(100) NOT NULL,
mtcontent LONGTEXT NOT NULL,
mno INT(11) NOT NULL,
mtdate DATETIME NULL DEFAULT current_timestamp(),
mtip VARCHAR(50) NULL DEFAULT NULL,
mtdel INT(1) NULL DEFAULT 1,
mtcate INT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (mtno),
INDEX FK_board_member (mno),
CONSTRAINT multiboardMno FOREIGN KEY (mno) REFERENCES member (mno)
ON UPDATE NO ACTION ON DELETE NO ACTION
)
INDEX FK_board_member (mno)
얘는 인덱스 key라고,,
이클립스 자동 주석 제거 오늘 했다 ㅎㅎ
bin 폴더에 assets, css, js을 넣는다.
bin 말고 static이었다
menu.html에 각각 fragment로 head, menu 등의 이름을 써주면 파일 하나로 import나 include file 같은 것을 할 수 있다.
menu.html
head 태그 내용이긴 한데 이런 식으로 불러온다.
th:block 없이 하나로 묶어주는 태그가 있다면
이렇게 해볼 수도 있다.
오늘은 적을게 별로 없네용