如何在JSP中使用基于用户名的url?

时间:2014-11-13 23:03:40

标签: java jsp servlets url-rewriting

我正在尝试创建基于用户的JSP Web应用程序。在这个应用程序中,我想添加社交网站的个人资料功能,它看起来像网站/用户名和网站/用户档案等。

相信我,我不想制作任何其他不受欢迎的社交网站。但在我的网站中,我想添加类似网站/用户名/即将显示该特定人的页面的功能"用户名"和其他功能,如网站/用户名/联系人,网站/用户名/技能等。如果有人登录,那么我想使用网站/用户名/设置,网站/用户名/帐户,网站/用户名/编辑等所以任何人都可以告诉我怎么能用JAVA / JSP创建这个webapp?使用servlet,我可以进行网站/设置,网站/帐户,网站/编辑等,但我不想这样做。我想按照我的描述做(使用用户名功能)。任何人都可以建议我应该怎么做,如果有任何框架可以帮助我,请告诉我。现在,我只使用带有eclipse的jsp / java,所以我需要更改IDE吗?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

有各种Web框架可以让您开发RESTFul Web应用程序(例如Struts,JSF,Spring MVC等)。我个人更喜欢Spring MVC,你可以阅读更多关于它的信息here

答案 1 :(得分:0)

我认为你不需要为servlet以外的任何东西使用任何API来完成它。 您所需要的只是使用request.getPathInfo()

您必须创建一个控制器servlet或过滤器,例如您在问题中指定的site。这个site servlet将充当控制器,您将使用site/Anurag/contact,其中Anurag是用户的名称,在这种情况下,它是我。 request.getPathInfo()将返回/Anurag/contact

你可以像这样处理它

String pathInfo = request.getPathInfo();
String[] pathParams = {};
if(validations for pathInfo){
 pathInfo  = pathInfo.substring(pathInfo.indexOf("/")+1);    
 pathParams  =  pathInfo.split("/");
}

pathParams [0]将拥有用户名

pathParams [1]将具有用户想要执行的操作名称

if(pathParams[1].equalsIgnoreCase("contact")){
    then redirect to View for contact
}

OR

if(pathParams[1].equalsIgnoreCase("setting")){
    then redirect to View for setting
}

可以这种方式实现。 我认为stackoverflow以相同的方式重定向到问题。可能它使用API​​,我不知道,但它会清除我想传达的信息。

当您点击页面上的问题按钮时,它会显示此网址http://stackoverflow.com/questions

您可以直接在此网址后面写下问题编号,它会将您带到该问题。 http://stackoverflow.com/questions/26920116。这是传递问号的方式。

以同样的方式可以实现此Usename特定URL。您必须使site成为控制器。