뷰, 컨트롤은 하나의 파일에서 하고 모델만(DAO) 분리한 것을 MVC1
모델 : 데이터 베이스
뷰, 컨트롤
MVC 1은 설계가 간단하여 작은 프로젝트에 어울리며, 개발 속도가 빠른 대신 소스가 복잡해져 유지보수가 어렵다.
MVC 2는 소스가 복잡하다는 MVC 1의 단점을 보완하기 위해 탄생했으며, 비교적 큰 프로젝트에 어울리고
설계 단계에서 비용이 많이 들어 개발 속도가 느리다는 단점이 있지만, 확장에 용이하고 유지보수가 수월하다는 것은
매우 큰 메리트가 될 수 있다.
서블릿의 불편함을 보완하기 위해 등장한 문서, HTML 에서 자바를 쓰게 하는것
JSP를 클라이언트에서 요청하면 문서 자체는 백단에서 실행, 클라우저 브라우저에서 HTML 실행
JSP는 HTML 처럼 생겼으나 서블릿으로 봐야한다.
HTML은 서블릿이 보내는 값을 처리할 수 없다
<%
//scriptlet html 안에 자바 소스 입력
%> MVC1 기반, 이런 방식도 효율이 떨어짐
고객이 찾아와서 다른 부서로 가야된다고 말만 해주는것
가져가야 할 데이터가 없으면 사용foward
고객이 찾아오면 내용을 가지고 직원이 다른부서에서 일처리하고 오는것
가져가야할 데이터가 있으면 사용
EL : EXPRESSION LANGUAGE :MVC2 구조에서 SERVLET을 거쳐 넘어온 자바 데이터를 JSP에서 표현하기 위한 표기법
JSTL : JAVA STANDARD TAG LIBRARY : EL 가지지 못한 기본적인 기능을 지원하는 태그형식의 문법 라이브러리 , jar 라이브러리 파일과 태그립이 상단에 있어야 한다.
```
EL : EXPRESSION LANGUAGE :MVC2 구조에서 SERVLET을 거쳐 넘어온 자바 데이터를 JSP에서 표현하기 위한 표기법
JSTL : JAVA STANDARD TAG LIBRARY : EL 가지지 못한 기본적인 기능을 지원하는 태그형식의 문법 라이브러리
<hr>
${val1}:${val2}:${val3} : : ${val1 > val3}: ${val1+val3}
<hr>
${array[0]} : ${array[1]}
<hr>
${dto.id}:${dto.writer}:${dto.message}
<hr>
${list[0].id} ${list[0].writer} ${list[0].message}
<hr>
<c:choose>
<c:when test="${not empty list}"> <!-- 비어있지 않다면 -->
<c:forEach var="i" items="${list}"> <!-- jstl에선 "" 필수 -->
${i.id}:${i.writer}:${i.message}<br>
</c:forEach>
</c:when>
<c:otherwise>
출력할 내용이 없습니다
</c:otherwise>
</c:choose>
상대경로
현재 어디를 보고 있느냐에 따라 주소값이 다름
경로 멘 앞에 슬러시가 없으면 상대경로
절대경로
절대주소값 있는그대로
경로 멘 앞에 슬러시가 있으면 절대경로
localhost (ip)를 입력하면 webapp으로 들어온다는것
/ 붙여도 webapp에서부터 시작
멤버폴더 안에 있는 화면을 열고 webapp 밑에 있는 index.jsp로 갈떄
../index.jsp
/index.jsp ../ 이나 /를 사용하여 webapp위치로 가서 경로 이동
상대경로는 짧게써도 되는 경우가 생김
절대경로 사용하는게 좋다
if (regxresult) {
alert("사용 가능한 id 형식입니다")
window.open("/idcheck.mem?id="+id,"","width=400, height=300");
} else{
alert("id 형식이 아닙니다")
}
/idcheck해야됨
상대경로로 보냈을때 url 출력하면 멤버폴더 밑에 있는 듀플체크
/를 붙여 절대경로로 webapp에서 찾겠다
절대경로든 상대경로든 코드를짤순 있는데
System.out.println('요청+uri"+uri);
절대경로를 쓰고나서 페이지 이동시
현재 위치를 생각을해라