KOSTA 29일차) servlet, GET, POST, 컨트롤러

해버니·2023년 4월 10일
0

KOSTA

목록 보기
23/32
post-thumbnail

웹 어플리케이션에는 페이지 이동이 많기 때문에 이해를 잘 해야 한다.

<서블릿하고 jsp는 웹 서버 페이지>
웹페이지는 뭘로 접근해? url로 접근을 한다.
그래서 각 페이지는 접근할 수 있는 url을 가져야 한다.






get 방식 요청

<a href="/projname/test/Login"></a>
location.href="/projname/test/Lgoin";
<form action = "/projname/test/Login" method="get">

=> Login 서블릿의 doGet()이 호출됨



post 방식 요청

<form action="projname/test/Login" method="post">

=> Login 서블릿의 doPost90이 호출됨











컨트롤러

컨트롤러 (서블릿) : 요청 받아서 처리.
처리를 하려면 사용자가 요구한 기능을 수행하고 결과 뷰페이지를 클라이언트한테 줘야 한다.
기능이 구현된 service 객체가 필요하다.
결과 뷰 페이지를 만들어서 응답으로 보낸다
누가? 컨트롤러가

뷰페이지에서 사용자가 로그인을 원한다? 추가를 원한다? 삭제를 원한다? 이러한 작업을 할 수 있게 처리를 해줘야 한다.
그래서 컨트롤러는 사용자가 웹 서버에 요청을 보낸것을 받아서 이 작업을 실행한다.
컨트롤러가 작업하는 패턴은 비슷하다.
폼 파라미터의 값을 읽어야하는 경우도 있죠
요청을 보낼 때 폼파라미터를 함께 전송하면 그 값을 (서버에서?) 읽어서 변수에 담는다
→ 이 작업을 하는 메소드가 request.getParameter("파라미터이름");

처리 결과를 뷰페이지에 전달하려면 request에 담아 전달
→ request.setAttribute("뷰페이지에서 부를 이름", 전달할 값);













뷰페이지 (jsp)

뷰 페이지에선 html, css, javascript, java 다 사용가능하다.
자바코드를 쓸 순 있지만 초창기에만 그렇게 썼었고 코드가 보기 불편해지기 때문에 요새는 따로 쓰고 있다.

대신에 eljstl 표현식을 많이 쓴다.





el : ${자바변수}
"값이 있으면 출력하고 없으면 말아라~" 이게 가능하다.
원래는 출력할 값이 없으면 없다고 에러가 날 수 있는데 el 표현식은 에러가 나지 않는다.
값이 있으면 출력하고, 없으면 출력 하지 않는다.
그래서 서블릿에서 뭔가 검색한 결과 처리한 결과를 request에 담아서 보내면 된다.




jstl : 태그 라이브러리 (기본 로직을 태그로 정의한 라이브러리.)
ArrayList를 request에 담아서 뷰페이지에서 꺼내서 보여줄려면 for문이 필요하다.
근데 자바스크립트는 서버에서 보내준 값을 인식 못하기 때문에 jsp의 jstl을 쓴다.

<c:forEach var="list" items="{list}">
	${list.num}
</c:forEach>









로그인을 할 때

로그인을 할 때에는 작업이 두 단계로 나뉜다.

1) 로그인 폼
2) 폼에 작성한 id, pwd 확인해서 로그인 처리

위 두 단계를 따로 따로 만들어도 되지만 같이 만드는게 간편하고 좋다.
하나의 서브릿으로 처리한다.
로그인 폼은 get 방식 요청으로 처리하고
실제 로그인을 처리하는 부분은 post 방식 요청으로 처리한다.










오늘의 실습

2시 product 패키지를 만들었다
상품 등록하는 웹 페이지를 만들었다

상품등록 void insert(ProductVo vo)
번호로 검색 ProductVo selectByNum(int num)
제품명으로 검색 ArrayList selectByName(String name)
가격으로 검색 selectByPrice(int price1, int price2)
전체목록 selectAll()
수정 (가격, 수량) update(ProductVo vo)
삭제 delete(int num)





0개의 댓글