[英]What's the best way to mapping /newyork to /area.jsp?id=1?
我正在使用
http://example.com/area.jsp?id=1
並想要創建一個映射路徑
http://example.com/newyork
映射到/area.jsp?id=1
我如何做到最好?
注意:我正在使用Resin(java)+ Nginx
使用Nginx的重寫模塊將一個URL映射到area.jsp?id = 1 URL
這是我的想法,在您的Web應用程序中創建一個過濾器,當您在doFilter
方法中收到類似/area.jsp?id=1
的請求時,將該請求轉發到http://example.com/newyork
。
在web.xml
:
<filter>
<filter-name>RedirectFilter</filter-name>
<filter-class>
com.filters.RedirectFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>RedirectFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
編寫以下類並將其放在WEB-INF/classses
:
class RedirectFilter implements Filter
{
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException
{
String scheme = req.getScheme(); // http
String serverName = req.getServerName(); // example.com
int serverPort = req.getServerPort(); // 80
String contextPath = req.getContextPath(); // /mywebapp
String servletPath = req.getServletPath(); // /servlet/MyServlet
String pathInfo = req.getPathInfo(); // area.jsp?id=1
String queryString = req.getQueryString();
if (pathInfo.IndexOf("area.jsp") > 1)
{
pathInfo = "/newyork";
String url = scheme+"://"+serverName+contextPath+pathInfo;
filterConfig.getServletContext().getRequestDispatcher(login_page).
forward(request, response);
} else
{
chain.doFilter(request, response);
return;
}
}
}
在存儲這些區域ID的數據庫中,添加一個名為“ slug”的列,並在其中填充要使用的名稱。 ID為1的“子彈”為“ newyork”。 現在,當對這些URL之一的請求進入時,請按“ slug”而不是id查找行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.