반응형
- 우선순위 : 특정할 수 있는 매핑 -> 디렉토리 패턴 매핑 -> 확장자 패턴 매핑
- TestServlet1 생성 (특정할 수 있는 매핑)
package sec02.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/first/test")
public class TestServlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("TestServlet1 : 서블릿 매핑");
}
}
가장 우선순위가 높음
- TestServlet2 생성 (디렉토리 패턴 매핑)
package sec02.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/first/*")
public class TestServlet2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("TestServlet2 : 서블릿 매핑");
}
}
/first/ 뒤에 아무거나 요청해도 받음
- TestServlet3 생성 (확장자 패턴 매핑)
package sec02.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("*.do")
public class TestServlet3 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("TestServlet3 : 서블릿 매핑");
}
}
모든 요청 URL 패턴 지정하기전 까진
.do 만 붙이면 다 3번으로 넘어감
- TestServlet4 생성 (모든 요청 URL 패턴)
package sec02.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/*")
public class TestServlet4 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("TestServlet4 : 서블릿 매핑");
}
}
/first/ 밑 /first/test 외에 모든 요청은 다 /* 가 받음
*.do는 이제 받지 못함
실습 다됐으면 test3번과 4번 매핑 주석처리
- contextPath, RequestURL, RequestURI, 서블릿 매핑
TestServlet1 에 작성
package sec02.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/first/test")
public class TestServlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("TestServlet1 : 서블릿 매핑<br><br>");
String contextPath = request.getContextPath(); // /pro11
String url = request.getRequestURL().toString();
String uri = request.getRequestURI();
String mapping = request.getServletPath();
out.print("컨텍스트 패스 : " + contextPath + "<br>");
out.print("URL : " + url + "<br>");
out.print("URI : " + uri + "<br>");
out.print("서블릿 매핑 : " + mapping + "<br>");
}
}
/first/test로 요청
TestServlet2 에 작성
package sec02.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/first/*")
public class TestServlet2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("TestServlet2 : 서블릿 매핑<br><br>");
String contextPath = request.getContextPath(); // /pro11
String url = request.getRequestURL().toString();
String uri = request.getRequestURI();
String mapping = request.getServletPath();
out.print("컨텍스트 패스 : " + contextPath + "<br>");
out.print("URL : " + url + "<br>");
out.print("URI : " + uri + "<br>");
out.print("서블릿 매핑 : " + mapping + "<br>");
}
}
/first/member/join으로 요청해봄
- BoardServlet 생성
주소 자르기
package board;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/board/*")
public class BoardServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request, response);
}
private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String contextPath = request.getContextPath();
String uri = request.getRequestURI();
String mapping = request.getServletPath();
uri = uri.substring(contextPath.length(), uri.length());
String command = uri.substring(mapping.length(), uri.length());
System.out.println(command);
if(command.equals("/list")) {
System.out.println("게시글 조회");
} else if(command.equals("/write")) {
System.out.println("글쓰기");
} else if(command.equals("/update")) {
System.out.println("글수정");
} else {
System.out.println("존재하지 않는 페이지");
}
}
}
http://localhost:8090/pro11/board/list
http://localhost:8090/pro11/board/write
http://localhost:8090/pro11/board/update
http://localhost:8090/pro11/board/asdfasdf
반응형
'학습 > JSP' 카테고리의 다른 글
20. 디렉티브 태그 (0) | 2022.11.16 |
---|---|
18. Filter API (0) | 2022.11.16 |
19. 여러 가지 서블릿 관련 Listener API (0) | 2022.11.15 |
16. 종합(회원목록, 추가, 삭제, 로그인) (0) | 2022.11.14 |
15. 세션 (0) | 2022.11.10 |
댓글