Java 如何在servlet中读取变量URL
我正在使用servlet,我正在使用这个URLJava 如何在servlet中读取变量URL,java,url,servlets,Java,Url,Servlets,我正在使用servlet,我正在使用这个URL http://s4.com/api/system?section0=report&reportType0=overTime&dataType0 在浏览器中请求我在servlet中创建的一些json数据 我试图阅读整个URL,以获得它是doGet方法中的第一部分s4.com,因为它可能是: http://s.com/api/system?section0=report&reportType0=overTime&dat
http://s4.com/api/system?section0=report&reportType0=overTime&dataType0
在浏览器中请求我在servlet中创建的一些json数据
我试图阅读整个URL,以获得它是doGet
方法中的第一部分s4.com
,因为它可能是:
http://s.com/api/system?section0=report&reportType0=overTime&dataType0
http://s1.com/api/system?section0=report&reportType0=overTime&dataType0
http://s2.com/api/system?section0=report&reportType0=overTime&dataType0
http://s3.com/api/system?section0=report&reportType0=overTime&dataType0
http://s4.com/api/system?section0=report&reportType0=overTime&dataType0
.
.
.
http://s100.com/api/system?section0=report&reportType0=overTime&dataType0
所以我需要使用s(number.com)来区分它们
在我尝试过的doget方法中
request.getRequestURL().toString(); ===== output===> http://localhost:8090/MySim/api/system
及
及
我也试过这个
String uri = request.getScheme() + "://" + // "http" + "://
request.getServerName() + // "myhost"
":" + // ":"
request.getServerPort() + // "8080"
request.getRequestURI() + // "/people"
"?" + // "?"
request.getQueryString();
它将打印完整路径URL
=====输出===>
http://localhost:8090/MySim/api/systemsection0=system&type0=shortStatus&rand0=1405835810247&sessionId=FFFFFFFFF
但其中没有一个得到了正确的答案
my是web.xml的一部分:
<servlet-mapping>
<servlet-name>Api</servlet-name>
<url-pattern>/api/system</url-pattern>
</servlet-mapping>
我将xhamp server与Apachi一起使用,因此在配置文件中,我使用了以下内容:
</VirtualHost>
<VirtualHost *:80>
ServerName s4.com
Header add Access-Control-Allow-Origin "*"
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
ProxyPass /session/ http://localhost:8090/MySim/session/
ProxyPass /api/ http://localhost:8090/MySim/api/
ProxyPassReverse /session/ http://localhost:8090/MySim/session/
ProxyPassReverse /api/ http://localhost:8090/MySim/api/
</VirtualHost>
<VirtualHost *:80>
ServerName s5.com
Header add Access-Control-Allow-Origin "*"
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
ProxyPass /session/ http://localhost:8090/MySim/session/
ProxyPass /api/ http://localhost:8090/MySim/api/
ProxyPassReverse /session/ http://localhost:8090/MySim/session/
ProxyPassReverse /api/ http://localhost:8090/MySim/api/
</VirtualHost>
</VirtualHost>
<VirtualHost *:80>
ServerName s4.com
Header add Access-Control-Allow-Origin "*"
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
ProxyPass /session/ http://s4.com:8090/MySim/session/
ProxyPass /api/ http://s4.com:8090/MySim/api/
ProxyPassReverse /session/ http://s4.com:8090/MySim/session/
ProxyPassReverse /api/ http://s4.com:8090/MySim/api/
</VirtualHost>
<VirtualHost *:80>
ServerName s5.com
Header add Access-Control-Allow-Origin "*"
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
ProxyPass /session/ http://s5.com:8090/MySim/session/
ProxyPass /api/ http://s5.com:8090/MySim/api/
ProxyPassReverse /session/ http://s5.com:8090/MySim/session/
ProxyPassReverse /api/ http://s5.com:8090/MySim/api/
</VirtualHost>
服务器名s4.com
标题添加访问控制允许源“*”
代理请求关闭
通融
代理通过/会话/http://localhost:8090/MySim/session/
ProxyPass/api/http://localhost:8090/MySim/api/
ProxyPassReverse/会话/http://localhost:8090/MySim/session/
ProxyPassReverse/api/http://localhost:8090/MySim/api/
ServerName.com
标题添加访问控制允许源“*”
代理请求关闭
通融
代理通过/会话/http://localhost:8090/MySim/session/
ProxyPass/api/http://localhost:8090/MySim/api/
ProxyPassReverse/会话/http://localhost:8090/MySim/session/
ProxyPassReverse/api/http://localhost:8090/MySim/api/
这就是request.getserverName()总是打印本地主机的原因
现在我编辑了以下配置文件:
</VirtualHost>
<VirtualHost *:80>
ServerName s4.com
Header add Access-Control-Allow-Origin "*"
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
ProxyPass /session/ http://localhost:8090/MySim/session/
ProxyPass /api/ http://localhost:8090/MySim/api/
ProxyPassReverse /session/ http://localhost:8090/MySim/session/
ProxyPassReverse /api/ http://localhost:8090/MySim/api/
</VirtualHost>
<VirtualHost *:80>
ServerName s5.com
Header add Access-Control-Allow-Origin "*"
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
ProxyPass /session/ http://localhost:8090/MySim/session/
ProxyPass /api/ http://localhost:8090/MySim/api/
ProxyPassReverse /session/ http://localhost:8090/MySim/session/
ProxyPassReverse /api/ http://localhost:8090/MySim/api/
</VirtualHost>
</VirtualHost>
<VirtualHost *:80>
ServerName s4.com
Header add Access-Control-Allow-Origin "*"
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
ProxyPass /session/ http://s4.com:8090/MySim/session/
ProxyPass /api/ http://s4.com:8090/MySim/api/
ProxyPassReverse /session/ http://s4.com:8090/MySim/session/
ProxyPassReverse /api/ http://s4.com:8090/MySim/api/
</VirtualHost>
<VirtualHost *:80>
ServerName s5.com
Header add Access-Control-Allow-Origin "*"
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
ProxyPass /session/ http://s5.com:8090/MySim/session/
ProxyPass /api/ http://s5.com:8090/MySim/api/
ProxyPassReverse /session/ http://s5.com:8090/MySim/session/
ProxyPassReverse /api/ http://s5.com:8090/MySim/api/
</VirtualHost>
服务器名s4.com
标题添加访问控制允许源“*”
代理请求关闭
通融
代理通过/会话/http://s4.com:8090/MySim/session/
ProxyPass/api/http://s4.com:8090/MySim/api/
ProxyPassReverse/会话/http://s4.com:8090/MySim/session/
ProxyPassReverse/api/http://s4.com:8090/MySim/api/
ServerName.com
标题添加访问控制允许源“*”
代理请求关闭
通融
代理通过/会话/http://s5.com:8090/MySim/session/
ProxyPass/api/http://s5.com:8090/MySim/api/
ProxyPassReverse/会话/http://s5.com:8090/MySim/session/
ProxyPassReverse/api/http://s5.com:8090/MySim/api/
您的客户端浏览器连接到
http://s4.com/api/system
但是您的web应用程序会响应
http://localhost:8090/MySim/api/system
这是一个常见的用例:这意味着您有一个HTTP反向代理(常用的是apache、nginx或IIS)来执行URL重写。如果可能,您应该询问代理服务器管理员如何以及在何处找到原始请求的主机。如果这不是一个选项,您将不得不检查所有的头来尝试发现它。例如,Apache mod proxy通常使用头X-Forwarded-Host
http://localhost:8090/MySim/api/system