메모장

application 본문

JSP/개념정리

application

Itchild 2024. 4. 26. 11:55
728x90
반응형

 

application은 내장객체로서 session 보다 넓은 단위 이며 브라우저가 꺼져도 유지 된다. 크롬 이외 다른 브라우저를 이용시에도 서버가 꺼지지 않았기 때문에 데이터가 유지 된다 .

 

방문자 수를 확인해보는 페이지를 예시로 만들었다

application.setAttribute( " 이름 " , " 값 " ) ---> 기본 형식이다.

불러 올땐 application.getAttribute( " 이름 ") ---> 기본형식이다.

application.getAttribute("cnt") 로 방문자 수 를 불러왔고 , 페이지가 새로고침 될때 마다 방문자수가 올라가야 하므로 cnt ++ 해주고 다시 그 값을 넘겨 주기 위하여 setAttribute( " 이름 " , 값 ); 을 보낸다.

 

마지막 문장에서 getAttribute("memberName")을 불러왔고 그에 해당 하는 값(=이름) 인 "홍길동"을 불러왔다. 오늘의 방문자 수는 cnt 명 이다.


실습 문제 ) 로그인 페이지를 구현하고 로그인이 안되어있을 시엔 글 작성을 못하도록 하고 ,

로그인 후 접속하면 글작성을 할 수 있도록 , 또한 누가 쓴 글 인지 표시 해주시고

글은 브라우저가 꺼져도 남아 있어야 합니다 !

 

1.일단 로그인을 하기 위해서 input 태그 만들어 주기

2. 아이디와 비번을 입력하고 로그인 하면 b.jsp 로 이동 한다.

 

<한글 코딩 먼저 > 로그인을 하려는 과정

// 로그인 mid,mpw를 받아와

// 그정보를 mVO로 받아서 넘겨줘

// 근데 회원정보가 없으면 ?

// 만들면 됨

// 그것을 selectOne 으로 비교해줘

// 그러면 그 정보를 이제 추가해줘


근데 여기서 mVO 인자와 selectOne 기능을 수행할 mDAO가 필요 하므로 MemberVO와 MemberDAO를 먼저 만든다.

 

2-1. MemberVO, MemberDAO 만들기

1) 생성자 초기화(아이디,비번,이름) ,getter,setter 만들기, DAO에 DB역할을 할 데이터 만들고 값 세팅 해주기

 

 

2) 우리는 로그인 정보 비교 할 때 selectOne 을 사용할 것 이므로 selectOne 만 !

for문을 돌려 전체 중 받아온 mid 와 내가 가진 mid가 같니 ? 같으면 비밀번호도 맞니 ? 그러면 값 반환해.

 

2-2. 다시 돌아와서 한글코딩 내용 대로 작성해주기

// 로그인 mid,mpw를 받아와 

String mid = request.getParameter("mid"); 사용자가 보내온 정보를 요청으로 받는다. 
String mpw = request.getParameter("mpw"); 아이디와 비밀번호 받기

// 그 정보를 mVO로 받아서 넘겨줘
MemberVO mVO = new MemberVO();
	mVO.setMid(mid); mVO로 보낼 준비
	mVO.setMpw(mpw);
	
// 그것을 selectOne 으로 비교해줘
MemberDAO mDAO = new MemberDAO();	
	mVO=mDAO.selectOne(mVO); 그 mVO를 인자로 넣고 selectOne 하여 아이디와 비밀번호가 있는지 확인
                             - 그걸 다시 새로운 mVO 에 담는다 (재활용 방식)
                             - 새로운 객체를 쓸거면 담을 객체 이름을 mdata 등 다르게 짓는다.
// 근데 회원정보가 없으면 ?
if(mVO == null){ --회원정보가 없는 회원정보니 ?
		out.println("<script>alert('로그인 실패...');history.go(-1);</script>");	
	}
	else{ -- 회원 정보가 있어 ?
// 그러면 그 정보를 이제 보내줘
	session.setAttribute("name", mVO.getName());
	                      이름      이름에 대한 값
	response.sendRedirect("a.jsp"); 다시 a.jsp로 돌아가자 
          얘는 데이터 유지가 x 인데 그럴 필요가 없는것이 session 에서 이미 정보를 들고 있음 
	}
 

근데 이것을 줄여서 쓸 수 있다 !!

<jsp:useBean> : 우리가 새로운 객체를 선언할 때 new 새로운 객체(); 라고 만들었는데 이것을 대신해주는 기능

<jsp:setProperty> : pVO의 모든 setter를 호출하겠다. setter에 넣을 값을 request.getParameter()에서 자동으로 매핑해주겠다! 형변환까지도 해준다 !

 

그래서 로직이 간단해진다.

 

3. 다시 돌아 가서 "name" 으로 받아오기 !

 

session.getAttribute("name") == null (혹시 로그인이 안되어있니?)

{ 그러면 로그인 부터해 }

else { ㅇㅇ 님 환영합니다 ! <a href>로그아웃</a> }

 

4. 로그인에 성공하면 이제 글 작성 할 수 있다.

글 작성은 또 form을 통해 전송 한다.

이것으로 유추해봤을때 저쪽에서 write 라는 이름으로 사용자의 정보를 요청 받을 것이다.

required 를 걸어줌으로서 아무것도 입력하지 않았을 시 못넘어가도록 잡아주기

 

4-1. 정보를 넘기면 글 작성이 될수 있도록 값을 넘겨야 한다.

// 한글코딩 먼저

// 사용자가 보내는 정보 (=값) 받아야해
String write = request.getParameter("write");

// 그것이 (=글)여러개 일 것이니까 배열리스트로 받아야해
// 근데 브라우저가 꺼져도 글은 계속 남아 있어야해 
ArrayList<String> letter =(ArrayList<String>)application.getAttribute("letter");

// 만약 글작성이 아무것도 안되어있다면 ?
if(letter == null){
// 만들어 주면 돼
letter = new ArrayList<String>();
application.setAttribute("letter", letter);
}

// 있다면 추가 해줘
letter.add(write);

// 그리고 다시 전 으로 돌아가줘
response.sendRedirect("a.jsp");

5. 정보 받아와서 보이는 페이지에 출력 해줘

<li></li> 태그를 쓰기 위해선 <ul></ul> 태그나 <ol></ol> 태그를 써야 한다.

불러올땐 "letter" 로 불러온다. 만약 글이 아예 작성된것이 없다면 , 글이 작성되지 않았다는 문구 띄워주고

아닐시 for문을 돌려 list 를 하나씩 출력 해준다.

 

6. 잘 동작하는지 확인

 

 

728x90
반응형

'JSP > 개념정리' 카테고리의 다른 글

JSTL  (0) 2024.04.26
JSP 와 JDBC 연결  (0) 2024.04.26
jsp 개념정리 (2)  (0) 2024.04.26
JSP 내장객체 정리  (1) 2024.04.26
JSP 개념정리 (1)  (1) 2024.04.26