17-1에선 서블릿을 배웠다. 그러면 하나의 서블릿이 여러개의 요청들을 구분하고 받아들일수 있을까?
1. 서블릿 만들기.
우클릭 > New > Servlet 클릭.
FrontController.java
package kr.co.koo.controller;
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("*.do") // *.do는 내가 다 받겠다.
public class FrontController extends HttpServlet {
private static final long serialVersionUID = 1L;
public FrontController() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("get요청 발생");
//1. uri와 url차이 도메인뺀 context랑 파일명만있으면 uri다.
String uri= request.getRequestURI();
System.out.println("요청 uri: " + uri);
//2. 만약 context가 달라질경우 전체다 찾아서 수정을 해줘야하는가?
String conPath = request.getContextPath();
System.out.println("context path: " + conPath);
//3. 매번 uri경로를 다적어주는 번거러움을 해결하기 위해서.
String com= uri.substring(conPath.length());
System.out.println("uri - conPath : " + com);
//4. MVCModel2Basic/join.do적을필요없이 /join.do만 적으면된다.
if(com.equals("/join.do")) {
System.out.println("회원가입 요청이 들어옴!");
} else if(com.equals("/login.do")) {
System.out.println("로그인 요청이 들어옴!");
} else if(com.equals("/update.do")) {
System.out.println("정보수정 요청이 들어옴!");
} else if(com.equals("/delete.do")) {
System.out.println("회원탈퇴 요청이 들어옴!");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
controller_test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 서블릿이 단일 입구로 다 받을 수 있을까? 정답: 확장자패턴 사용하기 -->
<a href="/MVCModel2Basic/join.do">회원가입 요청</a> <br/>
<a href="/MVCModel2Basic/login.do">로그인 요청</a> <br/>
<a href="/MVCModel2Basic/update.do">정보수정 요청</a> <br/>
<a href="/MVCModel2Basic/delete.do">회원탈퇴 요청</a> <br/>
</body>
</html>
* URL_Pattern
1.디렉터리 패턴: 디렉토리 형태로 서버의 해당 컴포넌트를 찾아서 실행하는 구조이다.
ex) http://localhost:8181/cr/Hello --> /hello 서블릿
http://localhost:8181/cr/World --> /World 서블릿
2. 확장자 패턴: 확장자 형태로 서버의 해당 컴포넌트를 찾아서 실행하는 구조이다.
ex) http://localhost:8181/cr/Hello.do --> /* .do 서블릿
http://localhost:8181/cr/World.do --> /* .do 서블릿
* 확장자 패턴을 사용하면 서블릿이클라이언트측에서 오는 요청을 단입입구로 받아낼 수 있다.
'IT' 카테고리의 다른 글
17.JSP - JSTL(JSP Standard Tag Library) (0) | 2022.11.01 |
---|---|
16. JSP - EL(Expression Language) (0) | 2022.10.31 |
9. JSP 자바빈 (JAVA Bean) (0) | 2022.10.22 |
12-1. jsp - JDBC프로그래밍 PreparedStatement (0) | 2022.10.12 |
11-1. JSP - JDBC 프로그래밍 select, delete (1) | 2022.10.11 |