[신세계I&C KDT][Spring Boot] #41 ShopMiniMall 부트로 만들기 (0613)

박현아·2024년 7월 1일
0

신세계아이앤씨 KDT

목록 보기
45/56

1. 의존성 설정 - 현재는 9개

              <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-devtools</artifactId>
		</dependency>
	<dependency>
		<groupId>org.apache.tomcat.embed</groupId>
		<artifactId>tomcat-embed-jasper</artifactId>
		<scope>provided</scope>
	</dependency> 
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jstl</artifactId>
	</dependency>
	<dependency>
		    <groupId>org.mybatis.spring.boot</groupId>
		    <artifactId>mybatis-spring-boot-starter</artifactId>
		    <version>2.1.4</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
		    <groupId>mysql</groupId>
		    <artifactId>mysql-connector-java</artifactId>
		    <version>8.0.33</version>
		</dependency>
                	<dependency>
	    <groupId>org.webjars</groupId>
	    <artifactId>jquery</artifactId>
	    <version>3.7.1</version>
	</dependency>
        <!-- https://mvnrepository.com/artifact/org.webjars/bootstrap -->
	<dependency>
	    <groupId>org.webjars</groupId>
	    <artifactId>bootstrap</artifactId>
	    <version>5.3.3</version>
	</dependency>
	<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
	</dependency>

2. 내장톰캣 port 번호와 context명 변경 및 JSP 설정

    # tomcat port 번호 변경
	server.port=8090

	# context 명 변경
	server.servlet.context-path=/shop

	# jsp의 경로와 확장자 지정
	spring.mvc.view.prefix=/WEB-INF/views/
	spring.mvc.view.suffix=.jsp

3. mysql 연동 설정 및 mybatis 별칭, Mapper 등록

 #  DB 연동위한 4가지 정보 설정
	spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
	spring.datasource.url=jdbc:mysql://localhost:3306/shop
	spring.datasource.username=shop
	spring.datasource.password=shop


	# 별칭
	mybatis.type-aliases-package=com.exam.dto
	# mapper 등록
	mybatis.mapper-locations=com/exam/config/*Mapper.xml

4. 이전 MainServlet 역할의 MainController 작성

@Controller
public class MainController {
	
	Logger logger = LoggerFactory.getLogger(getClass());
	
	GoodsService goodsService;
	
	public MainController(GoodsService goodsService) {
		this.goodsService = goodsService;
	}


	@GetMapping("/main")
	public String main(@RequestParam(required = false, defaultValue = "top") String gCategory,
			           ModelMap m) {
		
		List<GoodsDTO> goodsList = goodsService.goodsList(gCategory);
		m.addAttribute("goodsList", goodsList);
		return "main";
	}
}

5. main.jsp 에서 bootstrap과 jquery를 webJar로 변경

   <link rel="stylesheet"  href="webjars/bootstrap/5.3.3/css/bootstrap.min.css" >
   <script src="webjars/jquery/3.7.1/jquery.min.js"></script>

6. 회원가입

이전 MemberUIServlet 역할의 MemberController 작성

7. memberForm.jsp 에서 jquery를 webJar로 변경

  <script src="webjars/jquery/3.7.1/jquery.min.js"></script>

8. id 중복체크

이전 MemberIdCheckServlet 역할의 MemberController 작성

  @GetMapping("/idCheck")
	public @ResponseBody  String idCheck(@RequestParam String userid) {
		MemberDTO dto = memberService.idCheck(userid);
		String mesg = "사용가능";
		if(dto!=null) {
			mesg = "사용불가";
		}
		return mesg;
	}

9. 회원등록시 비번 유효성 체크

  • 양방향 바인딩
      Controller ---------------------> JSP
                 <---------------------

10. 로그인 화면보기

이전 LoginUIServlet 역할의 LoginController 작성

11. 로그인 처리

 @Controller
	@SessionAttributes(names = {"login"})
	public class LoginController {

          @PostMapping("/login")
	public String login(@RequestParam Map<String, String> m, 
			           ModelMap model) {
		
		MemberDTO dto = memberService.login(m);
		
		if(dto!=null) {
			// 세션에 저장
			model.addAttribute("login", dto);  // sesssion scope에 저장
			return "redirect:main";
		}
		model.addAttribute("errorMessage", "아이디 및 비번 확인 필요."); // request scope에 저장
		return "loginForm";
	}

13. 로그아웃

이전 LogoutServlet 역할의 LoginController 작성

이전 session.invalidate(); 는 다음코드가 대체한다

        @GetMapping("/logout")
	public String logout(SessionStatus status) {
		status.setComplete();
		return "redirect:main";
	}

14. mypage

이전 MyPageServlet 역할의 MemberController 작성

inky4832@daum.net ( github owner )
inky4833@gmail.com ( 협력자 )

0개의 댓글