我有一个网站,其中有一个类似 xyz.com/abc.jsp?user=5 的 URL
现在如果这个用户的 id 为 5 ; 想要创建一个像 deepakagra 这样的句柄,以便他可以通过 xyz.com/deepakagra 访问他的个人资料;我怎样才能实现它?
我在tomcat上使用jsp,servlet。
您必须将“deepakagra”解析为页面的 GET 参数,然后进行数据库查找以找到该用户名的 ID 并获取您想要的内容。
由于您有 servlet,您始终可以创建 servlet 并将 web.xml 中的 servlet-mapping 定义为“deepakagra”,这会将您的请求转发到 abc.jsp。
如果我理解正确,您不想在 GET 中使用参数。当你点击 localhost:8080/profile/deepakagra 时,如果它映射到模式,它应该调用这个 servlet
@WebServlet(name="profile", urlPatterns={"/profile/*"} )
public class ProfileServlet extends HttpServlet {
....
protected final String getProfileId(HttpServletRequest request ){
String base = request.getPathInfo();
String id = null ;
if( base.split("/").length >= 2 )
id = base.split("/")[1] ;
return id ;
}
然后在您的 GET/POST 方法中调用 getProfileId 并获取 ID。您从数据库中提取它,进行您需要的处理,然后转发到 JSP。
注意:此代码未经测试。
我使用了 tuckey 的 urlrewrite。在这里,我们可以轻松地创建一个可以实现上述目标的规则。