오늘뭐했지
훔쳐보기
https://velog.io/@leaftree/20240311-Spring-19-
이거보고정리해야지
기존의 menu 에서 menu.html 을 따로 만들기
==> admin 페이지에서 상단 menu 를 만들 수 있게 하기
menu 테이블 생성
menu.html 수정하기
기존의 menu 목록들을 반복문으로 전체 출력할 수 있게 함
<th:block th:each="menu : ${menu}">
<li class="nav-item"><a class="nav-link me-lg-3" th:href="|@{/board(cate=${menu.cate})}|" th:text="${menu.catename}">catename</a></li>
</th:block>
페이지 로딩할 때 model 에 menu 오 add 해줘야 만 메뉴창에 값을 띄울 수 있음
@GetMapping("/board")
public String freeboard(UrlDTO urlDTO, Model model) {
List<Map<String, Object>> menu = indexService.menu();
model.addAttribute("menu", menu);
List<BoardDTO> board = indexService.board(urlDTO);
model.addAttribute("board", board);
// model.addAttribute("boardName", "자유게시판");
return "board";
}
※ 다른 menu 뜨는 모든 페이지에 menu 넣기
menu 추가하는 페이지 만들기
<form action="menu" method="post">
<div>
<input type="number" name="cate" placeholder="게시판 번호를 입력하세요"/>
<input type="text" name="catename" placeholder="게시판 이름을 입력하세요"/>
<input type="text" name="comment" placeholder="게시판 설명을 입력하세요"/>
<button type="submit">만들기</button>
</div>
</form>
Controller, Service, DAO 와 Mapper 까지 연결하여 Insert 해보기
// Controller
@PostMapping("/menu")
public String menu(@RequestParam Map<String, Object> map) {
int result = adminService.insertMenu(map);
return "redirect:/admin/menu";
}
// Service
public int insertMenu(Map<String, Object> map) {
return adminDAO.insertMenu(map);
}
// DAO
int insertMenu(Map<String, Object> map);
<insert id="insertMenu" parameterType="Map">
insert into menu
values (#{cate}, #{catename}, #{comment})
</insert>
AOP 사용해보기, 교제 446p
Util 패키지에 AOPConfig.class 파일 생성
@Component
// Controller, Service, Repository 가 아닌 Class 중 Bean 등록을 위한 class 는 Component 어노테이션 추가
@Aspect
public class AOPConfig {
}
@PointCut 으로 어떤 파일이 실행될 때 실행할 지 체크해보기
// com.solbum.web.controller 안의 모든 메소드가 실행될 때 실행
@Pointcut("execution(* com.solbum.web.controller.*.*(..))")
public void cut() {
}
@Before 으로 메소드 실행 전 수행 할 명령 추가 가능
@Before("cut()")
public void before(JoinPoint joinPoint) {
// board 메소드를 실행할 때
System.out.println("Before cut() : " + joinPoint.getSignature());
// Before cut() : String com.solbum.web.controller.IndexController.board(UrlDTO,Model)
System.out.println("Before cut() : " + joinPoint.getArgs());
// Before cut() : [Ljava.lang.Object;@3efa0e3b
System.out.println("Before cut() : " + joinPoint.getSourceLocation());
// Before cut() : org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint$SourceLocationImpl@303df794
}
MethodSignature 로 실행해보기
@Before("cut()")
public void before(JoinPoint joinPoint) {
// 실행되는 메소드 이름을 가져오고 출력
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
System.out.println("Before cut() : " + methodSignature.getName()); // board
System.out.println("Before cut() : " + methodSignature.getMethod());
// Before cut() : public java.lang.String com.solbum.web.controller.IndexController.board(com.solbum.web.dto.UrlDTO,org.springframework.ui.Model)
}
배열 확인해보기
Object[] args = joinPoint.getArgs();
System.out.println(Arrays.toString(args));
// [com.solbum.web.dto.UrlDTO@6bb71aa3,
// {urlDTO=com.solbum.web.dto.UrlDTO@6bb71aa3,
// org.springframework.validation.BindingResult.urlDTO=org.springframework.validation.BeanPropertyBindingResult: 0 errors}]
for (Object object : args) {
System.out.println("파라미터 타입 : " + object.getClass().getSimpleName());
// 파라미터 타입 : UrlDTO
// 파라미터 값 : com.solbum.web.dto.UrlDTO@312fa1df
System.out.println("파라미터 값 : " + object);
// 파라미터 타입 : BindingAwareModelMap
// 파라미터 값 : {urlDTO=com.solbum.web.dto.UrlDTO@312fa1df, org.springframework.validation.BindingResult.urlDTO=org.springframework.validation.BeanPropertyBindingResult: 0 errors}
}
@After 해보기, Before 과 같음
@After("cut()")
public void after(JoinPoint joinPoint) {
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
System.out.println("After cut() : " + methodSignature.getName()); // board
}
'Spring' 카테고리의 다른 글
240313 스프링 부트 (1) | 2024.03.13 |
---|---|
240312 스프링 부트 (0) | 2024.03.12 |
240308 스프링 부트 (1) | 2024.03.08 |
240307 스프링 부트 (0) | 2024.03.07 |
240306 스프링 부트 (1) | 2024.03.06 |