Servlet의 사용
디렉토리 패턴:디렉토리 형태로 서버의 해당 컴포넌트를 찾아서 실행하는 구조임
디렉토리 패턴->확장자 패턴
확장자패턴-경로가 특정 단어로 끝나면 전부 다 하나의 서블릿으로 연결해줌
서블릿 어노테이션을 " *.키워드 " 로 바꾸면 된다.
uri를 뽑을 때 어떤 내용이든간에 뽑는다. 맘대로 수정해도 그대로 뽑음
따라서 경로에 맞게 일관성있게 맞춰주는 편이 좋음
아니면 나중에 분리하기가 어려워진다.
실제 폴더경로와 맞게 하기. 경로 통일하기.
basic
<%@ 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="join.test">가입</a><br>
<a href="login.test">로그인</a><br>
<a href="logout.test">로그아웃</a><br>
<a href="/JSPBasic/controller/delete.test">탈퇴</a><br>
<a href="/JSPBasic/controller/update.test">수정</a><br>
</body>
</html>
창을 클릭하면, 이클립스 콘솔창에 sysout내용이 출력됨
TestController(Servlet)
package com.example.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;
/**
* Servlet implementation class TestController
*/
@WebServlet("*.test") //1.URL주소를 확장자패턴으로 변경
public class TestController extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doAction(request, response);
System.out.println("실행됨");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doAction(request, response);
}
//2. get, post요청을 하나로 모음
protected void doAction(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//3. 한글처리
request.setCharacterEncoding("utf-8");
//4.요청분기
//System.out.println(request.getRequestURI());
//System.out.println(request.getContextPath());//(/JSPBasic)
String path = request.getContextPath();
//문자열자르기
String command =request.getRequestURI().substring(path.length());
System.out.println(command);
switch (command) {
case "/controller/join.test":
System.out.println("가입처리");
break;
case "/controller/login.test":
System.out.println("로그인처리");
break;
case "/controller/logout.test":
System.out.println("로그아웃처리");
break;
case "/controller/delete.test":
System.out.println("탈퇴처리");
break;
case "/controller/update.test":
System.out.println("수정처리");
break;
default:
break;
}
}
}
/controller/join.test
가입처리
실행됨
/controller/login.test
로그인처리
실행됨
/controller/logout.test
로그아웃처리
실행됨
/controller/delete.test
탈퇴처리
실행됨
/controller/update.test
수정처리
실행됨
doGet과 doPost를 하나로 모으는 방법은 똑같이 생긴 doAction메서드를 지정하고 각 메서드에서 호출해주면 된다.
하나로 처리되었으므로 utf-8은 doAction메서드에서만 하면 됨
request, response를 받으므로 메서드를 전부 사용할 수 있다.
1페이지에서 경로를 통일시켰기 때문에 가져와서 맞게 자르면 switch구문에서 사용하기가 편리해진다.
'JSP' 카테고리의 다른 글
221205 servlet model (0) | 2022.12.05 |
---|---|
221205 MVC2 Servlet Controller (0) | 2022.12.05 |
221202 JSTL Format (0) | 2022.12.02 |
221202 JSTL 실습 (0) | 2022.12.02 |
221202 JSTL for문 forEach (0) | 2022.12.02 |