首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户名在url中,但下面的上下文路径中有'/'?

用户名在url中,但下面的上下文路径中有'/'?
EN

Stack Overflow用户
提问于 2012-11-27 22:23:04
回答 2查看 148关注 0票数 0

我正在使用Servlet在Java 中开发一个在线招聘系统,我希望通过使用'/'将用户名添加到上下文路径中,为每个用户提供自己独特的url。

简单地说,我想将我的url从/main重写到/main,这样当人们登录时,他们就可以在地址栏中看到自己的用户名(就像在堆栈溢出或facebook上一样)。

例如:目前,我正在使用Jquery重定向到"/main?username="+username (工作正常),但我想重定向到/main/username.我尝试了encodeURL方法,但是“/”搜索到子目录中。如果有人认为它应该有效,请给我语法。我在web.xml中做过url映射。signin.jsp映射到signin )

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-27 22:33:36

如果我理解您的问题,您希望有一个像myrecruitingsite.com这样的Java站点,在那里您可以将用户重定向到myrecruitingsite.com/main/<username>。当向myrecruitingsite.com/main/arg21myrecruitingsite.com/main/geoffreywiseman发出请求时,您希望请求转到同一个servlet,并且您希望知道请求的用户名。

Java映射不像许多现代web框架那样直接支持复杂的路由模式。您不能将web.xml配置为从myrecruitingsite.com/main/<username>发送请求到用户配置文件servlet,而将myrecruitingsite.com/main/<username>/contact发送到contact servlet。您可以执行通配符映射,但是之后的所有路由决定都必须在web.xml之外执行。

或者,您可以执行URL重写 (通常使用servlet过滤器),这样浏览器请求的URL不是servlet映射层解释的最后一个URL。这是有框架的,或者你可以自己做。

基本上,您需要使用通配符配置servlet映射的url模式,然后查询getPathInfo()以找出其他通配符是什么,这本身非常简单。

如果您使用的是各种Java web框架中的任何一种,那么就会有路由功能,很可能还有一个前端控制器servlet来满足您的需要。在这种情况下,您需要查看框架的文档以获得更多信息。

另一方面,如果您自己使用servlet (甚至servlet + jsp)来完成,您可以只需执行通配符映射到单个servlet,该映射将随着添加更多特性而变得越来越大,或者更有可能的是,您需要开发自己的微框架,其中servlet充当前端控制器servlet,并完成路由工作,并将所有后续工作委托给普通的旧java对象(POJO)。

例如,您的路由servlet可以维护url模式(可能在java正则表达式中指定)到您自己创建的对象之间的映射,这些对象要么模仿servlet接口,要么模仿您自己创建的另一个接口。这样,您就有了一个servlet,它负责web.xml中绑定的路由决策,还有一个负责特定请求的细节的小类网络。这是工作,但并不难。

票数 1
EN

Stack Overflow用户

发布于 2012-11-27 22:28:00

这通常是通过服务器上的url重写来实现的。对于IIS,这意味着创建web.config或在apache中创建.htaccess文件。您需要为服务器找到等效的目录,然后可以将目录结构类型/username/解析为应用程序的HTTP变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13594255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档