【问题标题】:Hide servlet name in the url在 url 中隐藏 servlet 名称
【发布时间】:2014-03-12 15:18:19
【问题描述】:
在一个网站中,我在这样的导航栏中有一些链接
<li><a href="?page=pagename">PAGE</a></li>
我在 JSP 页面中用 JAVA 加载链接页面,然后通过 GET 通过表单提交数据,之后我的 URL 变为
www.sitename.com/Servlet
然后我无法加载页面
?page=pagename
因为我在 URL 中有 Servlet 名称。
如何隐藏或删除 servlet 名称?
【问题讨论】:
标签:
java
jsp
servlets
url-mapping
【解决方案1】:
在您的web.xml 中使用servlet-mapping:
<servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
【解决方案2】:
如果所有这些 JSP 都在一个公共路径中,那就更容易了。例如。 /app/*。
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>com.example.FriendlyURLServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
与
request.getRequestDispatcher("/WEB-INF" + request.getPathInfo() + ".jsp").forward(request, response);
这假定 JSP 位于 /WEB-INF 文件夹中,因此无法直接请求它们。这将在http://example.com/app/search 上显示/WEB-INF/search.jsp。