이전 페이지 >>
Spring-Boot Blog Project 7. 글쓰기 구현하기
이제 홈페이지에 접속할때는 세션을 통해 인증이 없으면 로그인을 반드시 하도록 유도할 것이다.
옵션을 통해 /post나 /user 등의 주소를 가지고 있다면 세션 인터셉터를 거쳐 세션이 없다면 로그인을 유도할 것이다
세션 인터셉터에 대한 포스트
https://itstudy-mary.tistory.com/211
/config/WebConfig.java
package com.mary.blog.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.mary.blog.config.aop.RoleIntercepter;
import com.mary.blog.config.aop.SessionIntercepter;
@Configuration
public class WebConfig implements WebMvcConfigurer{ // implements WebMvcConfigurer 하면 web.xml 파일됨
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 다른곳에서 사용 하지 않아서 굳이 IOC 할 필요 없음
registry.addInterceptor(new SessionIntercepter())
.addPathPatterns("/user/**")
.addPathPatterns("/post/**")
.addPathPatterns("/post**");
registry.addInterceptor(new RoleIntercepter()).addPathPatterns("/admin/**");
}
}
그리고, /나 ""을 받는 indexcontroller을 post로 이동시키면,
/controller/IndexController.java
--중략--
@GetMapping({"","/"})
public String index() {
return "redirect:/posts";
}
--하략--
주소패턴에 걸리면 세션 인증을 거치게 된다.
이제 이 주소를 받으면 게시글 값을 모두 노출시키는 로직을 생성한다.
/controller/PostController.java
--중략--
@GetMapping("/posts")
public String getPosts(Model model){ //model 데이터 담고 이동할때 사용 (Requestdispatcher)
model.addAttribute("posts", postService.목록보기());
return "index";
}
--하략--
모델은 데이터를 담아가는 일종의 바구니로, 마치 jsp의 RequestDispatcher처럼 데이터를 담고 이동해줄 것이다.
이제 정보를 이동시켜보자.
/service/PostService.java
--중략--
@Transactional(readOnly = true)
public List<Post> 목록보기() {
return postRepository.findAll();
}
--하략--
/repository/PostRepository.java
package com.mary.blog.repository;
import java.util.List;
import com.mary.blog.controller.dto.PostDetailRespDto;
import com.mary.blog.model.Post;
public interface PostRepository {
public void save(Post post);
public List<Post> findAll();
}
이제 정보를 가지고 올 xml을 만든다.
post.xml
<select id="findAll" resultType="com.mary.blog.model.Post">
SELECT * FROM post ORDER BY id DESC
</select>
마지막으로, 메인 홈페이지에 데이터를 출력한다.
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@include file="layout/header.jsp" %>
<div class="container">
<table class="table table-striped">
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>작성일</th>
</tr>
</thead>
<tbody>
<c:forEach var="post" items="${posts}">
<tr>
<td>${post.id }</td>
<td><a href="/post/${post.id}">${post.title }</a></td>
<td><fmt:formatDate value="${post.createDate }" pattern="yyyy-mm-dd"/></td>
</tr>
</c:forEach>
<tr>
</tbody>
</table>
</div>
<%@include file="layout/footer.jsp" %>
반응형
'SpringBoot' 카테고리의 다른 글
Spring-Boot Blog Project 10. 삭제에 작성자 확인해서 권한 부여하기 (0) | 2020.07.27 |
---|---|
Spring-Boot Blog Project 9. 상세페이지 구현, 수정 삭제 구현 (0) | 2020.07.27 |
Spring-Boot Blog Project 7. 글쓰기 구현하기 (0) | 2020.07.27 |
Spring-Boot Blog Project 6. 로그아웃 구현하기 (0) | 2020.07.27 |
Spring-Boot Blog Project 5. 권한, 인증 체크하기 (0) | 2020.07.27 |