습관제작소

22-09-07 JavaSpringBoot 로그인 실습(HTML), 회원목록(JSP) 본문

SMHRD or ITSchool/JavaSpring and Boot

22-09-07 JavaSpringBoot 로그인 실습(HTML), 회원목록(JSP)

KUDO 2022. 9. 16. 10:14

1. 로그인 실습

- BoardController.java

package com.smhrd.controller;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.smhrd.domain.Member;
import com.smhrd.mapper.MemberMapper;

@Controller
public class MemberController {

    @Autowired
    private MemberMapper mapper;

    @RequestMapping("/goJoin.do")
    public String goJoin() {


        return "view/join"; // Scan 만들자!!!

    }


    @RequestMapping("/logout.do")
    public String logout() {


        return "index"; 

    }


    @RequestMapping("/login.do")
    public String login(Member member, HttpSession session) {

        System.out.println(member);

        Member info = mapper.login(member);

        session.setAttribute("info", info);
        System.out.println(info);

        if(info!=null) {
            return "view/main";
        }else {
            return "index";
        }


    }



    @RequestMapping("/join.do")
    public String join(Member mamber, Model model) {

        // 1. 파라미터 수집

        // 2. SQL쿼리 정의. mapper interface에 메서드 만들기

        // 3. 메서드 사용
        int cnt=mapper.join(mamber);
        // 4. 다음 view 리턴
        if(cnt > 0) {
            // 성공
            return "index";
        }else {
            // 실패
            return "view/join";
        }

    }

}

- MemberMapper.java

package com.smhrd.mapper;

import org.apache.ibatis.annotations.Mapper;

import com.smhrd.domain.Member;

@Mapper
public interface MemberMapper {

    public int join(Member member);  // < 집어 넣어줄게 있기 때문에 member넣기

    public Member login(Member member);

}

- Member.java

package com.smhrd.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Member {

    private String id;
    private String pw;
    private String nick;
    private String address;

}

- MemberMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.smhrd.mapper.MemberMapper"> <!-- << 찾아야할 클래스 경로를 제대로 확인 -->

<insert id="join" parameterType="com.smhrd.domain.Member" >
    insert into member
    values(#{id}, #{pw}, #{nick}, #{address})
</insert>


<select id="login" resultType="com.smhrd.domain.Member" parameterType="com.smhrd.domain.Member">
    select * from member where #{id}=id and #{pw}=pw
</select>





</mapper>

- main.html

<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>


    <h1>[[${session.info.id}]]님 환영합니다.</h1>
    <a href="logout.do">로드아웃</a>




</body>
</html>

- index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> 로그인 페이지 </h1>
<form action="login.do" method="post">
    ID : <input type="text" name="id">
    <br>
    PW : <input type="text" name="pw">
    <br>
    <br>
    <button>로그인</button></form>
    <br>
    <p>아이디가 없다면 <a href="goJoin.do">회원가입</a></p>

</body>
</html>

2. 회원목록(JSP)

HTML 과 JSP 사용 차이

  • Thymeleaf를 제외하고 선택하여 프로젝트 생성

  • 복사해서 pom.xml dependency 추가하기 < version >은 지우고 저장


- application.properties

server.port=8050

# DBCP 설정
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mysql
spring.datasource.username=root
spring.datasource.password=12345

#mapper.xml 위치 지정
mybatis.mapper-locations=/mapper/**/**.xml

#view resolver 설정
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

- SpringBoot03Application.java

package com.smhrd.application;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@MapperScan("com.smhrd.mapper")
@ComponentScan("com.smhrd.controller")
@SpringBootApplication
public class SpringBoot03Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringBoot03Application.class, args);
    }

}

- MemberController.java

package com.smhrd.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.smhrd.domain.Member;
import com.smhrd.mapper.MemberMapper;

@Controller
public class MemberController {    

    @Autowired
    private MemberMapper mapper;


    @RequestMapping("/")
    public String memberList(Model model) {
        List<Member> list = mapper.memberList();

        model.addAttribute("list", list);


        return "MemberList";   // WEB-INF/views/MemberList.jsp 로 자동 완성
    }
}

- MemeberMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.smhrd.mapper.MemberMapper">


<select id="memberList" resultType="com.smhrd.domain.Member">
    select * from member
</select>


</mapper>

- MemberList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

    <h1>회원 목록</h1>
    <table>


                <tr>
                    <td>ID</td>
                    <td>NICK</td>
                    <td>ADDRESS</td>
                </tr>
    <c:forEach var="list" items="${list}">
                <tr>
                    <td>${list.id}</td>
                    <td>${list.nick}</td>
                    <td>${list.address}</td>
                </tr>
    </c:forEach>
    </table>    

</body>
</html>

Comments