팀프로젝트 5일차 

 

login

 

jsp

<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html>
<html>
<head>
    <title><spring:message code="login.title" /></title>
</head>
<link rel="stylesheet" href="css/login.css?ver=1.3">
<body>

    <div class="wrapper">
    	<div class="container">
    	
    	<div class="login"><strong>LogIn</strong></div>
    
    <div class="login-form">
    <p>
        <label>
        <input type="text" name="mno" placeholder="사번을 입력하세요" class="input" />
        </label>
    </p>
    <p>
        <label>
        <input type="password" name="password" class="input" placeholder="비밀번호를 입력하세요"/>
        </label>
    </p>
    <p>
    <div id="wrongIdPassword" class="errorText"></div>
    </p>

    <button class="btn" id="login"><strong>로그인</strong></button>
    	</div>
    	</div>
    </div>
    <script>   var rootPath = window.location.origin</script>
	<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
	<script src="${rootPath}/js/login.js"></script>
</body>
</html>

 

js

$(document).ready(function() {
	// 페이지 번호 링크를 클릭했을 때의 처리
	$('#login').click(function(event) {
		event.preventDefault(); // 기본 동작 중단
        var mno= $('input[name="mno"]').val();
        var password = $('input[name="password"]').val();
		var pageUrl = 'login'; 
		if(!mno || !password){
			$("#wrongIdPassword").text("아이디 또는 비밀번호를 적어주세요");
			return;
			
		}
		// AJAX 요청
		$.ajax({
			url: pageUrl,
			type: 'POST',
			data:{
				mno:mno,
				password: password
			},
			success: function(data) {
			
				if(data === true){
					window.location.href = 'main';
				}else{
				  $("#wrongIdPassword").text("아이디 또는 비밀번호가 틀립니다.");
				}
				
			},
			error: function() {
				// AJAX 요청이 실패한 경우 처리할 내용
				alert('오류가 발생했습니다.');
			}
		});
	});
});

 

css

* {
  margin: 0;
  padding: 0;
  
}

body {
  background: #292b2c;
  font-family: roboto;
  user-select: none;
}

.container {
  width: 450px;
  margin: 30px auto;
  position: absolute;
    top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
}

.signup,
.login {
  width: 100%;
  background: #fff;
  float: left;
  height: 60px;
  line-height: 60px;
  text-align: center;
  cursor: pointer;
  text-transform: uppercase;
  
  font-size: 30px;
}

.signup-form,
.login-form {
  background: #fff;
  padding: 40px;
  clear: both;
  width: 100%;
  box-sizing: border-box;
  height: 400px;
}

.input {
  width: 100%;
  padding: 15px;
  box-sizing: border-box;
  margin-bottom: 15px;
  border: 2px solid #e9eaea;
  color: #3e3e40;
  font-size: 14px;
  outline: none;
  transform: all 0.5s ease;
}

.input:focus {
  border: 2px solid #34b3a0;
}

.btn {
  width: 100%;
  background: #292b2c;
  height: 60px;
  text-align: center;
  line-height: 60px;
  text-transform: uppercase;
  color: #fff;
  font-weight: bold;
  letter-spacing: 1px;
  cursor: pointer;
  margin-bottom: 30px;
  margin-top: 50px;
  font-size: 15px;
}

span a {
  text-decoration: none;
  color: #000;
}

::-webkit-input-placeholder {
  /* Chrome/Opera/Safari */
  color: #3e3e40;
  font-family: roboto;
}
::-moz-placeholder {
  /* Firefox 19+ */
  color: #3e3e40;
  font-family: roboto;
}
:-ms-input-placeholder {
  /* IE 10+ */
  color: #3e3e40;
  font-family: roboto;
}
:-moz-placeholder {
  /* Firefox 18- */
  color: #3e3e40;
  font-family: roboto;
}

/* youtube link */
.youtube {
  position: fixed;
  bottom: 10px;
  right: 10px;
  width: 160px;
  text-align: center;
  padding: 15px 10px;
  background: #bb0000;
  border-radius: 5px;
}

.youtube a {
  text-decoration: none;
  color: #fff;
  text-transform: capitalize;
  letter-spacing: 1px;
}
.errorText{
	color: red;
}

 

 

 

사원등록_ null ( 빈 값 ) 체크_ 

JSP

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>사원 등록</title>
</head>
<link rel="stylesheet" href="css/join.css?ver=1.3">
<body>

<div class="infoBar">
<h1>사원 정보 등록</h1>
<hr>
</div>


<form:form action="" method="post" modelAttribute="member" id="joinForm">
<div class="loginForm">

<p>
<label>이름:<br/>
<form:input path="name" />
<div id="messageDivId" class="errorText"></div>
</label>
</p>

<p>
<label>핸드폰 번호:<br/> 
<form:input path="phone" id="phone"/>
<div id="messageDivPass" class="errorText"></div>
</label>
</p>

<p>
<label>비밀번호:<br/>
<form:input style="border:none" path="password" id="password" readonly="true" />
</label>
</p>

<p>
<label>사번<br/> 
<form:input style="border:none" path="mno" readonly="true"/> <!-- 다음 사번 자동으로 가져오기 -->
</label>
</p>

<p>
        <label for="job">직위 선택:</label>
        <form:select path="job" id="job">
       		<option selected value="">---직위 선택---</option>
            <form:option value="사원">사원</form:option>
            <form:option value="주임">주임</form:option>
            <form:option value="대리">대리</form:option>
            <form:option value="과장">과장</form:option>
            <form:option value="부장">부장</form:option>
        </form:select>
        <div id="joberror" class="errorText"></div>
</p>

<p>
        <label for="deptno">부서 선택:</label>
        <form:select path="deptno" id="deptno">
        	<option selected value="">---부서 선택---</option>
            <form:option value="1">전산팀</form:option>
            <form:option value="2">인사팀</form:option>
            <form:option value="3">영업팀</form:option>
            <form:option value="4">경영기획팀</form:option>
        </form:select>
        <div id="deptnoerror" class="errorText"></div>
</p>

<input type="submit" value="등록" id="buttonS">
</div>
</form:form>


	<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
	<script src="js/join.js"></script>




</body>
</html>

 

CSS






  /* 폼 요소 스타일 */
  label {
    display: block;
    
    
  }
  
.errorText{
	color: red;
}
  
  hr {
  border: none;
  border-top: 2px solid #333; /* 수평선 색상 및 두께 지정 */
  margin: 10px 0; /* 수평선 위아래 여백 지정 */
  width : 270px;
}



  input[type="text"], select {
    
    
    
    border: 1px solid #ccc;
    border-radius: 3px;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  }
	
  input[type="submit"] {
    background-color: #333;
    color: #fff;
    padding: 10px 20px;
    border: none;
    border-radius: 3px;
    cursor: pointer;
  }
  
  input[type="submit"]:hover {
	  
	background-color: #5f5e5e; /* 호버 시 배경색 변경 */
    
	  
  }

 

JS


    
    
    
    // 회원 가입 null 빈칸 체크
$(document).ready(function() {
    $("#buttonS").click(function(event) { // 버튼의 id인 "buttonS"를 사용
        event.preventDefault(); // 기본 동작 중단

        // 입력값 확인
        var name = $("input[name='name']").val();
        var phone = $("input[name='phone']").val(); // 'phone'으로 수정
        var job = $("#job").val(); // 'job'은 select 요소의 id
        var deptno = $("#deptno").val(); // 'deptno'은 select 요소의 id

        if (!name) {
             $("#messageDivId").text("이름을 입력하세요.");
            return;
        }else {
			$("#messageDivId").text("");
		}
		
		if (!phone) {
             $("#messageDivPass").text("핸드폰번호를 입력하세요.");
            return;
        }else {
			$("#messageDivPass").text("");
		}
		
		if (!job) {
             $("#joberror").text("직위를 선택하세요.");
            return;
        }else {
			$("#joberror").text("");
		}
		
		if (!deptno) {
             $("#deptnoerror").text("부서를 선택하세요.");
            return;
        }else {
			$("#deptnoerror").text("");
		}
        
  
        $.ajax({
            type: "POST", // GET에서 POST로 변경
            url: "/joinForm", // GET에서 POST로 변경
            data: $("form").serialize(),
            success: function(response) {
                // 회원가입 완료 후 알림 표시
                alert("사원 등록 완료");
                // 로그인 페이지로 이동
               	 $('.mainView').html(response);
            },
            error: function(xhr, status, error) {
                alert("회원가입 중 오류가 발생했습니다. 다시 시도해주세요.");
            }
        });
    });
});


$(document).ready(function() {
    // 핸드폰 번호 입력 필드와 비밀번호 입력 필드의 ID 설정
    var phoneField = document.getElementById("phone");
    var passwordField = document.getElementById("password");

    // 핸드폰 번호 입력 필드의 'input' 이벤트 핸들러 등록
    phoneField.addEventListener("input", function() {
        var phoneNumber = phoneField.value;
        
        // 입력 값을 숫자만 남기고 나머지는 제거
        var cleanedPhoneNumber = phoneNumber.replace(/\D/g, "");

        // 특정 패턴에 맞게 번호를 다시 포맷
        if (cleanedPhoneNumber.length >= 3 && cleanedPhoneNumber.length <= 6) {
            cleanedPhoneNumber = cleanedPhoneNumber.substring(0, 3) + "-" + cleanedPhoneNumber.substring(3);
        }
        else if (cleanedPhoneNumber.length >= 7) {
            cleanedPhoneNumber = cleanedPhoneNumber.substring(0, 3) + "-" + cleanedPhoneNumber.substring(3, 7) + "-" + cleanedPhoneNumber.substring(7);
        }

        // 변경된 번호를 입력 필드에 설정
        phoneField.value = cleanedPhoneNumber;

        // 비밀번호 필드에 마지막 4자리를 설정
        var last4Digits = cleanedPhoneNumber.replace(/\D/g, "").slice(-4);
        passwordField.value = last4Digits;
    });
});

 

Controller

package com.study.springboot.controller;

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

import com.study.springboot.member.dao.MemberDao;
import com.study.springboot.member.model.Member;

import lombok.extern.slf4j.Slf4j;

@Controller
@RequestMapping("/joinForm")
@Slf4j
public class JoinController {
	
    @Autowired
    private MemberDao memberDao;
    
    
    
    @GetMapping
    public String showRegisterForm(Model model) {
    	
    	Member member = new Member();
    	
    	Long nextMno = (long) memberDao.getNextMno();
    	member.setMno(nextMno);
    	
    	
        model.addAttribute("member", member);
        return "/member/joinForm"; // 회원 등록 폼을 표시할 뷰 페이지의 이름
    
    
    }

    @PostMapping
    public String registerMember(Member member) {
        memberDao.insertMember(member);
        return "/member/joinForm";
    }
	
}

 

 

 

'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글

2023-09-13 82일차  (0) 2023.09.13
2023-09-12 81일차  (0) 2023.09.12
2023-09-08 79일차  (0) 2023.09.08
2023-09-07 78일차  (0) 2023.09.07
2023-09-06 77일차  (0) 2023.09.06

+ Recent posts