JSP - 회원과 관련된 모든 것을 core태그(JSTL)로 바꾸기 (2022-10-13)

2022. 10. 13. 23:263층 1구역 - 개발의 장/JSP

1.서론

 

이전에 진행했던 회원제(?) 게시판 에서 로그인을 비롯한 회원과 관련된 정보들을 전부 JSTL로 바꿔보도록 하자.

 

JSP에서 작성한 게시물은 요기!

2022.09.29 - [3층 - 개발의 장/JSP] - JSP - 간단한 게시판 구현하기(외전) - MemberDAO,DTO (2022-09-29)

 

JSP - 간단한 게시판 구현하기(외전) - MemberDAO,DTO (2022-09-29)

1. 서론 보통 이건 관련 내용 설명하면서 제시하는데 그냥 올려두겠다 2. 본론 MemberDTO.java package session_quiz; /* 테이블 이름 : session_quiz 테이블 컬럼 : 아래의 멤버필드를 참고하여 생성, 크기는 자..

sukw9512.tistory.com

2022.09.29 - [3층 - 개발의 장/JSP] - JSP - 간단한 게시판 구현하기(2) - 회원가입, Login & Logout (2022-09-29)

 

JSP - 간단한 게시판 구현하기(2) - 회원가입, Login & Logout (2022-09-29)

1. 서론 이번에는 회원가입과 더불어 로그인, 로그아웃을 구현해 보자. 2. 본론 2-1. 회원가입 register.jsp(전체 코드) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%..

sukw9512.tistory.com

2022.09.29 - [3층 - 개발의 장/JSP] - JSP - 간단한 게시판 구현하기(3) - 회원정보 열람 및 수정,삭제 (2022-09-29)

 

JSP - 간단한 게시판 구현하기(3) - 회원정보 열람 및 수정,삭제 (2022-09-29)

1. 서론 이번엔 관리자와 유저간의 어느 한 경계선에서 줄타기를 해볼 거다. 무슨 말이냐면 회원정보 열람 수정, 삭제를 구현해볼 거란 이야기 이다. 2. 본론 여기도 데이터베이스는 들어가니 여

sukw9512.tistory.com

 

2.본론

먼저 index부터 손보도록 하자.

 

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
	<%@ include file="/otherTag/header.jsp" %>
	<%@ include file="/otherTag/main.jsp" %>
	<%@ include file="/otherTag/footer.jsp" %>
</body>
</html>

위 코드는 <%@ include file=""%> 로 짜여져 있는데... 이걸...

 

<%@ 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>index</title>
</head>
<body>

	<c:import url="/otherTag/header.jsp" />
	<c:import url="/otherTag/main.jsp" />
	<c:import url="/otherTag/footer.jsp" />
</html>

위 코드처럼 바꾸고 진행하도록 하겠다.

다른 점을 간단하게 말하자면 <c:import url="" />은 거기에 속한 HTML 값 정도만 끌어온다.

예를 들자면, header에서 변수를 member라고 부여해줬는데 main에서도 member라고 지정해야 할 일이 생겨버렸다.

그럴 경우 <%@ include file=""%> 이걸로 include를 해왔다면 모든 코드를 전부 긁어오는 개념이기 때문에 member라는 변수가 충돌이 일어날 것이다.

 

그걸 방지하기 위해 <c:import urt="" />로 바꿔준다.(그리고 core태그를 배웠으면 한번 쯤 써봐야지...)

그거 말고도 외부자원을 끌어올 수도 있다.

 

먼저 DAO와 DTO는 동일한 코드를 사용할 것이다.

코드는 요기서!!!

 

2022.09.29 - [3층 - 개발의 장/JSP] - JSP - 간단한 게시판 구현하기(외전) - MemberDAO,DTO (2022-09-29)

 

JSP - 간단한 게시판 구현하기(외전) - MemberDAO,DTO (2022-09-29)

1. 서론 보통 이건 관련 내용 설명하면서 제시하는데 그냥 올려두겠다 2. 본론 MemberDTO.java package session_quiz; /* 테이블 이름 : session_quiz 테이블 컬럼 : 아래의 멤버필드를 참고하여 생성, 크기는 자..

sukw9512.tistory.com

 

2-1. header.jsp

 

먼저 header부터 바꿔보자

 

먼저 이전 코드

<style type="text/css">
	a {text-decoration: none; color:black;}
	ul {padding: 20px;}
	ul li {display: inline; padding: 15px;}
	.main_div{height:150px;}
</style>

<div align="center">
	<h1>CARE LAB</h1>
</div>

<div align="right">
	<hr>
	<ul>
		<li><a href="index.jsp">HOME</a></li>
		<li><a href="register.jsp">Register</a></li>
		<% if(session.getAttribute("id") == null){%>
			<li><a href="login.jsp">Login</a></li>
		<%}else{ %>
			<li><a href="memberInfo.jsp">MemberInfo</a></li>
			<li><a href="logout.jsp">Logout</a></li>
			<li><a href="boardForm.jsp">Board</a></li>
		<%} %>
	</ul>
	<hr>
</div>

위 코드에서 바꿔서 표현해야 할 것은

<% if(session.getAttribute("id") == null){%>

<%}else{ %>

<%} %>

if-else의 코드를 jstl 코드로 변환시켜 줘야 한다.

 

위 코드는 만약 id의 세션값이 null이라면 라는 뜻의 if-else니까....

 

c태그에서 가장 비슷한건 <c:choose>, <c:when>, <c:otherwise>가 가장 비슷할 거 같다.

보통 이 c태그들은 switch-case문과 비슷하다고 많이들 얘기하는데 필자 입장에서는 if-else문과 비슷한 느낌이다.

 

어쨋든 <c:when>에 조건을 넣어야 하니까

<c:when test="${empty sessionScope.id }">라는 조건을 넣어 if(session.getAttribute("id") == null)와 동일한 환경을 만들어준다.

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<style type="text/css">
	a {text-decoration: none; color:black;}
	ul {padding: 20px;}
	ul li {display: inline; padding: 15px;}
	.main_div{height:150px;}
</style>

<div align="center">
	<h1>CARE LAB</h1>
</div>

<div align="right">
	<hr>
	<ul>
		<li><a href="index.jsp">HOME</a></li>
		<c:choose>
			<c:when test="${empty sessionScope.id }">
			<li><a href="register.jsp">Register</a></li>
			<li><a href="login.jsp">Login</a></li>
			</c:when>
			<c:otherwise>
			<li><a href="memberInfo.jsp">MemberInfo</a></li>
			<li><a href="logout.jsp">Logout</a></li>
			<li><a href="boardForm.jsp">Board</a></li>
			</c:otherwise>
		</c:choose>
	</ul>
	<hr>
</div>

 

2-2. 회원가입

로그인을 하려면 아이디와 비밀 번호가 필요하기 때문에 먼저 회원가입부터 살펴보도록 하자.

 

register 폼은 달라진게 없다.

굳이 있다면 header와 footer를 불러오는 코드가 바뀌었다는 거?

 

register.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>register</title>
<script src="check.js"></script>
</head>
<body>
	<c:import url="header.jsp"/>
	<div align="center">
		<h1>회원 등록</h1>
		<table>
		<tr><td>
			<form action="registerService.jsp" method="get">
				<input type="text" name="id" placeholder="아이디" id="id"> (*필수 항목) <br>
				<input type="password" name="pw" placeholder="비밀번호" id="pw"><br>
				<input type="password" name="confirm" placeholder="비밀번호 확인 " id="confirm" onchange="pwCheck()">
				<label id="label">(*필수 체크)</label><br>
				<input type="text" name="userName" id="userName" placeholder="이름" ><br>
				<input type="text" name="address" placeholder="주소" ><br>
				<input type="text" name="mobile" placeholder="전화번호" ><br>
				<input type="submit" value="회원가입" ><br>
			</form>
		</td></tr>
		</table>
	</div>
	<c:import url="footer.jsp"/>
</body>
</html>

 

registerService.jsp

 

<%@page import="java.util.ArrayList"%>
<%@page import="otherTag.MemberDTO"%>
<%@page import="otherTag.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
   
   <!-- 주석 : 기존 자바 코드 -->
   
<!-- request.setCharacterEncoding("utf-8"); -->   
<fmt:requestEncoding value="UTF-8"/>

<!-- MemberDAO memberDao = new MemberDAO();  -->
<jsp:useBean id="member" class="otherTag.MemberDTO" />

<!-- String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	String confirm = request.getParameter("confirm");
	String userName = request.getParameter("userName");
	String address = request.getParameter("address");
	String mobile = request.getParameter("mobile"); >>register.jsp에서 얻어온 값들을
	 
	 	member.setId(id);
		member.setPw(pw);
		member.setUserName(userName);
		member.setAddress(address);
		member.setMobile(mobile); -->
<jsp:setProperty property="*" name="member"/>

<c:choose>
	<!-- if(id == "" || pw == "" || userName == ""){
		out.print("<script>alert('필수 정보입니다.'); history.back();</script>");
		return ;
	} -->
	<c:when test="${empty param.id or empty param.pw or empty param.userName }">
		<script>alert('필수 정보입니다.'); history.back();</script>
	</c:when>
	
	<!-- if(! pw.equals(confirm)){
		out.print("<script>alert('두 패스워드가 일치하지 않습니다.'); history.back();</script>");
		return ;
	} -->
	<c:when test="${param.pw != param.confirm }">
		<script>alert('두 패스워드가 일치하지 않습니다.'); history.back();</script>
	</c:when>
	
	<c:otherwise>
		<!-- MemberDAO memberDao = new MemberDAO(); -->
		<jsp:useBean id="memberDao" class="otherTag.MemberDAO" />
		<!-- MemberDTO check = memberDao.selectId(id); -->
		<c:set var="check" value="${memberDao.selectId(member.id) }"/>
		<c:choose>
			<!-- if(check == null){out.print("<script>alert('회원 가입 완료'); location.href='index.jsp';</script>"); -->
			<c:when test="${empty check }">
				<!-- memberDao.insert(member); -->
				${memberDao.insert(member) }
				<!-- memberDao.disconnection(); -->
				${memberDao.disconnection() }
				<script>alert('회원 가입 완료'); location.href='index.jsp';</script>
			</c:when>
			
			<!-- }else{
			out.print("<script>alert('회원 가입 실패'); history.back();</script>");
			} -->
			<c:otherwise>
				<script>alert('회원 가입 실패'); history.back();</script>
			</c:otherwise>
		</c:choose>
	</c:otherwise>
</c:choose>

 

2-3. 로그인

 

login.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>login</title>
<script src="check.js"></script>
</head>
<body>
	<c:import url="/otherTag/header.jsp" />
	<div align="center">
		<h1>로그인</h1>
		<table>
		<tr><td>
			<form action="loginService.jsp" method="post">
				<input type="text" name="id" placeholder="아이디" id="id"> <br>
				<input type="password" name="pw" placeholder="비밀번호" id="pw"><br>
				<input type="submit" value="로그인"><br>
			</form>
		</td></tr>
		</table>
	</div>
	<c:import url="/otherTag/footer.jsp" />
</body>
</html>

로그인 폼도 딱히 달라진 건 없다.

loginService.jsp

 

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

<!-- request.setCharacterEncoding("utf-8"); -->
<fmt:requestEncoding value="UTF-8"/>

<c:choose>
	<!-- param.id 혹은 param.pw는 
	String id = request.getParameter("id");
	String pw = request.getParameter("pw"); << 이것을 처리
	
	if(id == "" || pw == ""){
		out.print("<script>alert('필수 정보입니다.'); history.back();</script>");
		return ;
	}-->
	<c:when test="${empty param.id or empty param.pw}">
		<script>alert('필수 정보입니다.'); history.back();</script>
	</c:when>
	
	<c:otherwise>
		<!-- MemberDAO memberDao = new MemberDAO(); -->
		<jsp:useBean id="memberDao" class="otherTag.MemberDAO" />
		<!-- MemberDTO check = memberDao.selectId(id); -->
		<c:set var="check" value="${memberDao.selectId(param.id) }" />
		
		<c:choose>
			<!-- if(check != null && check.getPw().equals(pw)){ -->
			<c:when test="${not empty check and check.pw == param.pw}">
				<!-- session.setAttribute("id", id);
				session.setAttribute("userName", check.getUserName());
				session.setAttribute("address", check.getAddress());
				session.setAttribute("mobile", check.getMobile()); 
				out.print("<script>alert('로그인 성공'); location.href='index.jsp';</script>");-->
				<c:set var="id" value="${param.id }" scope="session" />
				<c:set var="userName" value="${check.userName }" scope="session" />
				<c:set var="address" value="${check.address }" scope="session" />
				<c:set var="mobile" value="${check.mobile }" scope="session" />
				<script>alert('로그인 성공'); location.href='index.jsp';</script>
			</c:when>
			<!-- }else{
				out.print("<script>alert('로그인 실패'); history.back();</script>");
				} -->
			<c:otherwise>
				<script>alert('로그인 실패'); history.back();</script>
			</c:otherwise>
		</c:choose>
	</c:otherwise>
</c:choose>

 

2-4. 회원 수정

 

update.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:choose>
<!-- String id = (String)session.getAttribute("id");
	if(id == null){
		out.print("<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>");
		return;
	} -->
	<c:when test="${sessionScope.id }">
		<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>
	</c:when>
<c:otherwise>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>update</title>
<script src="check.js"></script>
</head>
<body>
	<c:import url="/otherTag/header.jsp" />
	
	<div align="center">
		<h1>회원 수정</h1>
		<table>
		<tr><td>
			<form action="updateService.jsp" method="post" id="f">
				<input type="text" id="id" value="${sessionScope.id }" readonly="readonly"><br>
				<input type="password" name="pwd1" placeholder="비밀번호" id=pw><br>
				<input type="password" name="pwd2" placeholder="비밀번호 확인 " id="confirm" onchange="pwCheck()">
				<label id="label">(*필수 체크)</label><br>
				<input type="text" name="userName" id="userName" value="${sessionScope.userName }" ><br>
				<input type="text" name="address" value="${sessionScope.address }" ><br>
				<input type="text" name="mobile" value="${sessionScope.mobile }" ><br>
				<input type="button" value="회원수정" onclick="allCheck()"><br>
			</form>
		</td></tr>
		</table>
	</div>
	
	<c:import url="/otherTag/footer.jsp" />
</body>
</html>
</c:otherwise>
</c:choose>

위 코드에서 바뀐건 크게 없다.

<%=session.getAttribute("name")%>들은 ${sessionScope.name }으로 바꿔주었고,

검증값은 위 코드와 같이 <c:choose>, <c:when>, <c:otherwise>를 통해 바꾸어 주었다.

 

updateService.jsp

 

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

<!-- request.setCharacterEncoding("utf-8"); -->
<fmt:requestEncoding value="UTF-8"/>
<!-- MemberDTO member = new MemberDtO(); -->
<jsp:useBean id="member" class="otherTag.MemberDTO" />
<!-- check.setPw(pw);
	check.setUserName(userName);
	check.setAddress(address);
	check.setMobile(mobile); -->
<jsp:setProperty property="*" name="member" />

<c:choose>
	<!-- if(id == null){
		out.print("<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>");
		return;
	} -->
	<c:when test="${empty sessionScope.id }">
		<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>
	</c:when>
	
	<!-- if(pw == "" || userName == ""){
		out.print("<script>alert(' 필수 항목이다.'); location.href='update.jsp';</script>");
		return;
	} -->
	<c:when test="${empty param.pw or empty param.userName }">
		<script>alert(' 필수 항목이다.'); location.href='update.jsp';</script>
	</c:when>
	
	<!-- if(pw.equals(confirm) == false){
		response.sendRedirect("update.jsp");
		return ;
	} -->
	<c:when test="${param.pw != param.confirm }">
		<c:redirect url="update.jsp" />
	</c:when>
	
	<c:otherwise>
		<!-- MemberDAO memberDao = new MemberDAO(); -->
		<jsp:useBean id="memberDao" class="otherTag.MemberDAO" />
		<!-- MemberDTO check = memberDao.selectId(id); -->
		<c:set var="check" value="${memberDao.selectId(sessionScope.id) }" />
		<c:choose>
			<!-- if(check == null){
			out.print("<script>alert('회원 가입 후 이용하세요.'); location.href='register.jsp';</script>");
			return;
			} -->
			<c:when test="${empty check }">
				<script>alert('회원 가입 후 이용하세요.'); location.href='register.jsp';</script>
			</c:when>
			
			<c:otherwise>
				${member.setId(sessionScope.id)}
				${memberDao.update(member) }
				${memberDao.disconnection() }
				
				<!-- session.invalidate(); -->
				<c:remove var="id" scope="session"/>    
				<c:remove var="userName" scope="session"/>    
				<c:remove var="address" scope="session"/>    
				<c:remove var="mobile" scope="session"/>
				<script>alert('회원 수정 완료'); location.href='index.jsp';</script>
			</c:otherwise>
		</c:choose>
	</c:otherwise>
</c:choose>

 

2-5. 회원 삭제

 

delete.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:choose>
	<c:when test="${empty sessionScope.id }">
		<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>
	</c:when>
	<c:otherwise>
		<!DOCTYPE html>
		<html>
		<head>
		<meta charset="UTF-8">
		<title>delete</title>
		</head>
		<body>
			<c:import url="header.jsp" />
			<div align="center">
				<h1>회원 탈퇴</h1>
				<table>
				<tr><td>
					<form action="deleteService.jsp" method="post" id="f">
						<input type="text" value="${sessionScope.id }" readonly="readonly"> <br>
						<input type="password" name="pw" placeholder="비밀번호"><br>
						<input type="password" name="confirm" placeholder="비밀번호 확인" ><br>
						<input type="submit" value="탈퇴"><br>
					</form>
				</td></tr>
				</table>
			</div>
			<c:import url="footer.jsp" />
		</body>
		</html>
	</c:otherwise>
</c:choose>

 

deleteService.jsp

 

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

<!-- request.setCharacterEncoding("utf-8"); -->
<fmt:requestEncoding value="UTF-8"/>

<!-- MemberDTO member = new MemberDTO(); -->
<jsp:useBean id="member" class="otherTag.MemberDTO" />

<!-- String pw = request.getParameter("pw");
	String confirm = request.getParameter("confirm"); -->
<jsp:setProperty property="*" name="member" />

<c:choose>
	<!-- if(id == null){
		out.print("<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>");
		return;
	} -->
	<c:when test="${empty sessionScope.id }">
		<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>
	</c:when>
	
	<!-- if(pw == ""){
		out.print("<script>alert(' 필수 항목이다.'); location.href='delete.jsp';</script>");
		return;
	} -->
	<c:when test="${empty param.pw }">
		<script>alert(' 필수 항목이다.'); location.href='delete.jsp';</script>
	</c:when>
	
	<!-- if(pw.equals(confirm) == false){
		response.sendRedirect("delete.jsp");
		return ;
	} -->
	<c:when test="${param.pw != param.confirm }">
		<c:redirect url="delete.jsp" />
	</c:when>
	
	<c:otherwise>
		<!-- MemberDAO memberDao = new MemberDAO(); -->
		<jsp:useBean id="memberDao" class="otherTag.MemberDAO" />
		<!--  memberDao.selectId(id); -->
		<c:set var="check" value="${memberDao.selectId(sessionScope.id) }" />
		
		<c:choose>
			<!-- if(member.getPw().equals(pw) == false){
			out.print("<script>alert('비밀번호가 일치하지 않습니다.'); location.href='delete.jsp';</script>");
			return;
			} -->
			<c:when test="${member.pw != check.pw }" >
				<script>alert('비밀번호가 일치하지 않습니다.'); location.href='delete.jsp';</script>
			</c:when>
			
			<c:otherwise>
				<!-- memberDao.delete(id); -->
				${memberDao.delete(sessionScope.id) }
				${memberDao.disconnection() }
				
				<!-- session.invalidate(); -->
				<c:remove var="id" scope="session"/>    
				<c:remove var="userName" scope="session"/>    
				<c:remove var="address" scope="session"/>    
				<c:remove var="mobile" scope="session"/>
				<script>alert('회원 삭제 완료'); location.href='index.jsp';</script>
			</c:otherwise>
		</c:choose>
	</c:otherwise>
</c:choose>

 

2-6. 회원 명단 보기

 

memberInfo.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>memberInfo</title>
</head>
<body>
	<c:import url="header.jsp" />
	<div align="center">
		<h1>회원 목록</h1>
		<!-- MemberDAO memberDao = new MemberDAO(); -->
		<jsp:useBean id="memberDao" class="otherTag.MemberDAO" />
		<!-- ArrayList<MemberDTO> members = memberDao.selectAll(); -->
		<c:set var="members" value="${memberDao.selectAll() }" />
		<c:choose>
			<!-- if(members.isEmpty() == true){
				out.print("<h1> 등록된 데이터가 존재하지 않습니다. </h1>");
				return; -->
			<c:when test="${members.isEmpty() == true}">
				<h1> 등록된 데이터가 존재하지 않습니다. </h1>
			</c:when>
			<c:otherwise>
				<table border=1>
					<thead>
						<tr>
							<th>아이디</th>
							<th>이름</th>
							<th>전화번호</th>
						</tr>
					</thead>
					<tbody>
						<!-- for(MemberDTO member : members) -->
						<c:forEach var="member" items="${members }">
							<tr>
								<td onclick="location.href='userInfo.jsp?id=${member.getId()}'">
									${member.id }
								</td>
								<td>${member.userName }</td>
								<td>${member.mobile }</td>
							</tr>
						</c:forEach>
					</tbody>
				</table>
			</c:otherwise>
		</c:choose>
	</div>
</body>
	<c:import url="footer.jsp" />
</html>

 

userInfo.jsp

 

<%@page import="otherTag.MemberDAO"%>
<%@page import="otherTag.MemberDTO"%>
<%@page import="java.util.ArrayList"%>

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

<!-- request.setCharacterEncoding("utf-8"); -->
<fmt:requestEncoding value="UTF-8"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>userInfo</title>
</head>
<body>
	<c:import url="/otherTag/header.jsp" />
	
	<c:choose>
		<!-- if(seesionId == null){
			response.sendRedirect("login.jsp");
			return;
		} -->
		<c:when test="${empty sessionScope.id }">
			<c:redirect url="login.jsp" />
		</c:when>
		
		<!-- String reqId = request.getParameter("id");
		if(seesionId.equals(reqId) == false){
			response.sendRedirect("memberInfo.jsp");
			return;
		} -->
		<c:when test="${sessionScope.id != param.id }">
			<c:redirect url="memberInfo.jsp" />
		</c:when>
	
		<c:otherwise>
		<!-- MemberDAO memberDao = new MemberDAO(); -->
		<jsp:useBean id="memberDao" class="otherTag.MemberDAO" />
		<!-- MemberDTO member= memberDao.selectId(reqId); -->
		<c:set var="member" value="${memberDao.selectId(param.id) }" />
	<div align="center">
		<h1>개인 정보</h1>
		
		아이디 : ${member.id } <br> 
		비밀번호 : ${member.pw }<br>
		이름 : ${member.userName } <br>
		주소 : ${member.address } <br>
		전화번호 : ${member.mobile } <br><br>
		<button type="button" onclick="location.href='update.jsp?id=${member.id}'">회원 수정</button>
		<button type="button" onclick="location.href='delete.jsp?id=${member.id}'">회원 삭제</button>
	</div>
	</c:otherwise>	
	</c:choose>	
		<c:import url="/otherTag/footer.jsp" />
</body>
</html>

 

3. 결론

이렇게 회원의 로그인과 관련된 모든 기능을 스크립트릿 안에 java코드를 전부 jstl로 변환하는 작업을 했다.

올리기 전에 나름대로 한번 코드를 작성해보고 동작이 되면 그 뒤에 정리해서 올리는데 어디는 var가 들어가고, 어디는 id가 들어가고, class가 들어가고, name이 들어가는 것은 좀 더 익숙해져야 하는 과제이지만, 처음 코드를 봤을 때 감 조차도 못 잡았는데, 기존 jsp 코드와 비교하며 천천히 코드를 작성하고 하니 대충 어떻게 흘러가는지 보이기 시작했다.

 

시간이 허락되는 한해서 게시판도 jstl로 변환시켜 볼까 생각중이다.

그 전에....두번째 프로젝트 a/s가 먼저겠지만.....

 

본격적으로 Spring 돌입하기 전에 어느 정도 c태그에 대해 이해하고 넘어갈 수 있었다.