java request 如何取到发送请求的地址是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java request 如何取到发送请求的地址是啥相关的知识,希望对你有一定的参考价值。

有页面a,servlet b,页面c,
a 页面提交到b做处理,再转向c,在b中如何取到b的地址是什么,全部的,如:http://www.baidu.com/cc.jsp?a=123&b=333
另我要在c页面中也做请求,交由servlet d做处理,d的处理中需要请求下b,但最终要转发至a,如何做?

第一个回答完美,给10分,第二个完美给30分,两个都帮我解决完美,给80分,敬请不靠谱的绕道行之。希望打酱油的远观而不发言之,谢谢谢。

request对象通过以下方法来获取请求路径,如下所示:
String getServerName():获取服务器名,localhost;
String getServerPort():获取服务器端口号,8080;
String getContextPath():获取项目名,/Example;
String getServletPath():获取Servlet路径,/AServlet;
String getQueryString():获取参数部分,即问号后面的部分:username=zhangsan
String getRequestURI():获取请求URI,等于项目名+Servlet路径:/Example/AServlet
String getRequestURL():获取请求URL,等于不包含参数的整个请求路径:http://localhost:8080/Example/AServlet 。
参考技术A request.getRequestURL()
返回的是完整的url, 但它不包含请求参数。
参考技术B request.getRequestURL();可以拿到完整的地址追问

我调过,取到的是当前地址而非是之前发请求的地址。

追答

不会吧 struts2里面是可以的 servlet里应该也是可以的

参考技术C getRequestURL();
getHeader("REFERER");
您试试?追问

Header是什么?固定是 REFERER 参数么?

追答

request.getHeader("REFERER");

servlet里有这个方法, 


REFERER 是请求头里的参数  你还可以吧REFERER 改成以下这些

你用火狐浏览器 打开debug就可以看到

参考技术D String URL = request.getRequestURI();

如何通过请求将内容从 Freemarker 发送到 java?

【中文标题】如何通过请求将内容从 Freemarker 发送到 java?【英文标题】:How to send content from Freemarker to java by request? 【发布时间】:2016-05-22 09:54:37 【问题描述】:

我正在尝试将信息从 FreeMarker 模板发送到我的 Java 模型类。

我试过这个:

//my array of string casted in a string
var pais = selected.join();

request.setAttribute(pais, "paises");

好的,现在我正在尝试在我的 Java 类中收集这些内容:

String paises = MgnlContext.getAttribute("paises"); 

但它不起作用。我尝试了其他类似的方法:

Stirng paises = MgnlContext.getInstance().getAttribute("paises"); 

但它总是返回 null。

【问题讨论】:

【参考方案1】:

第一个部分看起来不像 freemarker,而更像是 JavaScript,所以也许这就是你的问题。虽然 freemarker 指令在服务器端执行,但由 freemarker 生成的 html 和 Js 在客户端执行,因此没有 Ajax 调用,Js 无法与服务器对话(因此无法与模型类对话)。

如果您真的对将某些内容从 freemarker 传递到 java 模型感兴趣,那么模型会直接公开。您可以简单地在 java 模型中添加方法并从 freemarker 模板中调用它,例如

$model.myMethod(someParam)

HTH, 一月

【讨论】:

【参考方案2】:

解决方案(通过 ajax 发送信息):

首先通过 javscript 获取值:

[#assign cpathx = ctx.contextPath]
[#assign url = model.getUrl() /] 
var field = $('#key').val();
var calin = $('#calendarIni').val();
var calfin = $('#calendarFin').val();
var pais = selected.join();
var url = '$cpathx$url?paises='+pais+'&palabra='+field+'&calendarini='+calin+'&calendarfin='+calfin;
    jQuery.post(url ,function(data) 
    jQuery('#ajax').html(data);
  );

现在我们可以在java中收集信息了:

String paises = MgnlContext.getWebContext().getAttribute("paises");
String queryString = MgnlContext.getWebContext().getAttribute("palabra");
String dateStart = MgnlContext.getWebContext().getAttribute("calendarini");
String dateEnd = MgnlContext.getWebContext().getAttribute("calendarfin");

【讨论】:

以上是关于java request 如何取到发送请求的地址是啥的主要内容,如果未能解决你的问题,请参考以下文章

java代码实现由request请求消息获取远处发送请求的用户主机的内网IP地址和外网IP地址

发送网络请求的时候一个url地址代表着一个request

发送网络请求的时候一个url地址代表着一个request

发送网络请求的时候一个url地址代表着一个request

java中js如何取到request中的值

Laravel 5.1 Request请求怎么用?