java web面试题


本篇文章记录java web方向原生servlet,jsp方面的知识点,以面试题的形式展开。

一.Ajax
1. 什么是同步,什么是异步?

同步现象:客户端发送请求到服务端,当服务端返回响应前,客户端都处于等待卡死状态。
异步状态:客户端发送请求到服务端,无论服务端是否响应,客户端都可以随意做其他事情,不会卡死。

2. ajax的运行原理

页面发起请求,会将请求发送给浏览器内核的ajax引擎,ajax引擎会将请求发送给服务端,在这段时间中客户端可以进行任何操作,直到服务端将数据响应给ajax引擎,触发你的设置的事件,从而执行自定义的js逻辑完成页面的功能。

3. json的格式和解析
  • json的格式:
  1. 对象格式:{“key1”:obj,“key2”:obj,“key3”:obj…} 例:{“username”:“张三”,“age”:28,“password”:“123”,“addr”:“北京”}
  2. 数组/集合格式:[obj,obj,obj…] 例:[{“pid”:“10”,“pname”:“小米4C”},{},{}]
  • json的解析:json是js的原生内容,因此js可以直接直接取出json的数据
  • json的转换插件:将java对象或者集合转换为json数据
4. ajax技术
  • js原生ajax技术:
    实现ajax异步操作步骤:
  1. 创建ajax引擎对象
  2. 为ajax引擎对象绑定监听(监听服务器已将数据响应给ajax引擎)
  3. 绑定提交地址
  4. 发送请求
//1.创建引擎对象
var xmlhttp = new XMLHttpRequest();
//2.绑定监听
xmlhttp.onreadystatechange =function(){
//5.接受响应数据
	if(xmlhttp.readyState==4&&xmlhttp.status==200){
	var text=xmlhttp.responseText;
	alert(text);
	}
}
//3.绑定地址
xmlhttp.open("get","${pageContext.request.contextPath}/ajax",true);
xmlhttp.send();
  • Jquery的Ajax技术
    jquery是一个优秀的js框架,自然对ajax做了封装,使操作更加简单,与ajax相关的方法经常使用的三钟:
  1. $.get(url, [data], [callback], [type])
  2. $.post(url, [data], [callback], [type])
    其中:
    url:代表请求的服务器端地址
    data:代表请求服务器端的数据(可以是key=value形式也可以是json格式)
    callback:表示服务器端成功响应所触发的函数(只有正常成功返回才执行)
    type:表示服务器端返回的数据类型(jquery会根据指定的类型自动类型转换)
    常用的返回类型:text、json、html等
  3. $.ajax( { option1:value1,option2:value2… } );
    常用的option有如下:
    async:是否异步,默认是true代表异步
    data:发送到服务器的参数,建议使用json格式
    dataType:服务器端返回的数据类型,常用text和json
    success:成功响应执行的函数,对应的类型是function类型
    type:请求方式,POST/GET
    url:请求服务器端地址
二. Session和Cookie
1.什么是一次会话?

从打开一个浏览器访问某个服务器,到关闭这个浏览器的整个过程叫,一次会话。
会话技术分为session和cookie。
session:将数据存储到服务器端,为每个客户端分配独有的空间。
cookie:将数据存储到客户端,安全性不好,cookie可以清除。

2.Cookie技术
  • 服务器端向客户端发送cookie:
  1. 创建cookie
Cookie cookie=new Cookie("name","xiaodeng");//注意cookie不能存储中文
//设置cookie的的持久化时间,cookie信息会持久化到浏览器的磁盘中,如果不设置,就默认保存在浏览器的内存中,关闭浏览器,清空内存,cookie也就没了
cookie.setMaxAge(int seconds);
//设置cookie的携带路径,如果不设置,默认客户端访问服务端获取到cookie信息后,访问该web项目都会携带cookie信息。
cookie.setPath("/WEB16/cookieServlet")//客户端获取到cookie后只有访问该路径才会携带cookie信息。
//向要响应给客户端的response添加cookie
response.addCookie(cookie);
  • 服务器端如何接受客户端发送的cookie信息
Cookie[] cookies=request.getCookies();//获取所有的cookie信息
2.Session技术

Session技术是将数据存储到服务器端,为每个客户端创建一块内存空间存储客户端信息,但客户端每需要携带一个标识JSESSIONID去寻找自己的session空间。

//获得session对象,根据JSESSIONID在服务器端寻找session,如果存在,直接返回,不存在,创建一个返回。
HttpSession session=request.getSession();
session.setAttribute(String name,Object obj);
session.getAttribute(String name);
session.removeAttribute(String name);
3.Session对象的生命周期,合适创建,何时销毁,作用范围?
  • 创建:第一次执行request.getSession时创建
  • 销毁:1.服务器非正常关闭,
    2.session过期/失效(默认30分钟(当然时间可以配置),从不操作服务器端开始计时)
    3.手动销毁session.invalidate()
  • 作用范围:默认在一次会话中公用一个sesion对象。
三. HttpServletRequest和HttpServletResponse

我们在创建servlet时,会覆盖service()方法,或者覆盖doGet()/doPost()方法,这些方法中都有两个参数,service()中是ServletRequest和ServletResponse,而doGet和都Post()方法中是HttpServletRequest和HttpServletResponse,一个代表请求request,一个代表响应response.。因为HttpServletRequest是ServletRequest的子接口,功能更多。

1.request和response的运行流程

像平时我都是把web项目发布运行在tomcat上,当客户端发送http请求给tomcat内核,tomcat内核会进行:

  1. 解析请求的http资源
  2. 将请求的信息封装成request对象,同时创建一个response对象(每次访问servlet的service方法都会创建一对新的)
  3. 创建servlet对象,
  4. 调用service方法,service方法结束返回后,tomcat内核会去读response缓冲区的内容,从中获取设置的信息,封装成一个http响应,返回给客户端
    注意:(每次访问servlet的service方法都会创建一对新的request和response)
    在这里插入图片描述
四. http响应和http请求

在这里插入图片描述

五.servlet
1.什么是servlet?

其实servlet是处理客户端请求和响应给浏览器的动态资源,servlet本质上就是java代码,通过java的API动态地向客户端输出内容。

2.快速搭建servlet

实现步骤:

  1. 创建类实现servlet接口
  2. 覆盖尚未实现的方法-service方法
  3. 在web.xml中进行servlet的配置

但在开发中我们不会这样做,因为覆盖的方法太多,我们都是创建类继承HttpServlet

  1. 创建类继承HttpServlet类
  2. 覆盖doGet和doPost()方法
  3. 在web.xml中配置servlet
3.Servlet的API,
  • Servlet接口的方法:
    1. init(ServletConfig config) 何时执行:servlet对象创建的时候执行
    2. service(ServletRequest request,ServletResponse response) 何时执行:每次请求都会执行。
      ServletRequest 封装的是http请求的信息,ServletResponse 封装的是响应的信息。
    3. destroy() 何时执行:销毁的时候执行。
  • HttpSerlet类的方法:
    1. init()
    2. doGet(HtttpServletRequest request,HttpServletResponse response)
      doGet(HtttpServletRequest request,HttpServletResponse response)
    3. destroy()
4.Servlet的生命周期?
  1. Servlet何时创建:默认第一次访问servlet时创建该对象。
    如果在web.xml中配置servlet的就可以在服务器启动时就创建。
  2. Servlet何时销毁:服务器关闭,servlet就销毁了。
  3. service()方法: 每次访问服务器时都会执行service方法。
5.Servlet在web.xml中配置
<servlet>
	<servlet-name>servlet1</servlet-name>
	<servlet-class>com.xiaodeng.DemoServlet</servlet-class>  //servlet类
</servlet>
<servlet-mapping>
	<servlet-name>servlet1</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>

url-patten三种配置方式:

  1. 完全匹配:访问的资源与配置的资源完全相同才能访问到
<url-pattern>/startServlet</url-pattern>
  1. 目录匹配: 格式:/虚拟的目录…/* *代表任意
<url-pattern>/aaa/bbb/ccc/*</url-pattern>
  1. 扩展名匹配: 格式:*.扩展名
<url-pattern>*.abcd</url-pattern>
6.ServletContext对象
  • 什么是ServletContext对象?
    ServletContext代表的web应用的上下文对象,ServletContext对象一个web应用只有一个,内部封装该web应用的信息。
  • ServletContext的生命周期
    创建:服务器启动,web应用被加载后创建的。
    销毁:web应用卸载后。
  • ServletContext的作用
    1. 获得web应用的全局的初始化参数。
	<servlet>
		<servlet-name>servlet1</servlet-name>
		<servlet-class>com.xiaodeng.DemoServlet</servlet-class>  
		<!--配置全局的初始化参数>
		<context-param>
		<param-name>driver</param-name>
		<param-value>com.mysql.jdbc.Driver</param-value>
		<context-param>
	</servlet>
	//获得ServletContext对象
	ServletContext context=getServletContext();
	//获得初始化参数
	String param=context.getInitParameter("driver");
  1. 获得web应用中任何资源的绝对路径
    String path = context.getRealPath(相对于该web应用的相对地址);
  2. ServletContext 是一个域对象
    ServletContext 域对象的作用范围:整个web应用。(都可以向该域存储对象,取对象,是web应用中共享数据的区域)
  • setAtrribute(String name,Object obj);
  • getAttribute(String name);
  • removeAttribute(String name);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值