Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
url中的用户名,但在上下文路径下使用'/';?_Url_Jakarta Ee_Jquery_Url Rewriting_Urlencode - Fatal编程技术网

url中的用户名,但在上下文路径下使用'/';?

url中的用户名,但在上下文路径下使用'/';?,url,jakarta-ee,jquery,url-rewriting,urlencode,Url,Jakarta Ee,Jquery,Url Rewriting,Urlencode,我正在使用servlet在JavaEE中开发一个在线招聘系统,我希望通过使用'/'将用户名添加到上下文路径中,为每个用户提供自己独特的url 简单地说,我想将我的url从/main重写为/main/username,这样当人们登录时,他们可以在地址栏中看到自己的用户名(就像stackoverflow或facebook) 例如,目前我正在使用Jquery Ajax重定向到“/main?username=“+username(工作正常),但我想重定向到/main/username。 我尝试了enco

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

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

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

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

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

JavaServlet映射不像许多现代web框架那样直接支持复杂的路由模式。无法将web.xml配置为将请求从
mycreatingsite.com/main/
发送到用户配置文件servlet,并将
mycreatingsite.com/main//contact
发送到联系人servlet。您可以进行通配符映射,但之后的所有路由决策都必须在
web.xml
之外进行

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

基本上,您需要使用通配符配置的url模式,然后查询以找出其余的通配符是什么。这一点很简单

如果您使用的是各种JavaWeb框架中的任何一种,都会有路由工具,很可能还有一个前端控制器servlet,它已经完成了您所需要的工作。在这种情况下,您需要查看框架的文档以获取更多信息

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


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

如果你能更清楚地描述你所遇到的实际问题,就更容易简明扼要地回答你的问题。我会尝试一下,但是如果我做得不好,那么就尝试为您遇到的问题添加更多细节。我没有使用任何框架,我只使用servlet。你能给我一个关于如何在前端控制器servlet中做的简单想法吗?