2009-05-07 3 views
3

두 가지 방식으로 작동하는 JSP 페이지 또는 서블릿을 만들고 싶습니다.URL 매개 변수에 따라 내용을 선택적으로 포함하는 Java Servlet 또는 JSP를 만드는 가장 좋은 방법은 무엇입니까

사용자는 자신의 프로필 페이지를 방문 :

HTTP // something.com/프로필/

또는 그들의 친구 페이지를 방문하십시오

http://something.com/profile/FriendsName

그들은 또한 방문 할 수 그들의 자신의 페이지를 다음과 같은 명시 적 URL을 통해 업로드하십시오. http://something.com/profile/YourName

나는 rvlet-mapping 설정을 사용하여/profile에 대한 모든 요청을 해당 요청을 처리 할 JSP로 매핑합니다.

<servlet> 
      <servlet-name>Profile</servlet-name> 
      <jsp-file>/profile.jsp</jsp-file> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>Profile</servlet-name> 
    <url-pattern>/profile</url-pattern> 
    </servlet-mapping> 

그럼 내가 설정은/프로필/후 읽기 위해 HttpServletRequest의의 URL을 구문 분석하는 필터를 수 생각했다.

<filter> 
    <filter-name>profile-filter</filter-name> 
    <filter-class>ProfileFilter</filter-class> 
    </filter> 

    <filter-mapping> 
    <filter-name>profile-filter</filter-name> 
    <url-pattern>/profile*</url-pattern> 
    </filter-mapping> 

지금은 사용자 이름이 지정된 경우 확인하고 자신의 이름이 설정되어 있는지 확인하는 JSP 페이지에서 사람들을 잡아 당겨 가겠어요 어떻게 HttpServletRequest의의 속성을 설정할 수 있습니다 필터,? 내가 페이지를 만드는 방법에 대해 갈 것이라고 어떻게

그래서 나는이 같은 jspBean를 사용하여 JSP 페이지에서 사용할 수있는 ServletFilter를에 콩을 범위 :

<jsp:useBean id="profileInfo" scope="page" class="ProfileInfo" /> 

답변

1

필자는 필터가 인위적으로 로직을 분리하는 역할을한다고 생각합니다. web.xml에 설명 된 url 패턴과 일치하지 않는 URL 부분의 값을 매우 쉽게 판별 할 수 있습니다. HttpServletRequest 클래스에는이 값을 반환하는 메서드가 있는데, getPathInfo()이라고합니다. 다음은 예입니다 : 이것은 모든 요청 콩 도움이되지 않습니다

<% 
    String path = request.getPathInfo(); 
    if (path == null || "".equalsIgnoreCase(path)) { 
     // The path was empty, display the current user's profile 
    } else { 
     // Display the named profile 
    } 
%> 

,하지만 난 그것을 설계에 도움 생각합니다.

+1

같은 처리 (요청 getPath()에서 사용자의 ID를 꺼내야하는 여러 서블릿이나 JSP (프로필, 블로그, 사진 등)가있는 경우 필터가 적절할 것이라고 생각합니다. – Dougnukem

0

내가 완전히 질문을 다음 아니지만, 당신이 원하는 경우 JSP로는 수행 요청 매개 변수 또는 속성에 액세스 : 당신이 그와 함께 아무것도 할 필요가있는 경우

<% 
    String parameter = request.getParameter("parameter"); 
    String attribute = request.getAttribute("attribute"); 

%> 

또한 ... 등 요청 URL에 대한 액세스 권한을 얻을 수 있습니다.

개인적으로 저는 서블릿을 사용하여 요청을 처리하고 원하는 JSP로 전달할 것을 권장합니다 (JSP에서 사용할 수있는 세션 정보를 설정 한 후 가능할 수 있음).

이런 종류의 서버 수준 필터와 요청 특성을 사용하면 약간 과잉이 될 수 있지만 프로젝트의 실제 요구 사항 만 알면됩니다.

관련 문제