오늘은 예전에 연결 되었던 DB를 연결하여 로그인 기능을 구현해보도록 하겠습니다.
일단 mybatis라는 라이브러리를 사용하여 구현해 보도록 하겠습니다.

pom.xml 에 추가 해 주시고요.
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>

스프링 사용하는 버전도 바꿔 보겠습니다.
자 이제

views 폴더에 common 폴더를 만들어주시고 LoginPage.jsp 를 만들어 줍니다.
jsp 소스는
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
<style>
form{
text-align: center;
margin:0 auto;
}
.border{
margin:0 auto;
width:400px;
height:500px;
border:1px solid #000;
border-radius: 10%;
}
img{
margin-top:20px;
margin-bottom:80px;
}
input{
width:300px;
}
</style>
</head>
<body>
<form action ="/Login" method="post">
<div class="border">
<h1>로그인</h1>
<img src ="/images/profle.jpg"><br>
<input type="text" name="id" id="id" placeholder="아이디를 입력해주세요."><br>
<input type="password" name="password" id="password" placeholder="비밀번호를 입력해주세요."><br><br>
<input type="submit" value="로그인">
</div>
</form>
</body>
</html>
자 이제 root-servlet 안에 mybatis 를 쓴다는 설정을 해줘야 해요.

위치는 여기에 있고요. 밑에는 소스 코드를 복사해서 붙여 놓기 해주시면 되겠습니다. (저번시간과 같은 DB url, id, pw 사용하였습니다.)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<!-- 베이스가 되는 패키지 이름 -->
<context:component-scan base-package="com.spring.example"></context:component-scan>
<mybatis-spring:scan base-package="com.spring.example"/>
<context:annotation-config></context:annotation-config>
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="0000" />
</bean>
<!-- 커넥션폴 설정 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:mybatis-config.xml" />
<property name="mapperLocations" value="classpath:mapper/**/*.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref= "sqlSessionFactory"></constructor-arg >
</bean>
</beans>
자, 이제 mybatis 라는 애들 사용하여 DB에 있는것을 사용하는 SQL 를 작성해 보곘습니다.

resource 라는 곳에 mapper 폴더에 common 폴더를 만들어주시고 Member.xml 를 만들어 주세요.
또 resource 폴더에 myvatis-config.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="Member">
<select id="Login" parameterType="MemberVO" resultType="Int">
SELECT COUNT(*)
FROM USER
WHERE ID = #{id}
AND PASSWORD = #{password}
</select>
</mapper>
Member.xml 에는 이 소스를 넣어주시고요.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0/EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="MemberVO" type="com.spring.example.VO.MemberVO" />
</typeAliases>
</configuration>
mybatis-config.xml에는 이 것을 넣어줍니다.

자, 이제 자바소스를 만들어보겠습니다.
패키지로 com.spring.example. dao , com.spring.example.Login , com.spring.example.service, com.spring.example.serviceImpl, com.spring.example.VO 를 만들어주고 각각 폴더에
MemberDao 클래스 , LoginController 클래스, MemberService 인터페이스, MemberServiceImple 클래스 , MemberVO 클래스 를 넣만들어줍니다.
MemberDao 클래스 에는 이 소스를 넣어주시고
package com.spring.example.dao;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.spring.example.VO.MemberVO;
@Repository
public class MemberDao {
@Autowired
private SqlSessionTemplate mybatis;
public int Login(MemberVO vo) throws Exception {
return mybatis.selectOne("Member.Login", vo);
}
}
LoginController 클래스에는
package com.spring.example.Login;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.spring.example.VO.MemberVO;
import com.spring.example.serviceImpl.MemberServiceImpl;
@Controller
public class LoginController {
private static final Logger logger = LoggerFactory.getLogger(LoginController.class);
@Autowired
private MemberServiceImpl memberServiceImpl;
@RequestMapping(value = "/Login", method = RequestMethod.GET)
public String LoginPage() {
return "/common/LoginPage";
}
@RequestMapping(value = "/Login", method = RequestMethod.POST)
public String Login(@RequestParam("id") String id
, @RequestParam("password") String password) throws Exception {
String path = "";
MemberVO vo = new MemberVO();
vo.setId(id);
vo.setPassword(password);
int result = memberServiceImpl.Login(vo);
if(result == 1) {
path = "home";
} else {
path = "/common/LoginPage";
}
return path;
}
}
MemberService에는
package com.spring.example.service;
import com.spring.example.VO.MemberVO;
public interface MemberService {
public int Login(MemberVO vo) throws Exception;
}
MemberServiceImpl에는
package com.spring.example.serviceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.spring.example.VO.MemberVO;
import com.spring.example.dao.MemberDao;
import com.spring.example.service.MemberService;
@Service
public class MemberServiceImpl implements MemberService{
@Autowired
private MemberDao memberDao;
@Override
public int Login(MemberVO vo) throws Exception {
return memberDao.Login(vo);
}
}
MemberVO 에는
package com.spring.example.VO;
public class MemberVO {
private String id;
private String password;
// getter, setter
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
// 생성자
public MemberVO() {
}
// to String
@Override
public String toString() {
return "MemberVO [id=" + id + ", password=" + password + "]";
}
}
를 넣어줍니다.
그리고 사진 이 하나 추가 되었으므로

이 경로로 넣어주시면 되겠습니다.
db는 터미널에 명령해도 되고 DB툴을 이용하여 넣어주도록하겠습니다. 저는 mysql workbench를 이용하여 넣어 봤습니다.
mysql workbench 는 윈도우는 mysql 설치 시 다운이 자동으로 되어있고 맥은
https://dev.mysql.com/downloads/workbench/
MySQL :: Download MySQL Workbench
Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Red Hat Enterprise Linux / Oracle Linux Fedora macOS Source Code Select OS Version: All Windows (x86, 64-bit) Recommended Download: Other Downloads: Windows (x86, 64-bit), MSI
dev.mysql.com
설치가 가능하고 다 다음버튼을 누르는 식으로 하면 다운로드가 됩니다.

mysql 첫화면인데 여기서 MYSQL Connections 에 + 버튼을 눌러 주세요.

맨위에 Connection Name은 구별하기 쉽게(다른프로젝트 랑) 해주세요 저는 test로 헀습니다.
Test Connection을 누르고 root 비밀번호를 누르면

성공메세지가 뜨면 성공
Ok 버튼 후 생긴곳에 들어가게 된후 디비를 작성할수 있게 됩니다.
디비 작성시 스키마를 확인해주세요~ (저희가 사용할 스키마에 넣어야 합니다.)

왼쪽에 보이는게 스키마이고 굵은 글씨로 써져있어야 데이터가 그곳으로 들어가게 됩니다.
create table user(
id varchar(100) primary key,
password varchar(100)
);
insert into user values( 'admin', '1234' );
commit;
소스를 작성후
저장 버튼 옆에 번개모양 버튼을 눌러주시면 잘 들어가게 됩니다.
서버를 실행해 보겠습니다.

메인화면에서 오른쪽 상단에 로그인 버튼을 눌러주시면 로그인페이지로 가게 됩니다.

로그인 페이지에서 유저 정보가 아까 전에 넣었던 ID : admin , PW : 1234 가 맞기 않으면 로그인 페이지에 있고 맞게 되면 메인화면으로 가게 됩니다.
============================= Q&A =============================

제가 프로젝트 과정을 올리면서 안올라간 부분이 있었네요
제 프로젝트 경우에는 home.jsp 에 href="/login"이라는 것을 추가하여 실행하였습니다.

만약에 제가 올린 프로젝트를 기반으로 커스텀 프로젝트 일경우에는 로그인 페이지로 설정되 path를 설정해주시면 원하는 로직대로 작동합니다.
'프로그래밍 > 스프링(spring)' 카테고리의 다른 글
[스프링/spring] 스프링 시큐리티적용 ( Spring-security) (0) | 2020.04.12 |
---|---|
[스프링/spring] 스프링 시큐리티 (spring security) - DB 사용안함 (0) | 2020.04.12 |
[스프링/java] 스프링 메인화면 만들어 보기 (2) | 2020.04.12 |
[스프링/spring] 스프링 데이터베이스(DB) 연결 (0) | 2020.04.12 |
[스프링/spring] 스프링 첫 프로젝트 만들기 (0) | 2020.04.12 |