>  기사  >  Java  >  Servlet이 JSP 페이지로 점프한 후 경로 문제에 대한 설명

Servlet이 JSP 페이지로 점프한 후 경로 문제에 대한 설명

巴扎黑
巴扎黑원래의
2017-07-17 13:49:262273검색

1. 현상 및 개념

1. 문제

서블릿이 JSP 페이지로 전달되면 브라우저 주소 표시줄에 서블릿의 경로가 표시되지만 JSP 페이지의 하이퍼링크가 여전히 상대적인 경우 JSP 페이지 Servlet의 주소와 JSP 페이지의 주소가 같은 폴더에 있지 않으면 경로 혼동이 발생합니다.

2. 절대 경로 개념

contextPath(현재 웹 애플리케이션의 컨텍스트)에 대한 상대 경로입니다.

해결책: 하이퍼링크에 상대 경로 대신 절대 경로를 사용하세요. /가 사이트의 루트 디렉터리를 나타내는 경우 그 앞에 contextPath를 추가하세요.

<a href="<%= request.getContextPath() %>/TestServlet">To B</a>

2. Java Web 개발에서 '/'의 의미 요약

1 현재 웹 애플리케이션의 루트 경로

'/'는 http://localhost:8080/contextPath/를 나타냅니다. : 서블릿 처리된 주소에서 옵니다

1) 전달: request.getRequestDispatcher("/path/b.jsp").forword(request, response);

2) web.xml 파일에 서블릿 액세스 경로 매핑

<servlet-mapping><servlet-name>TestServlet</servlet-name><url-pattern>/TestServlet</url-pattern></servlet-mapping>

3) 다양한 맞춤 태그에 '/'를 사용합니다.

2 웹 사이트의 루트 경로

'/'는 브라우저에서 처리되는 주소인 http://localhost:8080/을 나타냅니다.

1) 하이퍼링크: /TestServlet ">To B

2) 양식 태그의 작업:

/b.jsp">

3) 리디렉션: response.sendRedirect("/b .jsp ");


3. 사이트 루트 디렉터리 및 CSS 경로 문제 (jsp는 서버측 프로그램이라 주소가 바뀌고, 참조 시 일반적으로 사이트 루트 디렉터리의 상대 경로를 사용합니다.)
우리는 /test/…와 같은 상대 경로를 사이트 루트 디렉터리에 대한 상대 경로라고 합니다.
jsp에 CSS를 도입할 때 상대 경로가 현재 jsp 파일에 상대적이고 jsp 경로와 다른 서블릿에 jsp를 전달하면 CSS 스타일이 전혀 작동하지 않는 것을 알 수 있습니다. . 이는 서블릿에서 전달할 때 CSS 경로가 jsp 경로가 아닌 서블릿에 대한 상대 경로이기 때문입니다. 따라서 현재 jsp에서는 다음과 같은 경로를 사용할 수 없습니다. 또는 href="one.css" 및 ../../one.css와 유사한 HTML 상대 경로는 이 CSS를 참조하는 파일에 상대적입니다( a.jsp) 상대 경로. 서블릿으로 전달하는 경우에는 서블릿에 대한 상대 경로이므로 jsp 경로와 서블릿 경로가 다르기 때문에 이러한 참조가 잘못되었을 수 있습니다.
따라서 이때는 http://192.168.0.1/에 상대적인 디렉터리이고 "/"로 시작하는 사이트 루트 디렉터리를 사용해야 합니다.
따라서 위 오류는 href="/test/one.css"와 유사한 사이트 루트 디렉터리에 상대적인 디렉터리로 수정되어야 합니다. 이런 방식으로 서블릿이 전달된 후 jsp에서 상대 경로는 사이트 루트 디렉터리에 상대적이며 정의된 CSS 스타일을 올바르게 사용할 수 있습니다.


페이지 점프 문제:

Forward가 높고 Redirect가 낮습니다. Redirect 프로세스가 이와 같기 때문에 request1이 서버로 전송되고 서버가 다시 클라이언트로 반환된 다음

request2가 전송됩니다. 하지만 Forward는 서버 측에서만 처리되며 클라이언트 측에는 투명합니다. Redirect에는 두 개의 전송이 있으므로 효율성이 낮습니다.

범위:
request.setAttribute()에 대해 전달되는 개체에는 생존 범위는 요청 내에서만 가능하므로 Redirect 메서드를 사용하면 요청에 포함된 개체가 손실됩니다.


위 내용은 Servlet이 JSP 페이지로 점프한 후 경로 문제에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.