카테고리 없음

#62. controller관리, 세미프로젝트 테이블생성

열하나요 2023. 9. 27. 10:01

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

 

배고프조

기술적인 관점에서 접근하기

www.erdcloud.com