Java Web之网络通信

1、head ,get,post请求方式主要区别java

head只要求服务器返回HTTP响应消息的头字段
编程

  1. 首先是"GET方式提交的数据最多只能是1024字节",由于GET是经过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系 了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的 限制是2083字节(2K+35)。对于get方法浏览器将提交表单中的字段信息放置在请求头中,不适合大数据量的传输,post方式浏览器将提交表单中的字段信息放置在请求体中,适合大数据量的传输,如:向服务器端上传文件等浏览器

2.自从Tomcat5.x开始,GET和POST方法提交的信息,Tomcat采用了不一样的方式来处理编码,对于POST请求,Tomcat会仍然使用request.setCharacterEncoding方法所设置的编码来处理,若是未设置,则使用默认的iso-8859-1编码。而GET请求则不一样,Tomcat对于GET请求并不会考虑使用request.setCharacterEncoding方法设置的编码,而会永远使用iso-8859-1编码,而这位朋友使用的正好是GET请求,所以,tomcat将会使用iso-8859-1将提交的字节转换成字符串。tomcat

解决的方法有两个:
 将GET请求改为POST请求,而后就可使用
request.setCharacterEncoding方法设置编码,并使用request.getParameter方法直接得到中文请求参数了。
 不用改GET请求,在Servlet中使用以下的代码来获得中文请求参数。
服务器

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "GBK");

综上所述,若是使用了GET请求,则setCharacterEncoding方法不起做用,只能使用上面的代码来解决,而使用POST请求,尽管setCharacterEncoding 方法起做用,但使用上面的代码仍然好使(在这时不能使用setCharacterEncoding方法将编码格式设置成非iso-8859-1格式)。所以,若是想让Servlet能够同时处理GET和POST请求中的中文信息,除了判断这两种方法外,还可使用上面的代码来同时处理这两种请求的中文信息。网络


   笔者建议使用以下的代码来得到中文请求参数:ide

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "GBK");

由于上面的代码是利用了Java的编码能力,对于全部的Web服务器都会有效,而setCharacterEncoding方法是经过Web服务器支持的,并非全部的Web服务器都会对该方法有很好的支持。post


2、scoket和HttpURLConnection通讯大数据


       

  Socket是一个针对TCP和UDP编程的接口,你能够借助它创建TCP链接等等。而TCP和UDP协议属于传输层,而http是个应用层的协议,它实际上也创建在TCP协议之上。 编码

  (HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通讯的能力。)


HttpURLConnection内部使用了缓冲技术,传输文件的时候,文件写到内存缓冲区,容易内存溢出

相关文章
相关标签/搜索