簡體   English   中英

創建Java Servlet或JSP的最佳方法是什么,可選擇包含取決於URL參數的內容

[英]What is the best way to create a Java Servlet or JSP that optionally includes content depending on URL parameters

我想創建一個可以兩種方式工作的JSP頁面或servlet。

用戶訪問他們自己的個人資料頁面:

HTTP // something.com /資料/

或者他們訪問他們的朋友頁面:

http://something.com/profile/FriendsName

他們還可以通過明確的URL訪問他們自己的頁面,例如: http//something.com/profile/YourName

我有一個servlet映射設置如下,將任何請求映射到/我的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,以便在/ profile /之后讀取。

  <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>

現在過濾器可以在HttpServletRequest中設置屬性,我如何在JSP頁面中拉出這些屬性以檢查是否指定了用戶名並檢查是否設置了自己的名稱?

我將如何在ServletFilter中創建頁面范圍的bean,以便我可以在JSP頁面中使用jspBean,如下所示:

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

我認為過濾器只能人為地打破邏輯。 您可以非常輕松地確定URL部分的值,該值與web.xml中描述的url-pattern不匹配。 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
   }
%>

這對請求bean沒有任何幫助,但我認為它有助於設計。

我沒有完全關注這個問題,但是如果你想讓一個jsp訪問請求參數或屬性,那就做:

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

%>

您還可以訪問請求網址等...如果您需要對這些網址執行任何操作。

就個人而言,我建議您使用servlet來處理您的請求,並轉發到您選擇的jsp(可能在設置了jsp可以使用的會話信息之后)。

對這類事情使用服務器級過濾器和請求屬性可能有點矯枉過正,但只有您了解項目的真實要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM