JAVA后端面试《JAVA Web》

1.jsp和servlet有什么区别?

  • ① jsp编译后就变成了Servlet。(JSP的本质就是Servlet,java虚拟机只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成Java类)
  • ② jsp更擅长页面显示,servlet更擅长逻辑控制。
  • ③ jsp有内置对象,servlet没有内置对象。

2.jsp有哪些内置对象?作用分别是什么?

JSP有9大内置对象:

  • ①request: 封装客户端的请求(GET,POST请求的参数)
  • ②response:封装服务器对客户端的响应
  • ③pageContext:通过该对象可以获取其他内置对象
  • ④session:封装用户会话的对象
  • ⑤application:封装服务器运行环境的对象
  • ⑥out:输出服务器响应的输出流对象
  • ⑦config:Web应用的配置对象
  • ⑧page:JSP页面本身
  • ⑨exception:封装页面抛出异常的对象

3.jsp的四种作用域?

  • ① page:代表与一个页面相关的对象和属性。
  • ② request:代表与Web客户端发出的一个请求相关的对象和属性。
  • ③ session:代表某个用户与服务器建立一次会话相关的对象和属性。
  • ④ application:代表与整个Web应用程序相关的对象和属性(全局作用域)。

4.什么是cookie?session和cookie的区别?

cookie是Web服务器发送给浏览器的一块信息。浏览器会在本地文件中给每一个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。

两者区别如下:

  • ①存储位置:session是保存在服务器,cookie保存在客户端
  • ②存储的数据类型:session能够存储任意的Java对象,cookie只能存储String类型的对象

5.说以下session的工作原理?

session是一个存在服务器上的文件。里面存有我们需要的信息,在需要的时候可以从里面取出来。类似于一个大号的map,里面的键存储的是用户的sessionID,用户向服务器发送请求的时候会带上这个sessionID。这时就可以从中取出对应的值了。

6.如果客户端禁止cookie能实现,session还能用嘛?

一般情况下: 如果浏览器禁用了cookie,浏览器请求服务器无法携带sessionID,服务器无法识别请求中用户身份,session失效。
通过其他方法继续使用session:
* ①把sessionID作为参数追加到原URL中。
* ②用文件、数据库等形式保存sessionID,在跨页过程中手动调用。

7.如何知道是哪一个客户端正在请求你的Servlet?

HttpServletRequest类可以找出客户端的ip地址和主机名。

        String ip   = request.getRemoteAddr();
        String host = request.getRemoteHost();

8.Servlet中doGet方法和doPost方法有何区别?

  • doGet方法:用来处理以Get方式提交的客户端请求(Get方法把请求参数追加到URL后面,可以发送的参数数目是有限制的)。
  • doPost方法:用来处理以Post方式提交的客户端请求。(Post方法把请求参数放在请求体中,可以发送的参数数目是无限制的)。

9.什么是Servlet?

  • Servlet是用来处理客户端请求并产生动态网页内容的Java类。(存储HTML表单提交的数据)

10.解释以下Servlet的生命周期?

  • ①Servlet通过调用init()方法进行初始化。
  • ②Servlet通过调用service()方法来处理客户端的请求。
  • ③Servlet通过调用destroy()方法自毁。

11.什么是XSS攻击,如何避免?

  • XSS攻击又称CSS,全称Cross Site Script (跨站脚本攻击),其原理是攻击者向有XSS漏洞的网站输入恶意的HTML代码,当用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。

  • XSS防范的总体思路是:对输入进行过滤,对输出进行编码。

12.什么是CSRF攻击,如何避免?

  • CSRF(Cross-site request forgery):跨站请求伪造。一般来说,攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。常用于盗号,转账等待。
  • 如何避免:
    • 1.验证HTTP Referer字段
    • 2.使用验证码
    • 3.在请求地址中添加token并验证
    • 4.在Http头中自动逸属性并验证

13.jsp中如何引用本地路径图片?

 1.上传图片到服务器的文件系统中.
 2.把图片的地址保存到数据库。
 3.读取图片的地址,设置到 <img src="/工程名/文件夹名/文件名(EL表达式动态获取图片地址)"/>的src属性中。

14.jsp中怎么获取地址栏URL(?K=V)的传参?

  1.${param.K}
  2.嵌套在EL表达式中:${users[param.K].username}

15.会话是什么?

  • 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。

16.Servlet和JSP中设置编码格式(解决中文乱码)?

  • 1.response.setCharacterEncoding(“UTF-8”)设置浏览器解码格式(设置服务器响应的编码格式)
  • 2.request.setCharacterEncoding(“UTF-8”)设置对 【客户端请求】 进行重新编码的格式。
    • 对于表单POST方式提交的数据,在获得数据的JSP(或者Servlet)中的request.setCharacterEncoding要和生成提交该表单的JSP页面的 response.setCharacterEncoding设置成相同的值。
    • 对于URL方式和表单GET方式提交的数据,在接收数据的JSP中设置request.setCharacterEncoding参数是不行的(get方式提交的参数编码,只支持iso8859-1编码)
      • 解决方法如下:
   String name = request.getParameter("name"); 
   String Newname = new String(name .getBytes("iso8859-1"),"utf-8");    
  • 3.response.setContentType="text/html;charset=UTF-8"设置浏览器解码格式(推荐方式)
发布了18 篇原创文章 · 获赞 6 · 访问量 1858

猜你喜欢

转载自blog.csdn.net/weixin_43766298/article/details/104159890