大家好,今天给各位分享java获取当前域名的一些知识,其中也会对java获取请求域名进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

前言
相信大家在写前端脚本的时候经常会遇到发送数据到后台的情况,但是由于浏览器的限制,不同域名之间的数据是不能互相访问的,那前端怎么和后端如何进行数据之间的交换呢?
JavaScript由于安全性方面的考虑,不允许页面跨域调用其他页面的对象,那么问题来了,什么是跨域问题?
答:这是由于浏览器同源策略的限制,现在所有支持JavaScript的浏览器都使用了这个策略。那么什么是同源呢?所谓的同源是指三个方面“相同”:
域名相同
协议相同

端口相同
下面就举几个例子来帮助更好的理解同源策略。
URL
说明
是否允许通信
http://www.a.com/a.js

http://www.a.com/b.js同一域名允许
http://www.a.com/a.js
http://www.b.com/a.js不同域名不允许
http://www.a.com:8000/a.js
http://www.a.com/b.js同一域名不同端口不允许
https://www.a.com/a.js
http://www.a.com/b.js同一域名不同协议不允许
在JAVA中处理跨域问题,通常有以下两种常用的解决方法。
第一种解决方法
后台代码在被请求的Servlet中添加Header设置:
response.setHeader("Access-Control-Allow-Origin","*");PrintWriter out=null;
try
{
out= response.getWriter();
} catch(IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
out.print("{status:ok}");
out.flush();
out.close();
Access-Control-Allow-Origin这个Header在W3C标准里用来检查该跨域请求是否可以被通过,如果值为*则表明当前页面可以跨域访问。默认的情况下是不允许的。
在前端JS中需要向Servlet发出请求,请求代码如下所示:
$.ajax({url:"your url",
type:"get or post",
dataType:"json",
data:{
....
},
success:function(data){
...
}
第二种解决方法
通过jsonp跨域请求的方式。JSONP和JSON虽然只有一个字母的区别,但是他们完全就是两回事,很多人很容易把他们搞混。JSON是一种数据交换的格式,而JSONP则是一种非官方跨域数据交互协议。
首先来说一下前端JS是怎么发送请求。代码如下所示:
$.ajax({url:"your url",
type:"get or post",
async:false,
dataType:"jsonp",
//服务端用于接收callback调用的function名的参数
jsonp:"callbackparam",
//callback的function名称
jsonpCallback:"success_jsonpCallback",
success:function(data){
console.log(data);
},
error:function(data){
console.log(data);
}
});
这里的callbackparam和success_jsonpCallback可以理解为发送的data数据的键值对,可以自定义,但是callbackparam需要和后台约定好参数名称,因为后台需要获取到这个参数里面的值(即success_jsonpCallback)。
下面,最重要的来了,后台怎么样获取和返回数据呢。代码如下所示:
PrintWriter out=null;String callback=req.getParameter("callbackparam");
String json=callback+"({status:ok})";
try
{
out= resp.getWriter();
} catch(IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
out.print(json);
out.flush();
out.close();
首先需要获取参数名为callbackparam的值,这里获取到的值就是“success_jsonpCallback”。然后将这个值加上一对小括号。小括号里放入你需要返回的数据内容,比如这里我返回一个JSON对象。当然你也可以返回其他对象,比如只返回一个字符串类型数据也可以。最后前端JS返回的数据就是这样的:
success_jsonpCallback({status:ok})浏览器会自动解析为json对象,这时候你只需要在success回调函数中直接用data.status就可以了。
java获取请求域名很多朋友都想知道java如何获取请求域名?下面就一起来了解一下吧~
1、获取协议名和域名。
request.getScheme(); //得到协议名 例如:http request.getServerName(); //得到域名 localhost
2、获取全路径。
request.getRequestURL(); //得到http://localhost:8888/CRM/loginController/login
3、获取请求所有参数//map类型。
request.getParameterMap()
4、获取项目名
request.getContextPath(); // /CRM
5、获取请求方法
request.getServletPath(); // /loginController/login
/** * 获取当前访问URL (含协议、域名、端口号[忽略80端口]、项目名) * @param request * @return: String */ public static String getServerUrl(HttpServletRequest request) { // 访问协议 String agreement = request.getScheme(); // 访问域名 String serverName = request.getServerName(); // 访问端口号 int port = request.getServerPort(); // 访问项目名 String contextPath = request.getContextPath(); String url = "%s://%s%s%s"; String portStr = ""; if (port != 80) { portStr += ":" + port; } return String.format(url, agreement, serverName, portStr, contextPath); }
怎样用java编程得到二级域名最简单的办法,写个爬虫,把百度首页设置为起点,然后执行以下步骤
1、建一个列表,把起始页URL添加进去
2、从列表中取出一个URL,并把页面抓下来
3、分析里面的<a>标签,把所有的href记下来
4、将同一个域的href记录下,比如*.baidu.*,并追加到列表中
5、重复第二步,直到列表中没有未访问过的URL为止
。。。
分析所有的href链接,然后找出所有的二级域名
java怎么获取本机的用户名或域java怎么获取本机的用户名或域可通过System.getEnv()得到。
System.getenv("USERNAME");System.getenv("USERDOMAIN");
它常和System.getProperties()配合使用,它们的区别是:
从概念上讲,系统属性和环境变量都是名称与值之间的映射。两种机制都能用来将用户定义的信息传递给 Java进程。环境变量产生更多的全局效应,因为它们不仅对Java子进程可见,而且对于定义它们的进程的所有子进程都是可见的。在不同的操作系统上,它们的语义有细微的差别,比如,不区分大小写。因为这些原因,环境变量更可能有意料不到的副作用。最好在可能的地方使用系统属性。环境变量应该在需要全局效应的时候使用,或者在外部系统接口要求使用环境变量时使用(比如 PATH)。
Map<String, String> map= System.getenv();
String userName= map.get("USERNAME");//获取用户名
String computerName= map.get("COMPUTERNAME");//获取计算机名
String userDomain= map.get("USERDOMAIN");//获取计算机域名
System.out.println("自定义变量getenv CONF_LOCATION:"+System.getenv("conf.location"));
System.out.println("操作系统的名称:"+System.getProperty("os.name"));
其它常用的属性参数如下:
java.version Java运行时环境版本 java.vendor Java运行时环境供应商 java.vendor.url Java供应商的 URL java.home Java安装目录 java.vm.specification.version Java虚拟机规范版本 java.vm.specification.vendor Java虚拟机规范供应商 java.vm.specification.name Java虚拟机规范名称 java.vm.version Java虚拟机实现版本 java.vm.vendor Java虚拟机实现供应商 java.vm.name Java虚拟机实现名称 java.specification.version Java运行时环境规范版本 java.specification.vendor Java运行时环境规范供应商 java.specification.name Java运行时环境规范名称 java.class.version Java类格式版本号 java.class.path Java类路径 java.library.path加载库时搜索的路径列表 java.io.tmpdir默认的临时文件路径 java.compiler要使用的 JIT编译器的名称 java.ext.dirs一个或多个扩展目录的路径 os.name操作系统的名称 os.arch操作系统的架构 os.version操作系统的版本 file.separator文件分隔符(在 UNIX系统中是“/”) path.separator路径分隔符(在 UNIX系统中是“:”) line.separator行分隔符(在 UNIX系统中是“/n”) user.name用户的账户名称 user.home用户的主目录 user.dir用户的当前工作目录
java获取当前域名和java获取请求域名的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!