βΆ νλ‘μ νΈ λ! (2022.3.23 ~ 2022.4.13)
λλμ΄ νμ΄λ νλ‘μ νΈκ° λμ΄ λ¬λ€! νμ μμμΌμ΄ λ²μ¨ μκ·Έμ κ°μλ°.. λ λ΄λ¦¬λ 첫 νμμΌμ μμμ ν΄μ λλκ³ λ³΄λ λ²κ½μ΄ λ¨μ΄μ§ λμ΄λ€.
μ€κ°μ μ₯μΌμ΄λ, μ½λ‘λλ ν΄μ μνμ§λ§ μμμ΄λ λ 빨리 λλκ³ λ²κ½ λ³΄λ¬ κ°μ ν
λ° μ°Έ μμ½λ€. λ μ½λ‘λλΌ μκ° μΉλ£λ₯Ό μΌμ£ΌμΌ λμ ν΄μ λ무 λ΅λ΅ν΄μ λ μλκ° λλ €μ‘λ κ°λ μλ€. μμ λλ μΉ΄νλ₯Ό λκ°μΌ λλ 보λ€!
βΆ νλ‘μ νΈ μ νμ μ΄μ μ¬νλ€
νλ‘μ νΈλ₯Ό μνλ μ¬λλ€λΌλ¦¬ μ²μ μ‘°λ₯Ό μ§κ³ μ§ννλ©΄μ νμ€ν μ΄μ νλ‘μ νΈ λ λ³΄λ€ μν νκ² μ§νλμλ μ€λΉ κ³Όμ μ΄μλ κ² κ°λ€. ν κ°μ§ μμ¬μ΄ μ μ UI κ΄λ ¨ νμκ° μ’
λ£λκ³ DB μ€κ³ λΆλΆμ λ€μ΄κ° νλ‘λΆν° κ±°μ νμ₯νκ³Ό λλ§ μκΈ°νλ μ μ΄λ€ γ
γ
κ·Έλλ μ΄λ μ λ ν΅μ¬μ μΈ λΆλΆμ κ°μ μκ°μ λ΄μ£Όμ
μ μμ¬μ΄ μ μ΄ ν΄μλκΈ΄ νμλ€!
SQLμ 미리 μ§λμ§ μμ λΆλΆμ λμμ§ μμλ κ² κ°λ€. νλ‘μ νΈλ₯Ό νλ©° μμ μ΄ λ§μ΄ νμν λΆλΆμ΄μκΈ°μ μ΄λ²μλ κ³Όκ°ν ν¨μ€νλ€. κ·Έ μκ°μ νμ 볡μ΅κ³Ό λ°λ‘ 곡λΆλ₯Ό μμν΄μ μ»μ΄κ° λΆλΆμ΄ λ§μ μ’μλ€!
View λΆλΆμ 미리 λ§λ€μ΄ λμ§ μμλ κ²μ μ’ μμ¬μ λ€! 미리 μ§ λμκ³ ν©μλ₯Ό λ΄€μμ§λ§ κ°μμ μ¬μ μ΄ μμκΈ°μ μμ½κ² λμμ§λ§ Frontλ₯Ό 맑μΌμ νμ₯ νμ΄ μλλ₯Ό μ λ΄μ΄μ£Όμ
μ νλ‘μ νΈλ₯Ό μ§ννλ©΄μ μκ°λ³΄λ€ 빨리 λ§λ€μ΄μ§ λλμ΄ μμλ€.
λ§μ§λ§μΌλ‘ μ΄λ² νλ‘μ νΈμμ νμ
κ΄λ¦¬λꡬλ₯Ό Svnμ μ¬μ©μ ν΄λ³΄μμΌλ GitμΌλ‘ ν΄λ³΄μλΌκ³ μ μμ ν΄μ μ μ₯μλ₯Ό μμ±νκ³ κ°κ°μ λΈλμΉλ₯Ό λ§λ€κ³ gitignore νμΌμ λ§λλ κ²μ μ’ μ λ₯Ό λ¨Ήμμ§λ§, νμλ€μ λ
Έλ ₯μΌλ‘ κ²°κ΅ μ ν΄κ²°λμλ κ²½νμ΄ μλ€!
νλ‘μ νΈλ₯Ό μμνλ©° μ°λ¦¬λ Front μ BackμΌλ‘ 2:2 ꡬλλ‘ μ§ννλ€. Backμ΄μλ λλ λΉμ°ν Sqlμ μμ±νλ λΆλΆμ΄ λ¨Όμ μκΈ°μ, νμ λλμ κ°μ΄ sql μ μλ₯Ό ν΄λκ°λ€. μΌμ μ λλκ° μμ μ΄ μλ€κ³ λ§νμλ κ²κ³Ό λ€λ₯΄κ² μμΈλ‘ λ΄κ° λ§νλ λΆλΆμμ λͺ
μΎν ν΄κ²° 쿼리문μ λμ Έμ€μ λ§μ λμμ΄ λμλ€. νΉν, Joinκ³Ό κ΄λ ¨λ λΆλΆμ μ€μ λ‘ μ¬μ©ν΄ λ³Έ μ μ΄ μμλλ° λλκ° κ·λμ μμ ν΄μ€μ μμ λ³΄λ€ λΉ¨λ¦¬ λλ΄μ λ무 κ°μ¬νλ€.
βΆ νμ΄λ νλ‘μ νΈ μ§ν μ€ μ§λ©΄νλ λ¬Έμ λ€κ³Ό ν΄κ²°λ²
SQL μμ±μ΄ λλ ν 본격μ μΌλ‘ Controller μμ
μ λ€μ΄κ°λ©΄μ ν° λ¬Έμ κ° μ΄ μΈ κ°μ§ μ λ μμλ€.
첫 μ§Έλ‘, DBμ μλ μμμ 맀ννλ λΆλΆμ΄λ€. DBμ μ μ₯νλ λ°μ΄ν°λ μ«μμ΄μ§λ§ μ€μ λ‘ νμν΄μΌ ν λΆλΆμ λ¬Έμμ΄μ΄μκΈ°μ μ΄λ° λΆλΆμ λ¨μν Viewμμ JSTL <c:if> λ₯Ό μ¬μ©ν΄μ ν μ μμμ§λ§ λλ¬μ΄ μ½λκ° λ κ²μ΄ λΆλͺ
νλ―λ‘ μ μ 곡λΆνλ enum ν¨ν€μ§λ₯Ό λ°λ‘ μμ±νμ¬ μ¬λ¬ μμλ₯Ό μ μν ν΄λμ€λ₯Ό λ§λ€μ΄ 맀νμ νλ―λ‘ ν΄κ²°μ νλ€. λ°°μ λ κ²μ μ€μ λ‘ μ μ©νλ λ μ λΏμλ€. νμ λλλ λ°λ‘ λ°°μ°μ§ μμμ§λ§ κΆκΈνλ λΆλΆμ λν΄ μκ² λμ΄ μ’μλ€κ³ νλ νμμκ² μ§μμ μ μ λ¬ν κ² κ°μ λ λΏλ―νλ€.
public enum PtOnceExperienceEnum {
νλ¬λ―Έλ§(1), μΌκ°μ(2), μ‘κ°μ(3), μΌλ
μ΄μ(4);
private final int ptOnceExperience;
private PtOnceExperienceEnum(final int ptOnceExperience) {
this.ptOnceExperience = ptOnceExperience;
}
public static PtOnceExperienceEnum of(final int number) {
switch (number) {
case 2:
return μΌκ°μ;
case 3:
return μ‘κ°μ;
case 4:
return μΌλ
μ΄μ;
default:
return νλ¬λ―Έλ§;
}
}
public int getValue() {
return ptOnceExperience;
}
}
=> ν΄λμ€ ν μμ
λ μ§Έλ‘, νμΌκ³Όμ μΈμμ΄λ€..! νμΌ μ
λ‘λ, λ€μ΄λ‘λμ λν΄ μ ν μκ°νμ§ λͺ»νμλλ°.. μ§νμ€μ νΈλ μ΄λ μ μ²κ³Ό ν¬μ€ν
μμ± λΆλΆμ μμν μκ° μ μ μ΄ μ κΉ λκ°μλ€κ³ μκ°νλ€.. DB μ€κ³ μμ λΆλͺ
ν μ΄λ―Έμ§ νμΌ μ»¬λΌμ λ§λ€μλλ°.. γ
γ
γ
γ
γ
μμ λ‘ λ°°μ΄ νμΌμ
λ‘λλ λ¨μΌ νμΌμ΄λ€. νμ§λ§ μ°λ¦° λ€μ€νμΌ μ¬μ§μ΄ κ°μ μ‘°μμ΄ κ°λ₯ν λ€μ€νμΌμ΄λ€..κ·Έλ.. Insert λΆν° μμν΄λ³΄μ.. νλ©° νΈλ μ΄λ μ μ²μ μμνλ€. νΈλ μ΄λ μ μ² μ νλ‘ν μ΄λ―Έμ§λ 1κ°μ΄λ μ΄ μΉκ΅¬λ μ½λ€. νμ§λ§ λ¬Έμ λ μμκ²½λ ₯ μ΄λ―Έμ§μ΄λ€. κ²λ€κ° κ·Έ μ΄λ―Έμ§μ ν΄λΉνλ λ¬Έμ λ°μ΄ν°κ° μλ€. μ λμ΄ μ’ μ§μ₯μ΄μμ§λ§ μ΅λ κ°μκ° 4κ°λ‘ μ ν΄μ Έ μμκΈ°μ Iteratorλ‘ filenamesλ₯Ό λ°μ forλ¬Έμ λλ € ν΄κ²°νλ€. Insertλ κ·Έλλ μ¬μ΄νΈμ΄μλ€. λ¬Έμ λ μμ μ΄λ€.. μκ° μ μΌ λ¬Έμ λ€ μ§μ§ 3μΌ κ±Έλ Έλ€..
μμ μ΄λΌ.. νΈλ μ΄λ μ 보 μμ λΆν° κ°μ. νΈλ μ΄λ μμ μ νλ‘ν μ΄λ―Έμ§ 1κ° μμ λ° μ΅λ 4κ°μΈ μμκ²½λ ₯ μ΄λ―Έμ§λ€ μμ μ΄λ€. μ΅λ λ¬Έμ λ μμ μ input νκ·Έμμ file μμ±μ μ¬μ©μμ μ λ ₯ κ°μ΄ μμ λ ""μ΄ λ£μ΄μ§λ€λ μ μ΄λ€. μ΅μ μ΄λ€. μμ μ μ ν κ²½μ°μ κ·Έλ₯ λ¬μΌ νλλ°. κ·Έλ₯ λλ©΄ ""μ΄ λμ΄μ¨λ€λ μ λ§ μ΅μ μ΄λ€. νμ§λ§ κΈ°μ‘΄ λ°μ΄ν°λ₯Ό valueμ λ£κ³ input hiddenμΌλ‘ κ°μ λ겨 νμΌμ΄ λ³κ²½μ΄ λ κ²½μ°, κ·Έλλ‘ λ κ²½μ°λ₯Ό javascriptλ‘ μ‘°μνμ¬ hidden valueλ₯Ό μ‘°μνμ¬ ν΄κ²°νλ€.
// μμ κ²½λ ₯ μ΄λ―Έμ§κ° μ μ₯λ μλ² λλ ν 리
String uploadAwardImagesDirectory = context.getServletContext().getRealPath("/resources/assets/awardImages");
// κΈ°μ‘΄ DB λ°μ΄ν°λ€
String[] hiddenAwardImages = request.getParameterValues("hiddenAwardImages"); // hidden μμ κ²½λ ₯ μ΄λ―Έμ§ μ΄λ¦λ€
String[] hiddenAwardNumbers = request.getParameterValues("hiddenAwardNumbers"); // hidden award PKλ€
String[] currentAwardNumbers = request.getParameterValues("currentAwardNumbers"); // DB μμ κ²½λ ₯ PKλ€
// μμ κ²½λ ₯ μ¬μ§ μ΄λ―Έμ§λ€
List<MultipartFile> modifyAwardImages = request.getFiles("aImage");
// μμ κ²½λ ₯ μ¬μ§ μ€λͺ
λ€
String[] modifyAwardContents = request.getParameterValues("aContent");
// κΈ°μ‘΄ hiddenκ°―μ = DB λ μ½λ μ
// => hiddenμ κ°―μκ° λ³νλ κ²½μ° : κΈ°μ‘΄ νμΌμ μμ νλ κ²½μ° => (-) λ²νΌμ λλ μ λ
// κ°μκ° κ°μ λ λ³ν¨ μλ€ => λ³ν¨ μμ
// λ°μμ¨ νμΌμ΄ μλ€ : μ μ§ or μμ
List<String> awardImgList = new ArrayList<String>();
for (int a = 0; a < currentAwardNumbers.length; a++) {
awardImgList.add(awardService.getAward(Integer.parseInt(currentAwardNumbers[a])).getAwardImage());
}
// hidden κ°―μ λ DBκ°―μκ° μλ§μλ(κ·Έλ₯ μμ νμλ)
// hidden κ°―μ < DB λ μ½λ κ°―μ
if (hiddenAwardNumbers.length < currentAwardNumbers.length) {
// 1. κΈ°μ‘΄ νμΌ μμ -> ν΄λΉ DB μμ
for (int i = 0; i < awardImgList.size(); i++) {
// hiddenμλ μμ§λ§ DB λ°°μ΄μ μλ κ²½μ° db λ μ½λλ₯Ό μμ -> ν΄λΉ μΈλ±μ€λ 곧 awardNo PK
if (Arrays.asList(hiddenAwardImages).contains(awardImgList.get(i)) == false) {
new File(uploadAwardImagesDirectory,
awardService.getAward(Integer.parseInt(currentAwardNumbers[i])).getAwardImage()).delete(); // νμΌ
// μμ
awardService.removeAward(Integer.parseInt(currentAwardNumbers[i])); // ν΄λΉ DB λ μ½λ μμ
}
}
} else {// νλ μ ν¬κΈ°λ κ°μλ° (λ³κ²½λ νμΌ μμ )
for (int hid = 0; hid < currentAwardNumbers.length; hid++) {
if (hiddenAwardImages[hid].equals(awardImgList.get(hid)) == false) { // νλ μ κ°μ΄ DBκ°μ΄λ μΌμΉνμ§ μμΌλ©΄
// κΈ°μ‘΄ DBκ°κ³Ό κΈ°μ‘΄ νμΌμλ²μμ μμ
new File(uploadAwardImagesDirectory,
awardService.getAward(Integer.parseInt(currentAwardNumbers[hid])).getAwardImage()).delete(); // νμΌμμ
awardService.removeAward(Integer.parseInt(currentAwardNumbers[hid])); // ν΄λΉ DB λ μ½λ μμ
}
}
}
// DBμ΅μ ν
List<Award> awardList3 = awardService.getAwardList(trainer.getTrainerNo());
String[] imgArray = new String[awardList3.size()];
int i = 0;
for (Award award : awardList3) {
imgArray[i] = award.getAwardImage();
i++;
}
for (int c = 0; c < modifyAwardImages.size(); c++) {
// λ°μμ¨ νμΌμ΄ μλ€ : μΆκ°
if (!modifyAwardImages.get(c).isEmpty()) {
// DBκ°μ λ°μ νμΌ λͺ
μ΄ μλμ§ νμΈ.
if (!Arrays.asList(imgArray).contains(modifyAwardImages.get(c).getOriginalFilename())) {// μμΌλ©΄
// μ΄μ μΆκ°λ§ νλ©΄λ¨.
Award award = new Award();
award.setTrainerNo(dbTrainer.getTrainerNo());
award.setAwardImage(modifyAwardImages.get(c).getOriginalFilename());
award.setAwardContent(modifyAwardContents[c]);
File file = new File(uploadAwardImagesDirectory, modifyAwardImages.get(c).getOriginalFilename());
String uploadFileName = modifyAwardImages.get(c).getOriginalFilename();
// μλ² λλ ν 리μ μ λ¬νμΌκ³Ό κ°μ μ΄λ¦μ νμΌμ΄ μ‘΄μ¬ν κ²½μ° μλ² λλ ν 리μ μ μ₯λ νμΌλͺ
λ³κ²½
int j = 0;
while (file.exists()) {// μλ² λλ ν 리μ κ°μ μ΄λ¦μ νμΌμ΄ μλ κ²½μ° λ°λ³΅ μ²λ¦¬
j++;
int index = modifyAwardImages.get(c).getOriginalFilename().lastIndexOf(".");
uploadFileName = modifyAwardImages.get(c).getOriginalFilename().substring(0, index) + "_" + j
+ modifyAwardImages.get(c).getOriginalFilename().substring(index);
file = new File(uploadAwardImagesDirectory, uploadFileName);
}
modifyAwardImages.get(c).transferTo(file);
awardService.addAward(award);
}
}
}
=> μ‘°κΈ κΈΈμ§λ§ κ·Έλλ ν΄κ²° μμ ν κ²½μ° & κ·Έλ₯ λμμ κ²½μ°, μλ² νμΌ μμ μΆκ° μ¬λΆ νλ¨ λ° DB μ΅μ ν
ν¬μ€ν
μμ± μΆκ°λ κ·Έλλ λΉμ·νκΈ° λλ¬Έμ μ½λ€. νμ§λ§ λ€λ₯Έ ν
μ΄λΈ λκ°μ μΆκ°κ° λ°λ‘ κ΄λ¦¬νλ μ λμ μΈ λ°μ΄ν° ν
μ΄λΈμ΄μκΈ°μ λ νλ€λ€.. ifλ¬ΈμΌλ‘ κ²½μ°λ₯Ό μ λλμ΄ ν΄κ²°νλ€.
// ===============================PT κ°κ²© μΆκ°===============================
String[] roundList = request.getParameterValues("round");
String[] priceList = request.getParameterValues("roundPrice");
int priceCount = 0;
for (String round : roundList) {
PtPricing ptPricing = new PtPricing();
ptPricing.setPtPricingRound(Integer.parseInt(round));
ptPricing.setPtPricingPrice(Integer.parseInt(priceList[priceCount]));
ptPricing.setTrainerNo(trainerService.getTrainer(memberNo).getTrainerNo());
ptPricingService.addPtPricing(ptPricing);
priceCount++;
}
// ===============================PT μ€μΌμ₯΄ μΆκ°===============================
// μ²΄ν¬ λ°μ€ μ νλ μ λ€λ§ λ°μμ΄
String[] workdays = request.getParameterValues("workdayCheck");
String[] hour1s = request.getParameterValues("hour1");
String[] minute1s = request.getParameterValues("minute1");
String[] hour2s = request.getParameterValues("hour2");
String[] minute2s = request.getParameterValues("minute2");
String dayOff = request.getParameter("dayoff");
String dayOffText = request.getParameter("dayOffText");
int dayCount = 0;
for (String workday : workdays) {
Schedule schedule = new Schedule();
String time = hour1s[dayCount] + ":" + minute1s[dayCount] + "~" + hour2s[dayCount] + ":"
+ minute2s[dayCount];
schedule.setScheduleHours(time);
schedule.setScheduleWorkday(ScheduleWorkdayEnum.of(Integer.parseInt(workday)).getValue());
schedule.setTrainerNo(trainerService.getTrainer(memberNo).getTrainerNo());
scheduleService.addSchedule(schedule);
dayCount++;
}
// ν΄λ¬΄μΌ μ 보λ μμ μ
if ((dayOff != null) && (!dayOffText.equals(""))) {
Schedule schedule = new Schedule();
schedule.setScheduleWorkday(ScheduleWorkdayEnum.of(Integer.parseInt(dayOff)).getValue());
schedule.setScheduleDayoff(dayOffText);
schedule.setTrainerNo(trainerService.getTrainer(memberNo).getTrainerNo());
scheduleService.addSchedule(schedule);
}
=> μ‘°κΈ κΈΈμ§λ§ ν΄κ²°
μ΄μ ν¬μ€ν
μμ μ΄ λ¬Έμ λ€. μ΄λ―Έμ§ λ° 2κ°μ μ λμ μΈ λ³κ²½μ΄ μλ ν
μ΄λΈμ΄μκΈ°μ λ λ¬Έμ λ€. νμΌμ μμ / μΆκ° / λ³κ²½ν κ²½μ° μ μ΄λ¬ΈμΌλ‘ λλμ΄ μ μ²λ¦¬νλ€. (μ½λλ λ무 κΈΈμ΄μ μλ΅νκ² λ€.. μ΄κ² ν΅μ¬μ΄κΈ΄νλ°..) PT κ°κ²© λ° μ€μΌμ₯΄ μμ μ λ€νν νμΌμ΄ μλμκΈ°μ μ 체 μμ ν μΆκ°νλ λ‘μ§μ μκ°ν΄ κ²¨μ° ν΄κ²°νλ€.
λ§μ§λ§μΌλ‘ κΆν μ²λ¦¬λ₯Ό νλ μΈν°μ
ν° λΆλΆμ΄μλλ°, λ°°μ΄ κ±Έ μ΄λ»κ² ν΄κ²°ν κΉ κ³ λ―Όνλ€κ° νμ₯νμ΄ κ΅¬κΈ κ²μμ ν΅ν΄ μλν
μ΄μ
μ νμ©νκΈ°λ‘ κ²°μ νλ€. νμ€ν XMLμ μ§μ λ©μλλ₯Ό λ±λ‘νλ 건 μλ λ°©μμΈ κ² κ°μκΈ°λ ν μ΄μ κ° μμλ€.
@Retention(RUNTIME)
@Target(PARAMETER)
public @interface AuthUser {
}
=> μλν μ΄μ μ μ
@Retention(RUNTIME)
@Target({ TYPE, METHOD })
public @interface Auth {
public enum Role {
ALL, ADMIN, TRAINER, USER, USER_PRETRAINER, PRETRAINER_TRAINER, USER_PRETRAINER_ADMIN
}
public Role role() default Role.ALL;
}
=> κΆν κ΄λ ¨ enum μ μΈ κΈ°λ³Έκ°μ μ 체 μ¬μ©μ!
public class AuthUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver{
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
// TODO Auto-generated method stub
// 1. νλΌλ―Έν°μ @AuthUserκ° λΆμ΄ μλμ§ , νμ
μ΄ MemberμΈμ§ νμΈ
if( supportsParameter(parameter) == false ) {
// λ΄κ° ν΄μν μ μλ νλΌλ―Έν°κ° μλλ€.
return WebArgumentResolver.UNRESOLVED;
}
// 5. μ¬κΈ°κΉμ§ μ§νμ΄ λμλ€λ©΄, @AuthUserκ° λΆμ΄μκ³ νμ
μ΄ UserVOμΈ κ²½μ°μ΄λ€.
HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
HttpSession session = request.getSession();
if( session == null) {
return null;
}
return session.getAttribute("loginUserinfo");
}
@Override
public boolean supportsParameter(MethodParameter parameter) {
// 2. @AuthUserκ° λΆμ΄ μλμ§ νμΈ
AuthUser authUser = parameter.getParameterAnnotation(AuthUser.class);
// 3. @AuthUserκ° μλΆμ΄ μλ κ²½μ°
if( authUser == null ) {
return false;
}
// 4. Member νμ
μ΄ μλ κ²½μ°
if( parameter.getParameterType().equals(Member.class) == false) {
return false;
}
return true;
}
}
=> μλν
μ΄μ
κ΄λ ¨ νΈλ€λ¬ λ¦¬μ‘Έλ² κ΅¬ν
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws IOException {
// 1. handler μ’
λ₯ νμΈ
// μ°λ¦¬κ° κ΄μ¬ μλ κ²μ Controllerμ μλ λ©μλμ΄λ―λ‘ HandlerMethod νμ
μΈμ§ 체ν¬
if (handler instanceof HandlerMethod == false) {
// return trueμ΄λ©΄ Controllerμ μλ λ©μλκ° μλλ―λ‘, κ·Έλλ‘ μ»¨νΈλ‘€λ¬λ‘ μ§ν
return true;
}
// 2.ν λ³ν
HandlerMethod handlerMethod = (HandlerMethod) handler;
// 3. @Auth λ°μμ€κΈ°
Auth auth = handlerMethod.getMethodAnnotation(Auth.class);
Auth userRole = handlerMethod.getMethod().getDeclaringClass().getAnnotation(Auth.class);
// 4. methodμ classμ @Authκ° μλ κ²½μ°, μ¦ μΈμ¦μ΄ νμ μλ μμ²
if (auth == null && userRole == null) {
return true;
}
// 5. @Authκ° μλ κ²½μ°μ΄λ―λ‘, μΈμ
μ΄ μλμ§ μ²΄ν¬
HttpSession session = request.getSession();
if (session == null) {
// λ‘κ·ΈμΈ νλ©΄μΌλ‘ μ΄λ
response.sendRedirect(request.getContextPath() + "/user/login/login_form");
return false;
}
// 6. μΈμ
μ΄ μ‘΄μ¬νλ©΄ μ ν¨ν μ μ μΈμ§ νμΈ
Member authUser = (Member) session.getAttribute("loginUserinfo");
if (authUser == null) {
response.sendRedirect(request.getContextPath() + "/user/login/login_form");
return false;
}
// 7. adminμΌ κ²½μ°
if (userRole != null) {
String role = userRole.role().toString();
if ("ADMIN".equals(role)) {
if (!(authUser.getMemberStatus() == 9)) {
response.sendRedirect(request.getContextPath());
return false;
}
}
} else if (auth != null) {
String role = auth.role().toString();
if ("ADMIN".equals(role)) {
if (!(authUser.getMemberStatus() == 9)) {
response.sendRedirect(request.getContextPath());
return false;
}
}
}
=> μΈν°μ
ν° μμ λ©μλ ꡬν, μΈμ
μ 무 νμΈ λ° μλν
μ΄μ
value νμΈ λ° κ΄λ¦¬μ μ²λ¦¬κΉμ§ μ΄νλ κΈΈμ΄μ μλ΅ (λ€ λμΌν¨)
localhostμμ μΌμ΄λλ μμν μλ¬λ€μ μ‘κ³ λμ war νμΌλ‘ κ°μ¬λκ» μ λ¬μ λλ Έλ€. μ΄ ν μΈλ² μ λ μμ μ νλλ° μ λλμ§λ₯Ό λͺ¨λ₯΄κ² λ€. μμ ν λλ§λ€ λλκ² μ λκ³ μ λλκ² λλκ² λν΅ μ΄ν΄κ° μλλ€.. μλ₯Ό λ€μ΄ μ§λ apiλ₯Ό λλ©μΈ μμ μ νλλ° λ μ λλκ±Έ 보λκΉ μ΄μ΄κ° μλ€. μλ₯΄ νμΌ λ§λ€ λλ§λ€ keyλ₯Ό μ¬λ°κΈμ ν΄μΌ νλ건μ§..
βΆ νμ΄λ νλ‘μ νΈλ₯Ό λ§μΉ ν μκ°
μ΄λ² 첫 μ€νλ§μ μ΄μ©ν νλ‘μ νΈλ₯Ό μ§ννλ©° λλ κ²μ μμ§λ μ½λλ₯Ό μμ±νλ λ₯λ ₯μ΄ ν± μμ΄ λΆμ‘±νλ€ λκΌλ€. λλ¦ κ°μ²΄μ§ν₯μ μ λλ‘ κ³΅λΆνκ³ MVC ν¨ν΄μ μ μ©ν μλ°νλ‘μ νΈλ μ§ννκΈ°μ μμ κ°μ΄ μ겨 μ μ§λ³΄μκ° μ¬μ΄ ν΄λ¦°ν μ½λλ₯Ό μμ±νμ μκ°νμ§λ§ μ€μ€λ‘μ κΈ°λμ λ§μ΄ λ―ΈμΉμ§ λͺ»ν νλ‘μ νΈμλ€. λ μ μ§ν΄μΌκ² λ€λ μκ°μ΄ μμ§λ λ λ€.
λ§μ§λ§μΌλ‘ νμλ€μκ² λ무 κ°μ¬νλ€. νΌμμλ€λ©΄ μ΄ μ λλ‘ μ μνκ² ν΄κ²°νμ§ λͺ»νλ λ¬Έμ λ μ€κ° μ€κ° λͺ
μΎν ν΄λ΅λ€μ λμ Έμ€ λ무 κ³ λ§μ λ€. ν κ³Όμ λ₯Ό μ§ννλ©΄μλ ν λλλ€μ΄ νμλ€μκ² λνλ νλλ₯Ό μ μΌ λ§λ΄μΈ λ΄κ° μΈκ°μ μΌλ‘λ λ°°μ°λκ² λ§μλ€. κ°μ¬ν©λλ€ λͺ¨λ!
λ§μ΄ λ―Έμ½νμ§λ§ μ½λλ₯Ό 보μλ €λ©΄ μ¬κΈ°λ‘!
https://github.com/GroovyArea/healthJava-Spring-Project
'π Spring Framework > Spring Project' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
2022.05.01 γView λ§λ€κΈ°, Insert, Select μμ γ (0) | 2022.05.01 |
---|---|
2022.04.30 γlogback, lombok, mysqlγ (0) | 2022.04.30 |
2022.04.29 γλΆνΈμ€νΈλ© κ΄λ ¨γ (0) | 2022.04.29 |
2022.04.28 γThymeleaf μ€μ γ (0) | 2022.04.28 |
04.27 κ°μΈ νλ‘μ νΈ μμ [λκ°μ΄μ΄ ꡬ맀 μ¬μ΄νΈ] [DB ꡬμ] (0) | 2022.04.27 |