controller
write.do
write_ok.do ... 등
http://localhost/ParameterEx01/controller?path=view1 <-- parameter
http://localhost/ParameterEx01/view1.do <-- url
url은 *.do 방식으로 매핑 (do는 다르게 써도 상관 x)
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(),"");
}
위에 경로 구하는 것 넣는 거 빼곤 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());
}
}
}
//가상 디렉토리 개념(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";
}
기존과 다른점
ex >
parameter - > "./controller?path=~~ (보통 path로 사용, 변경 가능)
url -> "~~.do" (보통do, 변경 가능)
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 %>" /> ...
다른 부분은 거의 비슷