-
<properties 파일생성>
src->sql패키지생성->new -> Other->General->File ->File name : driver.properties
include지시자는 WEB-INF 안에 화면 구현한다.
화면구현위치(두가지 방법)
1) WebContent
: 파일(뷰)과 파일(뷰) 간의 이동이 가능하다. A.jsp -> B.jsp (뷰에서 뷰로 이동가능하다.)
2) WEB-INF(server가 관리)
: 뷰에서 뷰로 바로 넘어가는게 불가능하다. 중간에 서버(백단=servlet)가 존재한다.
: 뷰 -> 백단sevlet(controller) -> 뷰
JDBC : view -> controller(어떤 뷰를 보여줄지 결정) ->view
request.getContextPath() -> context root 불러주는 메소드
: WebContent에 있는 위치를 뽑아주는 것이다.(request.getContextPath()=WebContent를 가리킨다.)
: 그렇기 때문에 뒤에 /images/bg.png는 WebContent파일 안에 images파일을 만들고 bg.png를
끌어와서 삽입한다.
login.me : 404서블릿 안만들어서 에러가 뜬다.
Java Resource-new-Servlet생성-자바 패키지명과 이름을 변경해서 피니쉬!(다 들어가 있음)
@WebServlet("/login.me") --> Annotation으로 sevlet-mapping하는 방법
<로그인방식>
**로그인방식->post으로 보내서 ->doPost메소드안에서 doGet을 호출함 : doPost, doGet 둘다 써서
같이 사용하려고 한다.
get에서 캐릭터인코딩(CharacterEncoding)했었는데 그럼 안해줘도 되는가?
그건 아니고 doGet으로 넘어왔기 때문에 계속 사용해야되기 때문에 캐릭터인코딩(CharacterEncoding)도 해야된다.
CharacterEncoding: 뷰에서 받아온 인코딩은 내가 지정한방식으로 인코딩해주는 것(UTF-8)한글이 깨져와서 세팅을 했다.
뷰에서 보낸 인코딩을 한글로 넘겨주는것 지금은 이 자체로 그냥 보내줘서 아무런 상관이 없다
<doGet작성법>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");-->인코딩을 먼저 해준다.
String userId = request.getParameter("userId");
String userPwd = request.getParameter("userPwd"); --> ("input태그의 name속성값")
}
****HttpServletRequest.getParemeter(String name) VS HttpServletRequest.getAttribute(String name)
반환 타입 String Object
사용 용도 뷰에서 보낸 데이터를 가져올 때 Servlet에서 보낸 데이터 가져올 때(뷰 제외)
option+shift+s = 겟터셋터, 투스트링
***중요***
new MemberService().loginMember(member);
로그인하려고, 디비에 해당 아이디 비번이 있는지 확인(반환값 생각하기)
select count(*) = 있는지 없는지 확인 getInt =1 로 받아오면 더 간단하다는 생각이 든다.
하지만 select *를 사용한다!
로그인하고 로그인한 정보(이름, 이메일, 닉네임 등등 디비 정보들)가 블로그에 들어가도 유지가되고,
글을 쓴다고 해도 유지가 된다. 카페 등록되어있다는 것도 알고있다. 나에 대한 정보가 유지되고있다.
그렇기 때문에 블로그, 카페등 나의 정보가 유지.-->select * 로 정보들을 다 가져올 수 있도록 한다.
loginUser=SELECT * FROM MEMBER WHERE USER_ID = ? AND USER_PWD = ? AND STATUS = 'Y'
STATUS가 Y인 사람이 탈퇴안한 정상회원
아이디는 중복X 최대 1개 없으면 0개
src->sql패키지생성->new -> Other->General->file ->File name : driver.properties
프로퍼티즈파일은 그냥 파일로 해야됨.
WEB-INF ->lib
로그인<틀린내용>
보낼 데이터가 있으니까 forward()사용
a(앱)->session(브라우저)->request(한번에)->page(j)
전역변수, 어디에서나 쓰이는 것을 애플리케이션에 들어간다.
로그인 정보는 session에 담아놓는다
//서블릿에서 뷰로 다시 돌아가는것, 로그인 후 메인페이지로 돌아가는 기능
//RequestDispatcher.forward() VS HttpsServletResponse.sendRedirect()
//뷰(우리한테는 인덱스)에 보낼 데이터 전송 가능(뷰에 보낼 데이터 존재할 때) 뷰에 데이터 전송 불가능(뷰에 보낼 데이터가 존재하지 않을 때)
//URL유지 지정 URL로 변경
//request/response객체 유지 request/response객체 새로 생성
<맞는 방법>
포워드 사용하지 않는 이유!
포워드는 전송할 데이터가 있을 때 전송
샌드리드렉트
내가 보낼 데이터가 없을 때 사용
세션에 로그인 정보를 담음
response객체 새로 생성되도 session은 그대로라서 괜찮다는 뜻
데이터는 없지만 sendRedirect 이후와 이전의 response request는 다르다.
세션에 로그인 유저가 담겨져 있어서->response가 사라져도 상관없다.
session이 page보다 큰영역이기 때문에
세션 안에 페이지가 아무리 바뀌어도 더 큰영역의 세션은 변경되지않는다
피자했을땐 리퀘스트에 1회성 데이터를 담았다 메뉴선택->샌드리드하면 새로운 객체가 생성되서 데이터가 넘어갈 수 없다
페이지 이동변경을 하기위해서(리퀘스트 page변경)하기 때문에 이때
msg라는 변수에 로그인실패라는 값을 request영역에 담아두는거다
포워드로 바꿀수는 있는데 포워드로 바꾸면 회원 로그인잘되고 주소창에 login.me가 그대로있다
포워드는 url유지되기 때문에 그렇다.
원래는 주소창에 유알엘 요청 하는 url을 노출시키지않는다.
로그인 완료가 되어도 url을 노출시키지 않기 위해서 사용한다.
어떤 html인지 주소창에 보여준다. 제대로된 사이트는 안보여주는게 맞다.
개발한 경로를 보여주지 않고 가짜 주소만 보여주는 html이다.'JSP' 카테고리의 다른 글
JSP_개념_공지사항 (0) 2022.05.03 JSP_로그인 후_내 정보 띄우기 (0) 2022.04.27 jsp_기타 내용 (0) 2022.04.27 JSP_중복확인창 만들기_흐름 순서 (0) 2022.04.27 JSP_개념 (0) 2022.04.21