티스토리 뷰

 

 

HW3 실습 

 

명세서

 

 

만들어본 코드 

 

HW3.jsp

 

 

 

만들어본 코드 

 

HW3_login_auth.jsp

 

 

이건 제대로 돌아가는 코드 (답안 코드?)

 

 

 

파란 부분내가 한 코드고 , 빨간 부분제대로 작동하는 코드

 

세션을 만들거니깐 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>

 

 

jsp 실행 화면

 

 

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" 로 보내기 

 

 

생성된 회원가입 화면

 

 

 

 

입력하고

 

 

제출을 누르면

 

 

콘솔 창 : ㄴDB에 넣기 성공

 

 

 

DB 테이블에서도 확인 가능

 

 

 



  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>");

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함