21.01.18 JSPCommunity 프로젝트(EL, JSTL도입, 회원가입,로그인 기능 추가(feat.form check()))

2021. 1. 18. 17:58JAVA/JSP Community 사이트 프로젝트

<UsrMemberController.java>

package com.sbs.example.jspCommunity.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sbs.example.jspCommunity.container.Container;
import com.sbs.example.jspCommunity.dto.Member;
import com.sbs.example.jspCommunity.service.MemberService;

public class UsrMemberController {

	private MemberService memberService;

	public UsrMemberController() {
		memberService = Container.memberService;
	}

	// 회원가입 폼
	public String doJoinForm(HttpServletRequest request, HttpServletResponse response) {
		return "usr/member/doJoinForm";
	}

	// 회원가입
	public String doJoin(HttpServletRequest request, HttpServletResponse response) {

		String loginId = request.getParameter("loginId");
		String loginPw = request.getParameter("loginPw");
		String name = request.getParameter("name");
		String nickname = request.getParameter("nickname");
		String email = request.getParameter("email");
		String cellPhoneNo = request.getParameter("cellPhoneNo");

		/* form check 도입으로 여기서 실행할 필요 없음
		 * // 정보가 하나라도 입력안되면 리턴 if (loginId == null || loginPw == null || name == null
		 * || nickname == null || email == null || cellPhoneNo == null) {
		 * request.setAttribute("alertMsg", "모든 정보를 입력하세요.");
		 * request.setAttribute("historyBack", true); // historyBack: 뒤로 돌아가기 return
		 * "common/redirect"; }
		 */

		List<Member> members = memberService.getMemberListForPrint();

		// 해당 loginId가 사용가능한지 중복확인
		for (int i = 0; i < members.size(); i++) {
			if (members.get(i).getLoginId().equals(loginId) == true) {
				request.setAttribute("alertMsg", "해당 아이디는 이미 사용중인 아이디입니다.");
				request.setAttribute("historyBack", true); // historyBack: 뒤로 돌아가기
				return "common/redirect";
			}
		}

		// 해당 nickname이 사용가능한지 중복확인
		for (int i = 0; i < members.size(); i++) {
			if (members.get(i).getNickname().equals(nickname) == true) {
				request.setAttribute("alertMsg", "해당 닉네임는 이미 사용중인 닉네임입니다.");
				request.setAttribute("historyBack", true); // historyBack: 뒤로 돌아가기
				return "common/redirect";
			}
		}

		Map<String, Object> joinArg = new HashMap<>();
		joinArg.put("loginId", loginId);
		joinArg.put("loginPw", loginPw);
		joinArg.put("name", name);
		joinArg.put("nickname", nickname);
		joinArg.put("email", email);
		joinArg.put("cellPhoneNo", cellPhoneNo);

		// 신규 회원가입
		int id = memberService.join(joinArg);

		// 생성 알림창 보여주고 회원정보로 이동하기
		request.setAttribute("alertMsg", id + "번 회원님 반갑습니다.");

		Member member = memberService.getMemberById(id);

		request.setAttribute("member", member);

		return "usr/member/doJoin";

	}

	// 로그인 폼
	public String doLoginForm(HttpServletRequest request, HttpServletResponse response) {
		return "usr/member/doLoginForm";
	}

	// 로그인
	public String doLogin(HttpServletRequest request, HttpServletResponse response) {
		String loginId = request.getParameter("loginId");
		String loginPw = request.getParameter("loginPw");

		/* form check 도입으로 여기서 실행할 필요 없음
		 * // 정보가 하나라도 입력안되면 리턴 if (loginId == null || loginPw == null) {
		 * request.setAttribute("alertMsg", "모든 정보를 입력하세요.");
		 * request.setAttribute("historyBack", true); // historyBack: 뒤로 돌아가기 return
		 * "common/redirect"; }
		 */

		Member member = memberService.getMemberByLoginId(loginId);

		// 해당 loginId가 등록된 id인지 확인
		if (member == null) {
			request.setAttribute("alertMsg", "해당 아이디는 없는 아이디입니다. 아이디를 확인하세요.");
			request.setAttribute("historyBack", true); // historyBack: 뒤로 돌아가기
			return "common/redirect";
		}

		// 해당 loginPw가 일치하는지 확인
		if (member.getLoginPw().equals(loginPw) == false) {
			request.setAttribute("alertMsg", "비밀번호가 틀렸습니다.");
			request.setAttribute("historyBack", true); // historyBack: 뒤로 돌아가기
			return "common/redirect";
		}


		// 로그인 알림창 보여주고 리스트로 이동
		request.setAttribute("alertMsg", loginId + " 회원님 반갑습니다.");
	//	request.setAttribute("replaceUrl", String.format("doLoginForm"));
	//	return "common/redirect";

		return "usr/member/doLogin";
	}

}

<doJoinForm.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:set var="pageTitle" value="신규 회원 가입" />
<%@ include file="../../part/head.jspf"%>
<h1>${pageTitle}</h1>

<form name="form" onsubmit="return check()" action="doJoin"
	method="POST">
	<span>로그인 ID</span>
	<br />
	<input type="text" name="loginId" maxlength="50" placeholder="ID 입력">
	<br />
	<span>로그인 PW</span>
	<br />
	<input type="password" name="loginPw" maxlength="50"
		placeholder="PW 입력">
	<br />
	<span>이름</span>
	<br />
	<input type="text" name="name" maxlength="50" placeholder="이름 입력">
	<br />
	<span>닉네임</span>
	<br />
	<input type="text" name="nickname" maxlength="50" placeholder="닉네임 입력">
	<br />
	<span>E-Mail</span>
	<br />
	<input type="email" name="email" maxlength="100"
		placeholder="이메일 주소 입력">
	<br />
	<span>연락처</span>
	<br />
	<input type="number" name="cellPhoneNo" maxlength="50"
		placeholder="연락처 입력">
	<br />
	<hr />
	<input type="submit" value="회원가입">
	<button type="button" onclick="history.back();">뒤로가기</button>

</form>

<script>
	function check() {

		if (form.loginId.value == "") {
			alert("ID를 입력해주세요.");
			form.loginId.focus();
			
			return false;
		}
		if (form.loginPw.value == "") {
			alert("PW를 입력해주세요.");
			form.loginPw.focus();
			
			return false;
		}
		if (form.name.value == "") {
			alert("이름을 입력해주세요.");
			form.name.focus();
			
			return false;
		}
		if (form.nickname.value == "") {
			alert("닉네임을 입력해주세요.");
			form.nickname.focus();
			
			return false;
		}
		if (form.email.value == "") {
			alert("e-mail을 입력해주세요.");
			form.email.focus();
			
			return false;
		}
		if (form.cellPhoneNo.value == "") {
			alert("연락처를 입력해주세요.");
			form.cellPhoneNo.focus();
			
			return false;
		}
		
		else return true;
	}
</script>


<%@ include file="../../part/foot.jspf"%>