Jsp - MVC2, path 얻기,web.xml

2020. 8. 4. 17:38JSP-MVC model2

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>JSP_Model2_Basic_2</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
<!--   web.xnml(배포서술자)를 사용하여 서블릿 주소 매핑 방법 -->
<!-- 1. servlet 태글르 사용하여 서블릿 이름과 서블릿 클래스 지정 -->
<!-- -servlet-name 태그에 서블릿의 이름(아무거나)을 지정 -->
<!-- 뒤에 나올 servlet-mapping 태그 내에서 지정할 때 동일해야함 -->
<!-- -servlet-class 태그에 서블릿 클래스의 이름(패키지 포함)을 지정  -->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet2</servlet-class>
</servlet>
<!-- 2. servlet-mapping 태그를 사용하여 servlet 태그에 지정한 서블릿을 매핑(연결) -->
<!-- -servlet-name 태그에 servlet 태그의 servlet-name 에서 지정한 이름을 지정 -->
<!--     -url-pattern 태그에 서블릿 주소의 패턴(*.XXX) 형식을 지정 -->
<!--     =>주소창에 서블릿주소명.XXX으로 패턴이 인식되면 해당 서블릿 클래스가 사용됨  -->
 
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>*.me</url-pattern>
</servlet-mapping>
 
  
</web-app>
//------------------------web.xml ----------------------------
 
package 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;
 
/**
 * Servlet implementation class BoardFrontController
 */
 
// URL 에 요청된 서블릿 주소가 XXX.bo 로 끝날 경우
//해당 주소를 서블릿 클래스인 BoardFrontController 클래스로 연결(매핑)
@WebServlet("*.bo")
public class BoardFrontController extends HttpServlet {
    //서블릿 클래스 정의 시 HttpServlet 클래스를 상속받아 정의
    // GET 방식 요청, POST 방식 요청에 해당하는 doGet(),doPost() 메서드 오버라이딩
    // 두 방식을 공통으로 처리하기 위해 doProcess() 메서드를 별도로 정의하여 호출
    
    public void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        System.out.println("BoardFrontController");
        
        //POST 방식 요청에 대한 한글 처리
        request.setCharacterEncoding("UTF-8");
        
        //요청 URL에 대한 판별
        //1.요청 URL 주소 중 서버 주소과 포트번호를 제외한 프로젝트명/서블릿주소 부분 추출
//        String requestURI=request.getRequestURI();
//        System.out.println("Requested URI : "+requestURI);
//        
//        //2.요청 URL 중 프로젝트명 부분 추출
//        String contextPath=request.getContextPath();
//        System.out.println("contextPath : "+contextPath);
//        
//        //3.1번과 2번 문자열을 사용하여 서블릿주소 부분 추출
//        //프로젝트명 문자열 길이에 해당하는 부분부터 마지막까지 추출
//        String[] commend=requestURI.split("/");
//        System.out.println("commend : "+commend[2]);
        
//        String commend=requestURI.substring(contextPath.length());        //방법 2
//        System.out.println("commend : "+commned);
        //-----------------------------------------------------
        //위의 1~3번 과정을 결합한 메서드 : getServletPath()
        String commend = request.getServletPath();
        System.out.println("Commend : "+commend);
        
        //추출된 서블릿 주소에 따라 각각 다른 작업을 수행하도록 제어
        //BoardWriteForm.bo 일 때, BoardWriteForm 출력
        // BoardWritePro.bo 일 때, BoardwritePro 출력
        if(commend.equals("/Main.bo")) {
//            response.sendRedirect("index.jsp");
            RequestDispatcher dispatcher=request.getRequestDispatcher("index.jsp");
            dispatcher.forward(request, response);
        }else if(commend.equals("/BoardWriteForm.bo")) {
            System.out.println("BoardWriteForm");
        }else if(commend.equals("/BoardWritePro.bo")) {
            System.out.println("BoardWritePro");
        }
        
//        if(commend.equals("/BoardWriteForm.bo")) {
//        }else if(commend.equals("/BoardWritePro.bo")) {
//        }
//        System.out.println(commend);
        
        
        
    }
    
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public BoardFrontController() {
        super();
    }
 
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //GET 방식 요청에 의해 doGet() 메서드가 호출되면 doProcess(0메서드를 호출하여
        //request 객체와 response 객체를 파라미터로 전달
        doProcess(request, response);
    }
 
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //POST 방식 요청에 의해 doPost() 메서드가 호출되면 doProcess(0메서드를 호출하여
        //request 객체와 response 객체를 파라미터로 전달
        doProcess(request, response);
    }
    
    
 
}
 
cs

web.xml에서는 servlet-name을 일치시켜야 하고 틀리면 서버가 실행이 되지 않고, Mapping(연결)을 시켜야 하므로

잊어먹지 말고 추가해 주자. url-pattern 태그에서는 주소에 입력될 형식을 지정해주어서 지정된 형식으로 입력이 완료되면 바로 해당 servlet으로 이동을 시켜주는 형식이다. 

 

그리고 주소값을 얻어서 주소 값에 해당하는 페이지로 이동을 시켜주는 것을 배워보았다.

path 값을 얻기위해서 getServletPath() 메서드를 사용하여 /주소 값을 얻고 그것을 if문을 활용하여 해당하는 페이지를 찾아서 이동시켜준다.  

'JSP-MVC model2' 카테고리의 다른 글

Jsp-MVC2 -DAO  (0) 2020.08.10
Jsp -MVC2- Action,ActionForward  (0) 2020.08.10
Jsp-MVC2-FrontController  (0) 2020.08.10
Jsp-MVC2,Connection Pool  (0) 2020.08.10
Jsp - MVC model2,MVC2  (0) 2020.08.04