java - 创建 Java Servlet 或 JSP 的最佳方法是什么,该 Java Servlet 或 JSP 可以根据 URL 参数选择性地包含内容

标签 java jsp servlets jakarta-ee

我想创建一个以两种方式工作的 JSP 页面或 servlet。

用户访问自己的个人资料页面:

http//something.com/profile/

或者他们访问他们的 friend 页面:

http://something.com/profile/FriendsName

他们也可以通过一个明确的 URL 来访问他们自己的页面,例如: http://something.com/profile/YourName

我有一个 servlet 映射设置,将任何对/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 以在/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" /> 

最佳答案

我认为过滤器只能人为地分解逻辑。您可以很容易地确定与 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
   }
%>

这对请求 bean 一点帮助都没有,但我认为它对设计有帮助。

关于java - 创建 Java Servlet 或 JSP 的最佳方法是什么,该 Java Servlet 或 JSP 可以根据 URL 参数选择性地包含内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/836589/

相关文章:

java - 如何让 Kotlin 停止将参数转换到错误的类(接口(interface))

java - 在java中编译和部署选定的模块

java - 在循环中一个一个地创建套接字数量

java - Spring security 登录后如何跳转到另一个页面

javascript - Spring MVC Js 和 css 不加载

java - 我的应用程序/服务应该将其配置文件存储在 Windows 中的什么位置?

html - 如何在特定显示标签标题上显示图像图标?

javascript - 将json数组解析为java字符串数组

java - 使用jsp页面导入时Cannot Find Symbol错误

java - 在eclipse项目中使用neo4j数据库