๊ฐ๋ฐ์ ํ ๋ ํ์ผ๋ค์ ์ด๋ป๊ฒ ๋๋๊น ํ๋ ๋ฐฉ๋ฒ๋ก - mvcmodel (dao(mapper(interface), mapper(xml)), vo, dto, domain)controller (controller, service (servlet์ญํ , ์ฃผ์๋งคํ๊น์ง๋ง-contr
exeํ์ผ ๊ทธ๋ฅ ๋ ๋ฒ ํด๋ฆญํ๊ณ yes๋ง ๊ณ์ ํด์ค์
src ํด๋ ์๋์์ ์์ ํด์ผํด์~! out์ด๋ target์์ ์์ ํ๋ฉด ์๋ฌด ์์ฉ์ด ์์ด์~! ์ฃผ์ ํ์ธ์~! ๐คนโโ๏ธํฐ์บฃ์ด ์ค์น๋ ํด๋๋ผ์ด๋ธ๋ฌ๋ฆฌ โ ํฐ์บฃ์ ์ฐ๊ฒฐ ์์ผ์ค์ผ์ง ์๋ฌ ์๋์ํฐ์บฃ ์ค์ ๊ด๋ฆฌ์ฝ์์ฐฝ์ ํ๊ธ ๊นจ์ง์ ๋ฐฉ์งํด์.out ์ tomcat์ด ์ค์ ๋ก ์
๋ง์ฝ ์๋ฌ๊ฐ ๋๋ค๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋๋ก ๋ค์ด๋์ง ์์ ๊ฒC:\\Users\\Administrator.m2\\repository์ฌ๊ธฐ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ญ์ ํ๊ณ ๋ค์ maven์ฝ๋ ์ ๊ณ refreshํ๊ณ ๋ค์ด ๋ฐ์ผ๋ฉด ๋๋ค.๊ทธ๋ฅ ์ฝ๋๋ง ์ญ์ ํ๋ค๊ฐ ๋ค์ ๋ถ์ฌ๋ฃ๊ธฐํ๋ฉด ์ด๋ฏธ ์ปดํจํฐ์
MVC2 ํจํด์ผ๋ก ๋ง๋ค๊ธฐ ๋๋ฌธ์ servlet์ ๋ฑ ํ๋๋ง ๋ง๋ค์ด์. @WebServlet("/del3") public class BoardDelServlet3 extends HttpServlet { } ์์ ์ ํ๋ ๊ฒ์ด๋ค.
์ด๋์๋ classpath๋ก ์์ํ๋ฉด resourcesํด๋์์ ๋ถํฐ ์ฐพ๊ธฐ ์์ํ๋ค. <context:property-placeholder location="classpath:application.properties"/>
<context:component-scan base-package="com.koreait.spring" />์ ๋ ธํ ์ด์ ์ผ๋ก ๋น ๋ฑ๋กํ ํด๋์ค๋ค์ ์ค์บํด์ฃผ๋ ์์ ํจํค์ง๋ฅผ ์ค์ ํด์.
@Controllor ์ด๋ ธํ ์ด์ ์ ์ผbean ๋ฑ๋ก + ์์ฒญ์ด ๋ค์ด์ค๋ฉด requestMapping๊ณผ ์ฐ๊ฒฐํด์ค๋ค@Controller๊ฐ ์์ผ๋ฉด @RequestMapping ์๋ฌด ์ธ์๋ ์๋คhandlerMapping์ @Controller๋ค์ ๊ด๋ฆฌํด์ค๋คController Se
์๋ฒ์๊ฒ ๋๊ธ ๋ฆฌ์คํธ ์๋ฃ ๋ฌ๋ผ๊ณ ์์ฒญํ๋ ํจ์์ผ๋จ BoardCmtEntity ๋ Service์์ ํ์ํ ํ๋ผ๋ฏธํฐ๋๊น Controller์์๋ ํ๋ผ๋ฏธํฐ์ ์ถ๊ฐํ ๊ฒ์ด๋ค. Service์ ๋ฃ์ด์ฃผ๊ธฐ ์ํด์ ๊ฒฝ๋ก๋ cmt/+iboard ๋ฟ์ด๋ฉด, Controller์ cm
UserController.javabean : ๊ฐ์ฒด@Controller ์ฃผ์๊ฐ๊ณผ ๋งคํ ๋ ์ ์๋ beanController๋ก ์ด๋ ธํ ์ด์ ๋ ์๊ฐ web.xml์ <servlet>๊ณผ ์ฐ๊ฒฐ๋ผ์.@RequestMapping("๊ฒฝ๋ก")RequestMapping๋ก ์ด๋ ธํ ์ด
๋ก๊ทธ์ธํ ์ ์ ์ธ ๊ฒฝ์ฐ auth์ ์ ๋ณด๊ฐ ๋ด๊ธด๋ค์ฌ์ง ๋๋ ์ด๋ฆ์ ๋๋ฅด๋ฉด /user/profile ๋ด ํ๋กํ๋ก ์ด๋ํ๋คํผ๋์์ ํ๋กํ์ฌ์ง์ ๋๋ฅด๋ฉด/user/profile?iuser=${iuser} ๊ทธ ์ฌ๋์ ํ๋กํ๋ก ์ด๋ํ๋ค. ํ๋ผ๋ฏธํฐ๋ก ๋์ด์จ UserEntity์ i
home2.jscontainerElem: document.querySelector('- loadingElem: document.querySelector('.loading'):\`const itemContainer = document.createElement('div')
classNotFoundException์์ธ : ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ธ์์ด ์๋์ด์.ํ๋ก์ ํธ > ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ > modules setting > artifacts ์์ tomcat๊ณผ library๋ฅผ ์ฐ๊ฒฐํด์ค์.
ใ
์ ์๋ ๊ฑฐ ๊ทธ๋๋ก zip ๋ค์ด, yaml ์์ , db์ฐ๊ฒฐ ํ๋๋ฐ ์ด๋ฉ์ผ ์ธ์ฆ์ด ์๋๋ค.์์ธ : DB์ authCd๊ฐ null์ด ๋์ด์ผ ํ๋๋ฐ ๊ทธ๋๋ก ๋จ์์์ด์ํ์๊ฐ์ ์ด ๋์ง ์์๋ค. securityํจํค์ง์ SecurityConfig์ configure(HttpSecu
์ด ๊ธ์์ csrf์ ๋ํ ๋ถ๋ถ์ Reiphiel๋์ Spring Security๋ก CSRF ํ๋กํ ์ ์ ์ฉ๊ธ์์ ๊ฐ์ ธ์์ต๋๋ค.์ง์๊ณผ ๊ฟํ์ด ๋์ง๋ "๋ ์ดํผ์์ ๋ธ๋ก๊ทธ" ๋ฐฉ๋ฌธํ๊ธฐ"Spring Security๋ก CSRF ํ๋กํ ์ ์ ์ฉ" ๊ธ ๋ณด๋ฌ๊ฐ๊ธฐunknown1 (Http
์คํฌ๋ฆฐ์ท(49)
isAnonymous()๋ ๋ก๊ทธ์ธ ํ์ง ์์ Anonymous User์ธ์ง ํ์ธํ์ฌ Anonymous User์ธ ๊ฒฝ์ฐ true๋ฅผ returnํ๋ค.
get๋ฐฉ์์ fetch๊ฐ ์๋๋คheader ์ ์ฉํด๋ ์๋๋ค templetInputException
basiclayout์ด ์๋๋ฐ ์ถ๊ฐ๋ฅผ ํด์ ์๋ฌ๊ฐ ๋ฌ๋ ๊ฒ์ด๋ค์คํฌ๋ฆฐ์ท(25)basiclayout ์ง์ฐ๋๊น ์๋ฌ๊ฐ ์์ด์ก๋คTemplateInputException์ html๋ฌธ์ ์ด๋ค html์์์ thymeleafํ๊ทธ๋ค์์ ๋ฌธ์ ๊ฐ ์ผ์ด๋ ๊ฒ์ด๋ค
์ด ๊ธ์ ์ฌ์ง์ ๋ชจ๋ ๋๋น๋๋์ \[Spring ํ๋ก์ ํธ] Spring Boot์์ ํ์๋ฆฌํ(Thymeleaf) ์ฌ์ฉํ๊ธฐ๊ธ์์ ์บก์ณํ ๊ฒ์ ๋๋ค.์ง์๊ณผ ๊ฟํ์ด ๋์น๋ "๋๋น์ ๋ธ๋ก๊ทธ" ๋ฐฉ๋ฌธํ๊ธฐ"\[Spring ํ๋ก์ ํธ] Spring Boot์์ ํ์๋ฆฌํ(Thymeleaf
layout:title-pattern="$CONTENT TITLE" ํด๋ <title>์ ClonFacebook์ผ๋ก LAYOUTTITLE๋ง ๋ฌ๋ค.์๋๋ layout:title-pattern="$LAYOUT TITLE - $CONTENT TITLE"ClonFaceb
no getter for property named 'emial' in 'class UserEntity'์คํฌ๋ฆฐ์ท(34)UserMapper.xml ์์ ์คํ๋ฌ๋ค.
๋น์ ์์ด๋ ์ค์ ํ ๊ฒ์ ๋จ์ํ smtp ์ธ์ฆ์ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉ ๋ฐ๋ผ์ ๋ณด๋ด๋์ด(setFrom())๋ฐ๋์ ํ์๋ณด๋ด๋์ด์ ๋ฉ์ผ์ฃผ์๋ฅผ ์์ ํ๋์ด๊ฐ ๋ณผ๋ ๋ชจ๋ ํ๊ธฐ ๋๊ฒ ์ํ์ ๋ค๋ฉด ์๋์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.mailHelper.setFrom("๋ณด๋ด๋์ด ์ด๋ฆ <๋ณด๋ด
์ด ๊ธ์ ํ๋๋ฌ๋๋์ ์๋ฐ StringBuilder ์ฌ์ฉ๋ฒ ๋ฐ ์ฌ์ฉํ๋ ์ด์ ๊ธ์ ๋ด์ฉ์ ๋๋ค.์ง์๊ณผ ๊ฟํ์ด ๋์น๋ "ํ๋๋ฌ๋"๋์ ๋ธ๋ก๊ทธ ๋ฐฉ๋ฌธํ๊ธฐ"์๋ฐ StringBuilder ์ฌ์ฉ๋ฒ ๋ฐ ์ฌ์ฉํ๋ ์ด์ " ๊ธ ๋ณด๋ฌ๊ฐ๊ธฐString์ด ๋ฌธ์์ด ๊ฒฐํฉ์ ํ ๋๋String str1
T์ T์ ์์ ํ์ ๋ง ๊ฐ๋ฅT์ T์ ์์ ํ์ ๋ง ๊ฐ๋ฅT์ T์ ๋ถ๋ชจ(์กฐ์) ํ์ ๋ง ๊ฐ๋ฅ๋ชจ๋ ํ์ ๊ฐ๋ฅ. <? extends Object>๋ ๊ฐ์ ์๋ฏธ์ ๋ค๋ฆญ์ค์ ํ์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํ์ ๋ช ์ ๊ท์น๋ค์ด ์กด์ฌํ๋ค.ํ์ ํ๋ผ๋ฏธํฐ๋ extends๋ฅผ ์ฌ์ฉํ์ฌ ์ผ์ ํ
ํ์ผ์ ์ ๋ก๋ ํ ๋ <form>ํ๊ทธ์์ ENCTYPE="multipart/form-data"๋ผ๋ ์ ํธ๋ฆฌ๋ทฐํธ๋ฅผ ๋ฐ๋์ ์จ์ผ ํจ๊ทธ๋ ๊ฒ ํ์ง ์์ผ๋ฉด ์น ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ธธ๋ ํ์ผ์ ๊ฒฝ๋ก๋ช ๋ง ์ ์ก๋๊ณ ํ์ผ ๋ด์ฉ์ด ์ ์ก๋์ง ์๋๋ค.๊ทธ๋ฆฌ๊ณ ์ด๋ METHOD ์ ํธ๋ฆฌ๋ทฐํธ์๋
http://www.sysout.co.kr/home/webbook/page/read/643;jsessionid=54B3D5320E73A41FC4088D5E3D322141https://webdevtechblog.com/mybatis-resultmap%E
.png) .png) .png) ![](https://images.velog.io/images/on-n-on-turtle/post/a8b5958c-0670-46c5-835c-a
์ธ์ฆ(๋ก๊ทธ์ธ) ์ธ์ , JWT์ด๋ฐ ๊ฒ๋ค์ ๊ด๋ฆฌํด์ฃผ๋ ๊ฒjwt ์ธ์ ์ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์๊ณ ์ํธํ๋ ํค๋ฅผ ์ฟ ํค์ ์ ์ฅํด๋๊ณ (ํค๋์ ๋ฐ์์) ๊ทธ๊ฑธ ๋ถ์ํด์ ๋ก๊ทธ์ธ ์ฒ๋ฆฌ ํด์ฃผ๋ ๊ฒ ๋ก๊ทธ์ธ ์ํด๋
https://engkimbs.tistory.com/849 ์ฐธ๊ณ ์นด์นด์คํกhttps://developers.kakao.com/ ๋ก๊ทธ์ธ redirect URI ์คํ๋ง ๋ถํธ์ ์ํ๋ฆฌํฐ๋ฅผ ์ฐ๊ณ ์์ด์ yamlํ์ผ์์ ์ค์ ํ redirect-uri ๋ถ๋ถ