23.05.04

이준영·2023년 5월 4일
0

url 방식 ( model2 )

controller
write.do
write_ok.do ... 등


http://localhost/ParameterEx01/controller?path=view1 <-- parameter
http://localhost/ParameterEx01/view1.do <-- url

url 방식으로 생성하기

  1. 컨트롤러 패키지 만들고 안에 서블릿 생성

url은 *.do 방식으로 매핑 (do는 다르게 써도 상관 x)


  1. 경로 구하기

getRequestURI - 전체 경로
getContextPath - 프로젝트명

두 개를 빼주면 현재 내 경로를 알 수 있다.(replaceAll 쓴다는 의미)

protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//request.setCharacterEncoding("utf-8");
		
		System.out.println(request.getRequestURI());
		System.out.println(request.getContextPath());
		
		String path = request.getRequestURI().replaceAll(request.getContextPath(),"");
	}


  1. 컨트롤러 처리해주기

위에 경로 구하는 것 넣는 거 빼곤 parameter와 동일하다.

protected void doProcess(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		try {
			request.setCharacterEncoding("utf-8");
			
			//System.out.println(request.getRequestURI());
			//System.out.println(request.getContextPath());
			
			String path = request.getRequestURI().replaceAll(request.getContextPath(),"");
			//System.out.println(path);
			
			
			String url = "/WEB-INF/views/error.jsp";
			
			if(path.equals("") || path.equals("/*.do") || path.equals("/view.do")) {
				
				url = "/WEB-INF/views/view1.jsp";
				
			}
			else if(path.equals("/view2.do")) {
				
				url = "/WEB-INF/views/view2.jsp";

			}
			
			RequestDispatcher dispatcher = request.getRequestDispatcher(url);
			dispatcher.forward(request, response);
			
		} catch (UnsupportedEncodingException e) {
			System.out.println("[에러] : " + e.getMessage());
		} catch (ServletException e) {
			System.out.println("[에러] : " + e.getMessage());
		} catch (IOException e) {
			System.out.println("[에러] : " + e.getMessage());

		}
	}

}
  1. view1.jsp / view2.jsp 만들어서 컨트롤러 실행




가상 디렉토리 추가하기

  1. 조건문 view2 url 밑에 추가 ( 앞에 /board를 넣어 가상 디렉토리로 추가한다.)

			//가상 디렉토리 개념(board)
			else if(path.equals("/board/view3.do")) {
				
				url = "/WEB-INF/views/view3.jsp";

			}
			else if(path.equals("/board/view4.do")) {
				
				url = "/WEB-INF/views/view4.jsp";

			}
  1. 각각 jsp 생성하고 실행



게시판 url 방식으로 model2 처리

기존과 다른점

  1. url 방식이기 때문에 링크 이동방식이 차이가 있음
ex >
parameter - > "./controller?path=~~  (보통 path로 사용, 변경 가능)

url -> "~~.do"   (보통do,  변경 가능)
  1. form action 부분에서의 차이

parameter는 hidden을 사용했지만, url은 그냥 action에다가 넘겨주는 링크 적으면 끝(seq 넘겨야 할 때만 hidden 사용)

ex >

parameter -> <form action="controller" method="post" >
	<input type="hidden" name="path" value="delete_ok" /> ...


url -> <form action="delete_ok.do" method="post" name="frm">
	<input type="hidden" name="seq" value="<%=seq %>" /> ...

다른 부분은 거의 비슷

profile
끄적끄적

0개의 댓글