뚜벅이 한걸음

JSP 홈페이지 만들기 -회원가입페이지 - Controller 만들기 본문

JSP

JSP 홈페이지 만들기 -회원가입페이지 - Controller 만들기

뚜벅뚜벅뚜벅이 2022. 5. 9. 19:22
반응형

이전 포스팅에서 html로 회원가입 페이지를 만들고, 회원가입 버튼을 누르면 form 객체의 값들을 가상 주소로 넘겨주는 것까지 진행했었다.

 

 

1. Controller 만들기

 

이번 포스팅에서는 가상주소를 처리할 것이다.

 

jspstudy 프로젝트에서 controller 폴더를 만들고 FrontController와 MemberContoller를  서블릿으로 만들어준다. 

BoardController도 이후에 사용할거라 일단 만들어 두었다. 

 

 

 

FrontController를 만들었다.

처음 서블릿클래스를 만들면 이렇게 기본적으로 HttpServlet을 상속한 클래스가 만들어진다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package jspstudy.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("/FrontController")
public class FrontController extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public FrontController() {
        super();
        
    }
 
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }
 
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        doGet(request, response);
    }
 
}
 
cs


WEB-INF폴더아래 web.xml에 들어가서 가상주소로 들어오는 것들을 처리할 수있도록 맵핑해줄것이다. 

 

1
2
3
4
5
6
7
8
9
10
  <servlet>    <!-- 프론트 컨트롤러에서 웹서블릿을 *.do로 등록하는 것이 아니라 여기서 기능구현-->
  <servlet-name>FrontController</servlet-name>
  <servlet-class>jspstudy.controller.FrontController</servlet-class>
  </servlet>
  
  <servlet-mapping>
  <servlet-name>FrontController</servlet-name>
  <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  
cs

 

이렇게 적어주면 pattern이 *.do 를 처리한다.

다시말해 확장자가 .do로 오는것은 모두 FrontController에서 처리한다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package jspstudy.controller;
 
import java.io.IOException;
 
import javax.servlet.RequestDispatcher;
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("/FrontController"//wep.xmld 페이지에 *.do 확장자를 쓰면 자동으로 FrontController 로 넘어 오게 기능을 구현해놓았음
public class FrontController extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // HttpServeletRequest : Header정보, Parameter, Cookie, URI, URL 등의 정보를 읽어들이는 메소드를 가진 클래스. Body의 Stream을 읽어들이는 메소드를 가지고 있음
      //URI(Uniform Resource Identifier) : 파일의 위치를 알 수 있는 식별자  //URL(Uniform Resource Locator) : 실제 파일의 위치
        String uri = request.getRequestURI();
        String pj =request.getContextPath();
        //전체경로에서 프로젝트 이름을 뺀 나머지 가상경로 추출
        String command = uri.substring(pj.length());
        ///member/memberList.do
        
        //"/" 를 구분자로 사용 .구분자의 앞에 있는 문자열을 추출한다. 
        String[] subpath = command.split("/");
        String location =subpath[1];            //두번째 문자열 추출 예) member
        
        //가상주소의 두번째 / 앞이 member면 MemberController의 doGet 메서드가 실행되고 board면 BorderController가 실행이된다. 
        if(location.equals("member")) {    
            MemberController mc = new MemberController();
            mc.doGet(request, response);
            
        }else if(location.equals("board")) {
            BoardController bc = new BoardController();
            bc.doGet(request, response);
            
        }
    
    }
        
        
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        doGet(request, response);
    }
 
}
 
cs

 

반응형