Java Web面试题复习

  1. http的长连接和短连接
    HTTP协议有HTTP/1.0、HTTP/1.1版本
    HTTP/1.1默认保存长连接;长连接的意思是说数据传输完成了之后保持TCP通信不断开,等待同域名下继续使用这个通道传输数据
    HTTP/1.0默认使用短连接;短连接表示浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就断开连接

  2. HTTP常见的状态码,以及解决办法
    200–正常,请求成功、
    301–请求的url被移除、
    302–临时重定向;重定向新地址时,采用get方法、
    400–客户端请求语法错误,服务器无法理解、
    403–服务器收到请求,但拒绝提供服务、
    404–请求资源不存在;检查访问路径、
    500–代码错误;检查代码、
    503–服务器当前不能处理客户端请求,一段时间后可能恢复正常
    504–网关请求超时,检查网络

  3. get和post的区别
    3.1 HTTP协议层面:
    get请求作为查询,是安全的幂等的
    post请求可能修改服务器上的资源请求
    3.2 根据存放的位置的不同
    get请求数据放于url地址参数中,post请求数据放于请求体中
    get请求书签可收藏;post不能
    get能被缓存;post不能
    get能保存在浏览器历史记录中;post不能
    get请求的安全性低于post请求
    get对数据的长度有限制;post没有
    get请求只支持ascall;post没有限制包括二进制

  4. 请求转发和重定向的区别
    在这里插入图片描述
    描述:
    1、请求转发客户端只进行一次请求,重定向客户端进行多次请求
    2、请求转发返回的结果为所请求的资源响应的全部内容;重定向返回的结果为最后一次请求资源所响应的内容
    3、请求转发可以转发信息;重定向不可以
    4、请求转发中绝对路径中的“/”表示项目的跟路径,只能转发到当前项目的其他资源;重定向中表示服务器的根目录,可以重定向到任意互联网资源

  5. 简述servlet的结构体系
    1、开发中我们从HttpServlet继承。
    2、Servlet的组成部分:
    Servlet的主体部分:(servlet接口–>GenericServlet–>HttpServlet–>OurServlet)
    Servlet需要初始化:那么就需要有初始化参数。这时就有了一个配置对象: ServletConfig
    Servlet要运行:需要一个运行的环境。这是就需要一个上下文对象: ServletContext
    Servlet要获取客户端的请求:需要有一个请求对象: ServletRequest
    Servlet需要向客户端响应消息:就需要有一个响应对象: ServletRespons

  6. cookie、session和application(servletContext)的区别
    1、存放位置:客户端、服务器中(但会有一个session存放在客户端)、服务器
    2、过期时间:根据设置(秒)、根据设置(默认过期时间为30分钟)–在servlet中设置session单位为秒、服务启动到关闭
    3、存放数据类型:字符串、对象、对象
    4、使用权限:用户私有、用户私有、项目公用

  7. 设置session的过期时间
    1、在servlet中通过session.setMaxInactiveInterval–单位为秒
    2、在项目的web.xml文件中设置–单位为分钟
    3、在tomcat服务器中的web.xml文件中设置
    如果不设置session的过期时间,默认为服务器中配置好的时间30分钟
    设置时间的优先级1>2>3

  8. 单点登录时,客户端禁用cookie后怎么处理
    单点登录实现的原理是在后端生成一个sessionid,将这个id保存到cookie中,后面所有的请求客户端都会自动携带cookie,然后服务器通过cookie中的sessionid查询用户信息,从而保持登录;
    当客户端禁用cookie之后,可以采用HTTP请求头携带sessionid的方式,但这个请求头不会自动携带,需手动设置

  9. 什么是jsp?什么是servlet?jsp和servlet的区别
    jsp:本质就是servlet,由sun公司推出的一种模板;其实每个jsp都是一个servlet实例
    servlet:由Java提供用于开发web服务应用程序的一个组件,运行在服务端,由servlet容器管理,用来生成动态内容。一个servlet实例是实现了特殊接口Servlet的java类,所有自定义的servlet都要实现Servlet接口
    区别:
    1、jsp是html页面中内嵌Java代码,侧重页面显示;
    2、servlet侧重逻辑控制;在mvc设计思想中,jsp为视图层,servlet为控制层
    jsp的运行机制:由于JVM只能识别Java类,所以web容器收到jsp请求时---->将访问交给tomcat中的jsp引擎处理---->转换成一个servlet,编译成一个class文件---->再交给web容器中的servlet引擎去装载,从而实现页面交互
    在这里插入图片描述

  10. 请描述jsp的9大内置对象,以及这些对象与servelt中各个对象之间的对应关系
    request:用户端请求,此请求会包含来自GET/POST请求的参数
    response:网页传回用户端的回应
    pageContext:网页的属性是在这里管理
    session:与请求有关的会话期
    application:servlet 正在执行的内容
    out:用来传送回应的输出
    config:servlet的构架部件
    page:JSP网页本身
    exception:针对错误网页,未捕捉的例外

request:表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header,和session数据的有用的方法。
response:表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)
out:对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext:表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
session:表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息
applicaton: 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息
config:表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
page:表示从该页面产生的一个servlet实例
exception:对象的作用是显示异常信息

  1. servlet的生命周期
    初始化-----实例化-----服务------销毁
    描述:客户端发送请求到tomcat服务器,tomcat服务器判断请求,若为servlet请求,那么直接到servlet容器中去找是否有所请求的servlet实例,若存在,则直接调用service()方法,若不存在则加载class,调用构造方法,在进行初始化,然后再调用service()方法;最后判断请求类型,作出相应;最终关闭(销毁)

  2. servlet特性?servlet线程安全吗?如何解决servlet中的线程不安全问题?
    1、单例多线程
    2、servlet对象并不是一个线程安全的对象;
    servlet第一次调用的时候,先通过init()方法初始化servlet,然后再调用service()方法,在第二次请求时,会直接调用service()方法;因为servlet是单实例的,所以后面的请求同一个servlet时,不会创建新的实例,但是web容器会为每一个请求创建一个线程,这样会导致多个并发的请求访问同一个servlet,从而使线程不安全
    3、(1)不要在servlet中使用成员变量
    (2)添加Synchronize同步锁,但是数据并发访问会导致堵塞
    (3)可以实现SingleThreadModel接口,这样可以避免在servlet中使用成员变量的问题,但同样会导致并发访问导致堵塞的问题

  3. 过滤器作用?拦截器作用?区别?
    1、过滤器在进行javaweb请求和响应时,对一些信息进行过滤操作,或提前设置一些参数在进入servlet之前;例如:过滤掉部分url(没有登录的都过滤掉)、对字符进行统一设置等
    2、拦截器是在面向切面编程中使用的,在进行servlet请求或者一个方法前后进行资源的拦截处理,例如:动态代理
    区别:
    (1)拦截器是基于java的反射机制的,而过滤器是基于函数回调。
    (2)拦截器不依赖servlet容器,过滤器依赖与servlet容器。
    (3)拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
    (4)拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
    (5)在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

  4. request.getAttribute()和 request.getParameter()有何区别?
    1、getParameter()返回的数据类型都是String类型的;getAttribute()返回的数据数据类型可以是对象
    2、getParameter()获取POST/GET传递的参数值;getAttribute()是获取对象容器中的数据值
    3、getParameter()用于获取客户端提交的表单数据或url地址中的参数;getAttribute()只能收到程序用setAttribute()设置的值
    4、getAttribute()可获取session的值

  5. 解决jsp乱码问题
    1、查看jsp文件头是否设置了编码格式;
    2、查看项目的编码格式:设置为UTF-8
    3、提交的表单乱码等问题,需要在请求头响应头设置编码
    4、设置tomcat服务器编码格式,默认情况下,tomcat使用的的编码方式:iso8859-1,打开setting.xml文件(在tomcat文件夹conf中)
    总结:jsp页面头、项目编码格式、请求头响应头设置编码格式、tomcat服务器编码格式

  6. TCP和UDP的区别
    1、TCP基于连接,UDP基于无连接。
    2、TCP对系统资源要求高,UDP少。
    3、TCP是基于字节流的,UDP是数据报文模式。
    4、TCP复杂,UDP简单。

  7. TCP 为什么要三次握手
    TCP通信只有经过三次握手才能确保双方都能接收到对方发送的数据

  8. Http请求由哪三部分组成
    请求行、请求头、请求体
    http协议报文
    1.请求报文(请求行/请求头/请求数据/空行)
    请求行
    求方法字段、URL字段和HTTP协议版本
    例如:GET /index.html HTTP/1.1
    get方法将数据拼接在url后面,传递参数受限
    请求方法:
    GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT
    请求头(key value形式)
    User-Agent:产生请求的浏览器类型。
    Accept:客户端可识别的内容类型列表。
    Host:主机地址
    请求数据
    post方法中,会把数据以key value形式发送请求
    空行
    发送回车符和换行符,通知服务器以下不再有请求头
    2.响应报文(状态行、消息报头、响应正文)
    状态行
    消息报头
    响应正文

  9. 详细描述MVC
    基于java的web应用系统采用MVC设计模型,即用Model(模型)、View(视图)和Controller(控制)分离设计,这是目前web应用服务系统的主流设置方向。
    Model:处理业务逻辑的模块。
    View:负责页面显示,显示Model的处理结果给用户,主要实现数据到页面的转换过程。
    Controller:负责每个请求的分发,把Form数据传递给Model进行处理,处理完成后,把处理结果返回给相应的View显示给用户。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值