[JSP] 10. JSP 폴더 구성에 대한 것
이전 게시글을 따라 수행하면, 허점이 하나 있다는 것을 알 수 있다.
뷰 파일로 만든 .jsp파일을 직접 주소만 알게 되면, 접근할 수도 있다는 취약점이 있다.
1. [JSP] 9. MVC 디자인 패턴 - 초간단 이해, FrontController 패턴(1), 2020. 9. 20. 17:24
이러한 점을 설명하면서 알아두면 좋은 폴더의 구성에 대해서 소개하려고 한다.
[JSP 폴더에 대한 설명]
1) 프로젝트명/java resources/src/
servlet, Class, Interface 등 예를 들면 java파일을 담는 곳
- src 밑에 폴더 만들어서 작성
예) someFolder, SomeClass.java 식으로 사용
프로젝트를 개설해보면, 일부 살짝 차이가 있을 수 있겠으나 통상적으로 비슷하다.
2) 프로젝트명 "webContent"
- jsp 문서를 작성하면 된다.
3) 프로젝트명/webContent/WEB-INF/
- 아래는 접근이 안됨, 보안 영역임.
- 프로젝트명/webContent/WEB-INF/lib/ 폴더에 각종
jar 파일, ojdbc6 등을 붙여 넣어야 실행이 가능함.
※ jsp는 주소가 노출되어 있어서 공격을 받을 수 있다
그래서,
@webServlet("*.do")와 같은 URL Mapping 어노테이션을 사용하여 URL 숨김 효과를 본다.
또는 web.xml 에 정의하여 사용.
2. 9번 글 - 프로젝트에 적용해보기
WebContest에 있는 addressInsert.jsp와 addressList.jsp를 WEB-INF안에 view 폴더를 만들어서 이동시킨다.
그림 1) WEB-INF\view 폴더에 있는 jsp파일 실행시키기
jsp파일 경로를 입력하였으나 동작되지 않는 것을 확인할 수 있다.
2-1. 소스코드 변경하기
서블릿으로 WEB-INF\View에 있는 jsp파일을 사용하려면,
AddressInsertController.java와 AddressListController.java의 파일 내용을 수정한다.
그림 2) 수정된 AddressInsert.java 파일
그림 3) 수정된 AddressList.java 파일
package com.eduJsp.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AddressInsertController implements Controller {
@Override
public void execute(HttpServletRequest req, HttpServletResponse res) throws
ServletException, IOException{
HttpUtil.forward(req, res, "/WEB-INF/view/addressInsert.jsp");
}
}
package com.eduJsp.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AddressListController implements Controller {
@Override
public void execute(HttpServletRequest req, HttpServletResponse res) throws
ServletException, IOException {
HttpUtil.forward(req, res, "/WEB-INF/view/addressList.jsp");
}
}
3. 결과
서블릿을 통해서 결과를 확인해보면, 이해할 수 있을 것으로 보인다.
그림 4) Servlet 파일(*.do) - 호출하기
4. 작업내용 정리해보기
변경작업을 수행한 이력을 체크해본 것이다. 조금 알기 쉽게 표기해보았으니 참고하여 정리해보면 좋을 듯 하다.
그림 5) 프로젝트 구조 - 변경 사항
'소프트웨어(SW) > JSP' 카테고리의 다른 글
[JSP] 12. Jsp/Servlet(MVC) Maven 기반의 다중 파일 업로드, 다운로드 구현(1) (2) | 2020.09.24 |
---|---|
[JSP] 11. WAR 배포하기 - 웹 사이트 올리기 (8) | 2020.09.22 |
[JSP] 9. MVC 디자인 패턴 - 초간단 이해, FrontController 패턴(1) (2) | 2020.09.20 |
[JSP] 8. 영속프레임워크 MyBatis를 활용한 CRUD 구현 - JSP와 Oracle(XML 방식) (3) | 2020.09.19 |
[JSP] 7. JSP, Servlet(JDBC) 프로그래밍 (2) | 2019.11.23 |