전 포스팅에서 지저분한 out.write의 남발을 보았다. 이러한 노동을 jsp를 쓰면 재스퍼가 알아서 만들어준다. (jsp=재스퍼)
간단하게 확장자를 .jsp라고 만들면되는데, 만약 calculator.jsp라는 파일을 만들면 재스퍼가 calculator_jsp.java 라는 서블릿을 만들어준다.
이 서블릿은 HttpJapBase를 상속받는 클래스와 그안에는 service라는 메소드가 있다. 우리가 jsp파일에 내용을 적으면 그 내용들을
여기 calculator_jsp.java라는 파일에 알맞게 넣어준다.
jsp에는 코드블럭을 넣을 수 있는
1. <% ....코드내용.....%>
변수를 출력해주는
2.<%= 변수%>
_jsp.java 서블릿의 service함수가 아닌 클래스의 멤버변수로 들어가는 즉 변수나 메서드를 선언하는
3.<%! ....코드내용....%>
파일의 인코딩 방식등을 지정하는
4. <%@page %>
이 친구들이 있다.
또한 제스퍼에는 내장객체 request, response, out, session, application이 있는데 이들에 대한 메소드가 있으니 알맞게 사용하면 되겠다.
쿼리스트링에 n=값 으로 날리면 그 숫자가 짝수인지 홀수인지 알려주는 간단한 프로젝트를 만들어보자.
jsp로 작성하면 다음과 같다.
<% %>안에 자바 코드가 들어갔고 그 밖으로 나온 부분은 그대로 출력을 한다.
위에서 보듯이 쿼리 스트링으로 전달하니 짝수인지 홀수인지 잘 알려준다.
MVC model1
그런데 위의 코드들은 어디에는 자바코드가 있고,, 또 그아래에도 있고,,. 이렇게 간단한 프로그램이 아니라면 꽤나 혼란스러울 것이다.
그래서 MVC라는 패턴을 활용해서 이를 model, view, controller로 분리한다.
위의 코드에서
파란박스가 controller: 요청을 받아 처리하고 이를 model에 전달하고, view와 상호작용한다.
주황밑줄은 view: 사용자에게 보여지는 화면
전달되는 데이터인 result가 여기서는 model이라 할 수 있다.
이와 같은 방식을 MVC model1이라한다. 1인 이유는 2가 있기 때문이다.
MVC model2
MVC model2는 컨트롤러와 뷰를 아예 물리적으로 분리한다.
즉 각각의 파일이 분리되는 것인데, 이들의 연결은 Dispather가 해준다.
위처럼 오른쪽은 view, 왼쪽은 contorller로서의 역할을 하도록 하는 것이다.
controller를 조금더 자세히 보자.
29line: 컨트롤러와 뷰의 공통된 저장소가 필요하다. 이는 request내장 객체를 사용할 수 있다.
33line: dispather객체를 생성한다. getRequestDispather("spag.jsp")로 연결해준다.
35line: dispather.forward(request, response);로 포워딩을 하면
view에서는
request.getAttribute("result")으로 controller에서 저장한 request의 내용을 찾아서 출력한다.
'java spring > servlet&jsp' 카테고리의 다른 글
서블릿 jsp 8(프로젝트 시작하기) (0) | 2021.04.05 |
---|---|
서블릿, jsp 7(EL, 내장객체) (0) | 2021.04.04 |
서블릿 5( 동적 페이지의 필요성) (0) | 2021.04.01 |
서블릿4(application, session, cookie) (0) | 2021.04.01 |
서블릿3(여러 개의 버튼 post보내기) (0) | 2021.03.31 |