JSP 18일차
![](https://t1.daumcdn.net/keditor/emoticon/face/large/073.png)
올해의 마지막 수업!
한달동안 수업을 들으면서
머릿속에 새로 들어오는 내용들이 많아서
버거울 때가 많았지만
내년에 있을 국비지원 수업을 위해
기초를 탄탄히 다질
시간을 가질 수 있었던 것 같아서
참 의미있는 시간들이였다.
두려움이 살짝 사라지는 느낌?
하지만, 아직 알아야 하는 것도 많고
지금 배웠던 것들은 또 실제 업무에서
어떻게 바뀔지 모르니
긴장을 놓치지 않는 걸로-!
암튼 오늘 수업 시작
저번 시간에 했던 예제5번의 내용을 추가했다.
<%session.setAttribute("name","박참조"); %>
<c:set var="name" value="박참조" scope="session" />
이렇게 session값을 불러오는 것도 가능하다는거 ~
[로그인 폼]
퀴즈
아이디/비밀번호를 전달받아 null or 빈문자열인지 체크
아이디/비밀번호가 admin/1234와 같으면 ex7_loginSuccess.jsp로 이동하고
같지 않으면 ex7_login.jsp로 이동한다.
제약조건 : <%%> <%=%> 두 태그는 사용하지 않는다.
jstl을 사용할 수 있도록 core와 fmt uri를 가져오고
이전에 했던 작업들을
jstl 과 ul을 적절하게 사용해서
적용시켜 보았다.
++추가된 내용
<c:redirect url="ex7_loginSuccess.jsp"/>
<c:redirect url=""> → response.sendRedirect('')와 같은 역할
ex7_loginSuccess 화면에서는
session의 아이디값이 비어있으면
로그인 페이지로 이동하고
로그인에 성공하면
입력한 id의 값 + 님 로그인 되었습니다.가 출력된다.
위 조건상 id는 admin이 되어야 하므로
admin님 로그인 되었습니다. 가 출력된다.
1) id와 pw가 비어있을 때
'필수 정보입니다.' 경고창
2) id가 admin이거나 pw가 1234 일치해야 함
불일치하면 '아이디/비밀번호를 확인하세요.' 경고창
3) 로그인 성공하면
admin님 로그인 되었습니다.
ex7_loginSuccess.jsp페이지 이동
class를 만들 actionTag패키지와
jsp파일을 만들 actionTag폴더를 생성해준다.
액션태그란?
JSP 페이지에서 자바 코드 등의 스크립트 언어를 사용하지 않고도
(즉, HTML 태그 형태로)
다른 페이지의 서블릿이나 자바빈의 객체에
접근할 수 있도록 태그를 이용해 구현된 기능을 말한다.
사용자의 입력값을
beanResultEx1.jsp에 출력하는 유형
이전에 많이 했었던 과정이지만
액션태그를 사용할 것이기 때문에
객체를 생성할 자바파일이 필요하다.
Ex1이라는 객체를 생성해서
문자 데이터를 받을 getter와 setter를 만든다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
out.print("data : " + request.getParameter("data")); //스크립트릿으로 매개변수를 받아 출력하는 방법
%>
<!-- Ex1 ex1 = new Ex1(); -->
<jsp:useBean id="ex1" class="actionTag.Ex1" /> //액션태그로 객체 생성
<!-- ex1.setData(request.getParameter("data")); -->
<jsp:setProperty property="data" name="ex1"/> //setter로 불러오기
<!-- out.print("data : " + ex1.getData()); -->
<br>
data : <jsp:getProperty property="data" name="ex1"/> //getter로 불러오기
<br>
data : ${ex1.getData()} //el로 getData()출력
<br>
data : ${ex1.data} //el로 출력
<jsp:useBean id="Bean이름" scope="범위" class="Bean의 저장위치"/>
<jsp:setProperty name="Bean이름" property="속성이름"> Bean의 속성에 값을 설정하는 태그
<jsp:getProperty name="Bean이름" property="속성 이름"> Bean의 속성 값을 얻을 때 사용하는 태그
Ex1과 똑같지만
이번엔 데이터를 많이 입력받는
유형을 연습해보았다.
자바 클래스 파일을 만들어
객체의 변수를 선언하고
getter와 setter를 만든다.
<jsp:useBean id="ex2" class="actionTag.Ex2" /> 객체 생성
<jsp:setProperty propert="*" name="ex2"> ex2안에 있는 모든 값을 설정할 준비 완료
출력할 때는
스크립트릿 안에 getter 사용해서 가져오는 방법과
el로 가져오는 방법 두가지를 사용했다.
dbconcept 프로젝트에서 썼던
session자바 패키지들과
session폴더를
지금 프로젝트에 복사했다.
같은 화면을 구현하지만
dbconcept에서는 자바식으로
other에서는 jslt과 el을 사용해서
다른 방식으로 구현했다.
String id = (String)session.getAttribute("id");
if(id==null)
→ <c:when test="${empty sessionScope.id }">
else{} → <c:otherwise></c:otherwise>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:requestEncoding value="UTF-8" />
<c:set var="regex" value="^[a-z0-9]{1}[a-z0-9_-]{4,19}$" /> //변수 선언
<c:set var="pattern" value="${Pattern.compile(regex)}" />
<c:set var="m" value="${pattern.matcher(param.id)}" />
<c:set var="regexResult" value="${m.matches()}" />
<c:choose>
<c:when test="${empty param.id || empty param.pw}"> //매개변수 id와 pw가 비어있을 때 검증
<script>
alert('아이디 / 비밀번호를 확인하세요.');
location.href='login.jsp';
</script>
</c:when>
<c:when test="${regexResult == false }"> //정규표현식에 맞지 않을 때 검증
<script>
alert('5~20자의 영문 소문자, 숫자와 특수기호(_),(-)만 사용 가능합니다.');
location.href='login.jsp';
</script>
</c:when>
<c:otherwise> //else일 때 memberDao 객체 생성 후 id를 가져오는 check변수 생성
<jsp:useBean id="memberDao" class="session.MemberDAO" />
<c:set var="check" value="${memberDao.selectId(param.id) }" />
<c:choose>
<c:when test="${not empty check && check.pw == param.pw}"> //check데이터가 비어있지 않고 비번이 일치하면
<c:set var="id" value="${check.id }" scope="session" /> //session값을 가져 올 변수 생성(로그인 성공)
<c:set var="name" value="${check.name }" scope="session" />
<c:set var="email" value="${check.email }" scope="session" />
<script>
alert('로그인 성공');
location.href='index.jsp';
</script>
</c:when>
<c:otherwise> //if 조건 만족하지 않을 때 경고창 띄우고 login페이지 이동
<script>
alert('아이디 / 비밀번호를 확인하세요.');
location.href='login.jsp';
</script>
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
![](https://blog.kakaocdn.net/dn/bm53Kj/btrU0vkbDXV/Ikh05nQAUmlGOz6vwvfzvk/img.png)
![](https://blog.kakaocdn.net/dn/cbiBdm/btrU291LkOU/3jkBJAmg9xmcWM43obrj91/img.png)
위의 LoginService처럼
여러가지 검증을 해주고
회원가입에서는 id가 중복되지 않게
추가적으로 검증을 해준다.
<jsp:useBean id="memberDao" class="session.MemberDAO"/>
<c:set var="check" value="${memberDao.selectId(member.id) }"/>
.
.
<c:when test="${empty check}">
${memberDao.insert(member) }
list.jsp는
원래 내용이 많기도 했고
연산과 형변환 등이 있어서
jstl과 el, 그리고 액션태그 만으로
대체할 수 없었고
자바 코드가 조금씩 필요했다.
![](https://blog.kakaocdn.net/dn/bPdgTX/btrUVbNXEMd/zl19zB2fpJ9hA8dUTGJFSK/img.png)
![](https://blog.kakaocdn.net/dn/d1VT5h/btrU1qiDaTt/j0HkkMF5CUYpt1lwnHs6sk/img.png)
![](https://blog.kakaocdn.net/dn/bIQf2f/btrUTYumd9l/mR3TMvUkhyHbGUkfOziQKk/img.png)
이전 프로젝트에서 썼던 코드들을 읽고
하나씩 찬찬히 대입해보고
잘 안되는 것들은 이유를 잘 찾아보면서
자바 코드와 함께 병행하는
방법을 찾아볼 것이다.
어느새 2022년의 마지막 날이 다가왔다.
늦은 나이에
또 지금의 경제 상황 속에서
수많은 고민들을 겪고
개발자라는 직업에 도전해보자
어렵사리 결정했지만
아직도 내가 잘해낼 수 있을지 미지수다.
하지만 이렇다 저렇다
핑계를 늘어놓기엔 시간 아까우니까
최대한 공부하는 거에 집중하고
새해가 밝아오고 그 이후부터의 나는
처음 흥미를 가지고 재밌게 공부했을 때를
떠올리며 쉽게 무너지지 않았으면 한다.
2022년 안뇽 Bye
![](https://t1.daumcdn.net/keditor/emoticon/face/large/071.png)
댓글