1. jspf
JSP : Java Server Page
JSPF : Java Server Page Fragment(JSP 조각)
=> 자체로 쓰이진 않고 include할 때 포함되어 사용된다.
=> include할때 .jspf로 포함시켜 사용!
2. controller관리
controller가 많아져 오히려 관리가 어렵다.
member, notice, board 매핑값으로 구분을 해놨음
servlet을 만들 때,
URL mappings: 매핑값을 적어서 애노테이션이 생기는데
"*.me" 처럼 패턴을 만들어서 적을 수 있음(앞에 슬래시(/) 있으면 안됨)
String uri = request.getRequestURI();
주소창에 아무거나.me를 치면, 반드시 "*.me"를 매핑값으로 받는 서블릿이 돌아옴
uri = "/jsp/아무거나.me"
=> 여기서 저 "아무거나" 에 따라 수행하는 것만 다르게 해주면 되니까
값으로 뽑아서 값에 따라 Controller의 메소드를 호출해줌
여기서 보내줄 값들은 request, response에 담아 매개변수 인자값으로 보내줌
Controller에서 처리해주고, 응답화면에 대한 경로만 String값으로 다시 Servlet에게 넘겨주면 됨
=> 결론적으로 member, notice, board에 대해 각각 Servlet 하나, Controller 하나만 있으면 됨. - Servlet
@WebServlet("*.me")
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uri = request.getRequestURI();
// System.out.println(uri);
String mapping = uri.substring(uri.lastIndexOf("/") + 1, uri.lastIndexOf("."));
// System.out.println(mapping);
// Controller 클래스와 연관지어 사용해보기
MemberController mc = new MemberController();
String view ="";
boolean flag = true;
switch(mapping) {
case "A" : mc.requestA(request, response); break;
case "B" : mc.requestB(); break;
}
// 응답화면
if(flag) {
request.getRequestDispatcher(view).forward(request, response);
} else {
response.sendRedirect(view);
}
}
- Controller
package com.kh.jsp.member.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MemberController {
public String requestA(HttpServletRequest request, HttpServletResponse response) {
//System.out.println("안녕 나는 A야");
// 1. 값뽑기
String name = request.getParameter("name");
// System.out.println(name);
// 2. 데이터 가공
// 3. 서비스 호출
// 4. 응답화면 지정
String view = "views/member/memberEnrollForm.jsp";
return view;
}
public void requestB() {
//System.out.println("안녕 나는 B야");
}
}
3. include할 때 주의할 점-
include되는 파일에 있는 resources안에 있는 사진의 경로를 include하는 곳에서 인식을 못할 수 있음(경로가 include되는 파일의 resources를 찾는 경로와 include하는 파일의 resources를 찾는 경로가 다를 수 있음) => 절대경로를 지정해줘야 함
개발자도구를 이용하기.
요소를 찍어보면 스타일을 확인할 수 있음
줄 그어져 있으면 오타가 있거나 선택자우선순위에 의해 적용이 안된거다.
테이블 생성
https://www.erdcloud.com/d/2oG6rnArrAYkbPGcX