您的位置:首页 > 编程语言 > Java开发

java基础知识(8)---面试宝典

2020-06-05 07:56 162 查看

28、通过JS中的什么函数将JSON字符串转为对象(JS通过什么方法将字符串解析为对应JS代码)
JS中通过eval(str)将str中内容转为JS代码。
通过 JS中的 eval函数将,将JSON字符串函数转为对象。多用于 Ajax后台将POJO的json字符串作为响应信息返回,回调函数利用eval函数将接收的信息转为json对象,或json对象数组。

29、HTTP请求的GET与POST方式的区别
Get和Post都是发送请求的方式之一;
1、GET参数通过URL传递(即在地址栏中可以显示传递的数据),POST放在Request body中(地址栏不会显示信息)。
2、get方式提交后,数据会在地址栏中显示出来,而post方式不会,所以post更安全;
3、get方式在提交数据的时候,数据长度是有限制的;而post方式在理论上对提交数据的大小是无限制的;
4、GET请求只能进行url编码,而POST支持多种编码方式(如上传)
5、GET产生一个TCP数据包;POST产生两个TCP数据包。
(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。)

30、Get方式和Post方式在传递中文时处理乱码的访问
乱码的问题是由于 编码字符集合,解码字符集不一致造成的。
在SpringMVC中处理乱码是通过过滤器来完成。

在Servlet层面上(因为所有的控制层框架都是在Servlet基础上进行封装)如下:
1、配置服务器的配置文件,在配置文件中指明URI编码方式
各个服务器在处理web请求中的中文,方式是不同的。如 tomcat在处理请求时默认使用的字符集是 ISO-8859-1。(别的服务器也有它们的字符集),我们可以通过改变配置文件中的参数更改服务器使用的字符集如。tomcat 的server.xml中可以改为

在它的连接端口设置中写入 URIEncoding要使用的值。表示设置服务器的默认设置字符集。(但是这通常不让使用,因为一个服务器上可有多个项目,所使用的字符集也不一定一致)。
所以通常使用如下方法:
2、
在获得请求中的参数值后,先使用服务器默认使用的字符集,将字符串转为byte[]。再按照用户的需要用指定字符集组成新的字符串.

String dname =request.getParameter("dname");
//对应get方式传递过来的参数解决乱码问题: 先对接收到的值使用ISO-8859-1转为 byte[],再将字节数组按照UTF-8组装成String
byte[] arr = dname.getBytes("ISO-8859-1");//get post都行
//再将arr按照UTF-8重新组成 String
dname = new String(arr,"UTF-8");

以上的方法 POST,Get方式的请求都可以使用的。
3、利用request.setCharacterEncoding方法对以POST方式提交的信息的转码
除此之外Post方式由于是通过Http协议(底层)来传递参数,还可以在接收参数之前设置请求中编码使用的字符集。注意该方法只对POST传递有效,因为Get一定是要通过地址栏来传递信息,必须使用服务器指定的字符集编码。

31、说一说Servlet的生命周期? Servlet里常用的方法有哪些?
Servlet生命周期包括初始化阶段,处理请求,销毁阶段
Servlet生命周期是由容器(即服务器)进行管理的,不可以被程序员手工销毁;
Servlet进行初始化阶段的时候,容器(即服务器)运行其init方法,请求到达时(处理请求)运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器关闭时会将所维护的实例销毁的时候(销毁阶段)调用其destroy方法。

32、 Servlet API中forward() 与redirect()的区别?
1、forward是请求转发,而reditect是重定向;
2、请求转发是服务器将客户端的请求转发到另一个地址去处理,然后再响应返回给客户端;实际上是1次请求,1次响应(一次访问服务器,请求没有断),对客户端而言是透明的(地址栏信息依然是请求路径)。即属于依靠服务器内部自动转到响应页面。
而重定向是服务器根据客户端发来的请求,返回给一个客户端一个新的地址,客户端根据这个返回的地址自动再发送请求,得到响应;实际上是2次请求,2次响应,而且客户端的地址是第二次访问的地址;
3、转发只能转发到自己(本项目)的资源,重定向无限制。

使用的例子: 110 报警 (请求转发) ,114 查询电话(重定向)

补充说明(也可以从如下三个访问谈两者的不同):
1、从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标路径的URL,把那个URL的响
应内容读取过来,然后把这些内容再发送给浏览器。浏览器根本不知道服
务器发送的内容从哪里来的。所以他的地址栏还是原来的地址(浏览器请求路径就是最初的请求路径)
redirect是服务器根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地
址。所以地址栏显示的新的URL(浏览器的路径是重定向响应的路径)
2、从数据共享来说(是否能通过request带值)
forword:转发页面和转发到的页面(即一次请求范围内)可以共享request里面
的数据
redirect:不能共享数据
3、从效率上来说
forward:效率较高
redirect:效率较低

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: