중앙정보기술인재개발원/Spring

[Spring] | final project_1

soidev 2025. 4. 28. 18:47

 

▲ 2주동안 실습하게될 프로젝트의 구현


application.properties 

아주 중요한 설정 파일
이 파일은 Spring Boot 애플리케이션의 전반적인 설정을 담당해. 여기서 데이터베이스 연결서버 포트로깅 설정 등 다양한 옵션을 설정할 수 있음

spring.application.name=finalproject

# 포트
server.port=8080
# 세션 설정
server.servlet.session.tracking-modes=cookie

#DB 연동 설정
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://orange.null-pointer-exception.com:5306/이름?characterEncoding=UTF-8&serverTimezone=KST
spring.datasource.username=네임 쓰면됨
spring.datasource.password=비번쓰세오!

# Mybatis 설정
mybatis.mapper-locations=classpath:mybatis/mapper/**/**.xml
mybatis.configuration.map-underscore-to-camel-case=true

~camle-case = true : 만약에 account_name이란 테이블 value값이 있다면 이 코드는 이렇게 안 쓰고 accountName이라고 정의    

                                          해도 자동적으로 된다는것

 

application.properties 기본 구조

application.properties는 key-value 형태로 설정이 들어가있음. 

주요 설정 항목들

  1. 서버 관련 설정
    • 서버의 포트를 설정할 수 있어.
  2. 데이터베이스 연결 설정
  • JPA나 JDBC 연결을 위한 설정을 할 수 있어.

   3.로깅 설정

  • 로깅 레벨을 설정할 수 있어. 예를 들어 DEBUG, INFO, ERROR 등을 설정할 수 있어.
 
 

 

> 오류

error page =404
페이지 부재! 

제일 먼저 링크하고 리퀘스트 맵핑이 동일한지 봐야함

 

사이트에 연결할 수 없음 ! - > 서버가 연결 안된것!!

 

 

error page = 500

메서드에선 실행이 됐는데 내부에서 exception이 뜨는 것

절대경로와 상대경로

<a href="/user/registerPage">회원가입</a>
<!--
/ : 절대경로
단점 - 타자를 많이 쳐야함
./ : 상대경로 하면 user/registerPage로 됨 <- 많이씀
./registerPage = registerPage 똑같은 경로임
수업은 절대경로로 수업할것임!
진짜 경로 : http://localhost:8080/user.registerpage
-->

 

<form action="/user/registerProcess" method="get">
<!-- method = get/post 방식이 있음 -->

 

 

html

  • 입력 양식에 이름을 꼭 지정!
  • name이 지정되면 request 할때 값이 넘어감
  • dto에 있는 필드명으로 똑같이 하면 자동으로 값이 넣어짐
  • 다르면 exception 발생은 안 하지만 값은 null 들어감
  • radio or checkbox 같은 경우는 value값을 꼭 지정

▼ xml파일 해석

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- 실행될때 사용하는 쿼리 여기다가 작성 결합될 인터페이스명(패키지명)지정 -->
<mapper namespace="com.ca.finalproject.user.mapper.UserSqlMapper">
<insert id="createUser">
<!-- id=인터페이스에서 제공된 메서드명 작성 -->
INSERT INTO fp_user(
account_name,
password,
nickname,
email,
gender,
birth,
phone)
VALUES(#{accountName},#{password},#{nickname},
#{email},#{gender},#{birth},#{phone})
<!-- # :mybatis 문법 ,변수화될구간을 #으로서 정의!-->
</insert>
</mapper>

 

✅  XML (UserSqlMapper.xml) 설명

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

1. 상단부

 

  • 이건 MyBatis가 XML 파일을 읽을 때 "이건 mapper 파일이다" 하고 인식하게 해주는 선언부
  • 그냥 매번 써야함. (템플릿처럼)

2. <mapper namespace="com.ca.finalproject.user.mapper.UserSqlMapper">

  • namespace는 "이 XML이 어떤 인터페이스랑 연결되는지" 정하는 것이다.
  • 여기서는 com.ca.finalproject.user.mapper.UserSqlMapper 인터페이스랑 연결된다는 뜻

즉:
👉 UserSqlMapper 인터페이스에 createUser 메서드가 있으면,
👉 이 XML 안에 <insert id="createUser">랑 연결돼서 실행

3. <insert id="createUser">

  • **id="createUser"**는 인터페이스 메서드명이랑 매칭
  • UserSqlMapper 인터페이스에 이렇게 있을 것
@Mapper
public interface UserSqlMapper {
public void createUser(UserDto userDto); //인터페이스 정의
}

 

  • 그럼 이 메서드 호출하면,
  • XML 안에 createUser 쿼리가 실행돼서 DB에 데이터가 INSERT 

4. INSERT문

 

  • 여기서 #{} 안에 쓰는 건 MyBatis가 매핑해줄 파라미터 이름
  • 예를 들면, UserDto 안에 private String accountName; 
  • 그러면 #{accountName}에 userDto.getAccountName() 값이 들어감

 

 

 


Get & Post

get 방식 :

  • 위에 링크에다가 파리미터로 쿼리스트링방식으로 보내는 방식
  • http://localhost:8080/user/registerProcess?xxx=asdf&yyy=asdf
  • get방식은 한글이 불가능하고 실질적으로 영어하고 특수문자만됨
  • xxx=?? -> ??값 무한으로 못 들어감 정해져있음
  • 값을 끌어올려줌

 

post 방식 : get방식이랑 결과적으로 같지만

  • http://localhost:8080/user/registerProcess
  • url을 통해서 값을 넘기는게 아님
  • 헤더쪽에다 데이터 값을 숨겨서 보냄
  • 값을 무한대로 보낼 수 있음
  • 이미지,한글 다 가능!! 
  • 내부적으로 웹브라우저의 인코딩방식을 서버쪽으로 넘겨줘서 가능
  • 인서트쪽에 가까움

 

> 회원가입 form action method는 post가 맞음

 이유

  1.  비밀번호 유출 가능성
  2.  한글을 쓸 수 있음
  3. 파라미터를 통해서 데이터를 요구하는 것 (일반적으로 insert생각하면됨)

 

mybatis필요 파일

xml

xml에 맵핑될 인터페이스

mapper 는사실상 레포지터리같은파일

 

> 오류

일단 서버에서부터 문제

Mapper문제임

 

 

500번 에러는 무조건 바로 그 다음줄로 봐야함..!

getter가 없다.. - > mapper 가보기 그리고 안에다가 #{} 쓰지 말기

변수명 같이 잘 맞추기..\

 

오류보는법

저 엄청 많은 코드 들 중에 들여쓰기 첫번째 문단을 제일 먼저 확인하기

 

bad SQL grammer[]  : sql querry 문법이 잘못된것임

 

db에 값이 안들어오면 제일 복잡해짐!!

'중앙정보기술인재개발원 > Spring' 카테고리의 다른 글

[Spring] | 세션,쿠키,Session,Cookie  (0) 2025.05.02
[Spring] final project_4  (0) 2025.05.02
[Spring] | final project_3  (1) 2025.05.01
[Spring] | final projcet_2  (0) 2025.04.29
[Spring] 개발 환경 셋팅  (0) 2025.04.24