티스토리 뷰
HW3 실습
만들어본 코드
만들어본 코드
이건 제대로 돌아가는 코드 (답안 코드?)
파란 부분이 내가 한 코드고 , 빨간 부분이 제대로 작동하는 코드임
세션을 만들거니깐 id,pw를 받아오는 과정도 getAttribute를 사용할거라고 생각함
파란 부분이 내가 한 코드고 , 빨간 부분이 제대로 작동하는 코드임
.equals() 를 쓸 때 앞에 값이 null인 경우는 에러가 남!
null. ~ 은 다 에러남
session.setAttribute(name, value); 에서
id = "test" 를 받아온다고 했으니깐
value = "test"라고 써도 되긴하는데
받아올 값이 바뀔 수 있으니 userId로 바꾸는게 좋음!
페이지 이동 코드는 당연히
명세서 순서에 따라
id ="test" 이고 pw="1234" 이면,
id 세션을 생성하고
result 페이지로 이동!
따라서 if문 마지막에 넣으면 됨ㅎㅎ
내가 한 코드
^^... 이해가 안가서
제대로 만든 코드
세션에서 값을 조회한다 = getAttribute 메서드로 세션에 저장된 값을 조회할 수 있다.
아무튼
이 다음, 로그인을 하지 않고 url로 접속할 경우..
로그인이 안된다 = session 이 없다랑 같은 말이므로
if 문으로 세션으로 설정한 id 키값이 null인 경우
로그인 해주세요 라는 알람이 뜨게 하고
로그인 페이지로 이동시킨다.
Filter
xml 는 태그로 되어있지만 JAVA다
Filter의 목적
- 서버에서 리소스에 접근하기 전에 클라이언트의 요청/응답을 인터셉트하는 기능
- 클라이언트와 서버 간의 요청/응답을 조작
Filter의 유형
- 인증
- 데이터 압축
- 암호화
- 로그/감시
- 이미지 변환
- charEncodingSet
Filter 사용법
- web.xml 파일에 필터 태그 추가
package web.ch20.filter;
import java.io.IOException;
import java.util.Date;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestFilter extends HttpFilter implements Filter{
// * Filter의 목적
// - 서버에서 리소스에 접근하기 전에 클라이언트의 요청/응답을 인터셉트하는 기능
// - 클라이언트와 서버 간의 요청/응답을 조작
// * Filter의 유형
// - 인증
// - 데이터 압축
// - 암호화
// - 로그/감시
// - 이미지 변환
// - charEncodingSet
// * Filter 사용법
// - web.xml 파일에 필터 태그 추가
public TestFilter() {
System.out.println("TestFilter 생성자");
}
//init() : 필터가 시작할 떄 호출
@Override
public void init() throws ServletException {
}
// doFilter() : 필터를 사용할 때마다 호출
@Override
protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain)
throws IOException, ServletException {
// 클라이언트로부터 IP얻기
String ipAddress = req.getRemoteAddr();
req.setCharacterEncoding("UTF-8");
//현재 시간과 IP 주소 출력
System.out.println("IP : " + ipAddress +
", Time : " + new Date().toString());
chain.doFilter(req, res);
}
// destroy() : 필터가 종료될 때 호출
@Override
public void destroy() {
}
}//end TestFilter
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
<display-name>Web06_JSP_Servlet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 필터 설정 -->
<filter>
<!-- filter-mapping의 filter-name과 일치 -->
<filter-name>TestFilter</filter-name>
<filter-class>web.ch20.filter.TestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/ch20/filterTest.jsp</url-pattern>
<url-pattern>/*</url-pattern> <!-- /*은 존재하는 모든 하위 경로 -->
<url-pattern>/member/*</url-pattern> <!-- member의 모든 하위 경로 -->
</filter-mapping>
</web-app>
TestFilter 생성자가 먼저 생성된 걸 알 수 있음
아래 ip, time 자바 파일
DB 연결
1. JDBC library 추가 > C : oraclexe > app > oracle > product > 11.2.0 > server > jdbc > lib > ojdbc6.jar
을 WEB-INF > lib 폴더에 복붙
추가 완료!
sqldeveloper에 가서
DB table 생성
테이블에서 interest 는 문자열인데
VO에서는 배열임
그래서
기능 하나 만들고
기능 = method 구현 => DAO에서
기능들을 실제로 구현하는 DAOImple 만들기
DB -> servlet 흐름 순으로
👩💻 회원가입 및 로그인 홈페이지 만들기(HW4) 👨💻
폴더 생성 순서
페이지 생성 과정 :
파일 4개 가져오기 ,
memberRegister.jsp
RegisterServlet
login.jsp
loginServlet
loginResult.jsp
LogoutServlet
SelectServlet
memberResult.jsp
memberUpdate.jsp
UpdateServlet
DeleteServlet
페이지 생성 과정 :
파일 4개 가져오기 , memberRegister.jsp , RegisterServlet , login.jsp , loginServlet ,
loginResult.jsp ,LogoutServlet , SelectServlet, memberResult.jsp ,memberUpdate.jsp ,
UpdateServlet , DeleteServlet
1. Dynamic Web Project 생성 : 프로젝트 이름(Homepage_XXX)
2. 회원 가입, 회원 정보 조회, 회원 정보 수정, 회원 탈퇴 기능
3. 로그인(아이디 & 패스워드 확인 기능), 로그아웃, 로그인 결과 확인 페이지
4. 로그인 성공 시 세션으로 로그인 상태 유지(60초)
5. 로그아웃 누르면 세션 제거하여 로그아웃 수행
6. 한글 처리 필터(Filter) 적용
추가 과제) 예외 및 에러가 발생되는 상황 찾아서 처리하기
에러 ) MemberDAOImple 에서 OracleDriver()에서 오류가 남
해결방법 1 ) WEB-INF > lib 에 오라클 파일이 없음ㅎ 얼른 넣어주겠음
그리고 import oracle.jdbc.OracleDriver; 하니깐 에러 없어짐
memberRegister.jsp >
회원 가입 form 생성하기
action="register.do" method="post" 로 보내기
입력하고
RegisterServlet>
1. memberRegister.jsp에서 전송된 데이터를 DB에 저장
( DB 연결하려면 DAOImple에 연결
doPost 에 요청으로부터 파라미터를 읽어오기
받아온 데이터를 MemberVo 객체에 저장
result 변수에 'insert' 메서드 호출 후 반환 값을 받기
)
일단 여기까지 하고 실행 ㄱㄱ
문제 : 중복 된 값이 DB에 있음 그거 예외처리 해줘야함! > DAOImple에서 처리하기
2. DB 저장 후에 login.jsp로 이동(심심하면 alert도 띄우기)
sendRedirect() 사용하기
코드는 response.sendRedirect("/Web06_JSP_Servlet/ch21/register.jsp");
인데... 참고했던 코드에서도 그 경로로 바로 이동은 안하나봄
경로가 잘못된 것 같음,,
수정)
doPost() 로 옮겼음
result 가 1이면 1행이 삽입된 거니깐
로그인페이지로 이동!
등록하면 바로 로그인 페이지로 이동함
login.jsp >
1. <a> 태그를 이용하여 memberRegister.jsp 이동 링크 생성
<a href="이동 링크"></a> 를 이용하기
2. 로그인 form 생성. action="loginAuth.do" method="post"
<form action="loginAuth.do" method="post">
로그인 form 생성
</form> 이용
loginServlet>
1. login.jsp에서 입력받은 아이디, 패스워드를(읽어오기) DB의 데이터와 비교해서 (if문)
String 아이디 = request.getParameter("아이디 name ");
String 비밀번호 = request.getParameter("비밀번호 name ");
DB의 데이터를 꺼내기 = DB 연결 -> DAOimple 받아오기
DB의 데이터와 비교해서
문제 ) db에 저장된 id,pw 값과 비교,,, 어케 하지?
2. 일치 - 로그인 세션 생성 및 로그인 성공(loginResult.jsp)로 이동
아이디 값에 대한 세션 생성. 세션 만료 시간 60초
session.setAttribute("userid", userId); // value = test 라고 해도 되고 userId를 쓰는게 더 동적임
session.setMaxInactiveInterval(60); // 60초
out.print("<script>alert('로그인 성공');</script>");
out.print("<script>location.href=' 이동할 경로 '</script>");
3. 일치X - login.jsp로 이동한다
out.print("<script>alert('로그인 실패');</script>");
out.print("<script>location.href=' 이동할 경로 '</script>");
'백엔드 교육과정 > 4월' 카테고리의 다른 글
2024.04.08 _ JSP Servlet ( form형태 get/post 데이터 처리 방식 ) , JSON, JSTL, AJAX (0) | 2024.04.08 |
---|---|
2024.04.05_ HW4(회원가입 및 로그인 홈페이지) 문제해결 / (0) | 2024.04.05 |
2024.04.04 _ HW4(회원가입 및 로그인 홈페이지 만들기) 제출 (문제점 찾기) (0) | 2024.04.04 |
2024.04.02_ Cookie 과제 , Session , cookie와 session의 차이점 , 실습 (0) | 2024.04.02 |
2024.04.01_Servlet 기초 (0) | 2024.04.01 |