setting
1. pom.xml에 라이브러리 연동
2. main에 폴더 만들기 webapp/WEB-INF/views
3. resources에 폴더 만들기 mappers
4. application.properties 작성
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
# static resource folder setting
spring.web.resources.static-locations=classpath:static/
# port number setting
server.port=80
# Mybatis mapper setting
mybatis.mapper-locations=classpath:mappers/*.xml
# DB setting
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/스키마이름??serverTimezone=Asia/Seoul
spring.datasource.username=
spring.datasource.password=
MVC
java - 프로젝트폴더명
1. DB 테이블과 같은 구조(컬럼명과 같은 필드 명)로 DTO 클래스 작성
// JPA class를 만들면 db에 테이블이 만들어짐
package com.raspberry.springjdbc02.dto;
import lombok.Data;
@Data
public class TestDto {
private int tcode;
private String tname;
private int tage;
private String tphone;
}
2. 폴더 만들기 controller, service, dao
3. controller에 자바 클래스 만들기
@Controller, @Log
view폴더에 index.jsp파일 만들기
컨트롤러 매핑 메소드 작성 형식
1) 페이지만 변경하는 메소드
@ 메핑어노테이션("url") -- @GetMapping / @PostMapping
public String 메소드명(){
log.info("메소드명()");
return("jsp이름"); - jsp 확장자 제외
}
2) 데이터 전송하면서 페이지를 변경하는 메소드
@ 메핑어노테이션("url") -- @GetMapping / @PostMapping
public ModelAndView 메소드명(){
log.info("메소드명()");
ModelAndView 변수명 = new ModelAndView();
변수명.addObject("식별자", 값객체);
변수명.setViewName("jsp이름"); - jsp 확장자 제외
}
// 페이지만 변경하는 메소드
@GetMapping("/")
public String home(){ //데이터를 안 보낼 때 string 사용
log.info("home()");
return "index";
}
// 데이터 전송하면서 페이지를 변경하는 메소드
@GetMapping("/")
public ModelAndView home() {
log.info("home()");
mv = new ModelAndView();
return mv;
}
2. views 파일에 inputForm.jsp파일 만들기
inputForm 파일에 html table로 입력 받아야할 데이터 양식 만들기
controller 연결
public String inputForm(){
log.info("inputForm()");
return "inputForm";
}
4. dao파일에 인터페이스 파일로 dao만들기
@Mapper
more action -> xml 선택 파일 경로 선택 src-resources - mappers => ok
아니면 mappers 폴더에 dao파일명.xml 만들기(dao 파일명과 똑같이 만들어야 한다.)
public interface TestDao {
// 데이터 삽입 insert 메소드 선언
void intertData(TestDto td)
}
mappes 파일의 dao.xml의 풀네임 수정 가능
<insert id="intertData" parameterType="TestDto"></insert>
-> mappes 파일의 dao.xml파일
VALUES (null, #{tname}, #{tage}, #{tphone});
6. service파일에 sevice 자바 클래스 만들기
package com.raspberry.springjdbc02.service;
import com.raspberry.springjdbc02.dao.TestDao;
import com.raspberry.springjdbc02.dto.TestDto;
import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@Service
@Log
public class TestService {
//Dao를 자동 주입
@Autowired
private TestDao tDao;
private ModelAndView mv;
// controller의 String view 연결
public String inputData(TestDto td, RedirectAttributes rttr){
log.info("inputData()");
String view = null;
String msg = null;
// 저장용 메세지 try catch사용하기
try{
// 데이터 삽입 성공
tDao.intertData(td);
msg = "저장 성공";
view = "redirect:/"; //첫 페이지
} catch (Exception e){
// 데이터 삽입 실패
e.printStackTrace();
msg = "저장 실패";
view = "redirect:inputForm"; // controller의 메소드 이름 inputForm()
}
rttr.addFlashAttribute("msg", msg);
return view; // try catch의 view 변수
}
}
7. controller 마무리
private TestService tServ;
// 휘발성 전송 객체
public String inputProc(TestDto td, RedirectAttributes rttr){
log.info("inputProc()");
String view = tServ.inputData(td, rttr);
return view;
8. index, inputForm
let m = '${msg}';
if(m!=''){
alert(m)
}
</script>
'공부기록' 카테고리의 다른 글
5월 15일 (1) Spring - CRUD(수정) (0) | 2023.05.15 |
---|---|
5월 12일 (2) Spring - JDBC 연동 CRUD(출력, 상세보기) (0) | 2023.05.12 |
5월 11일 (2) Spring - JDBC 연동 프로젝트2 (0) | 2023.05.11 |
5월 11일 (1) Spring - JDBC 연동 프로젝트 (0) | 2023.05.11 |
5월 10일 (2) Spring - JSTL 라이브러리 (0) | 2023.05.10 |