我是靠谱客的博主 甜蜜冬日,最近开发中收集的这篇文章主要介绍Java毕业答辩来了!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

答辩每个人的总分为1.5分。每个人主要问3个问题。

开发流程===》系统架构====》项目模块+功能===》项目得失

  • 重定向与转发:?

  • 九个隐式对象?

  • get与post的区辨:?

  • jsp有静态包含,动态包含,两者的区辨:?

  • 什么是MVC:?

  • web系统架构:?

    java web项目答辩总结试题

注释:用楷体写的就是用自己组织的话来回答老师的问题。

1 http协议全名和特点

答辩老师:你对HTTP的是怎么理解的:
答辩同学:
首先HTTP是一种超文本传输协议,也是一种无状态的协议。
浏览器通过HTTP协议与web服务器交换信息,他处理信息交换的过程是:
客户端和web服务器建立连接-→客户端发送HTTP请求-→服务器端接收客户端的HTTP请求,生成HTTP响应回发-→服务器端关闭连接
HTTP请求,HTTP请求里有包含有请求行,请求头,空行,消息体。
HTTP响应里又包含状态行,响应码,空行,消息体。

HTTP是一种超文本传输协议(HyperText Transfer Protocol),是一种无状态的协议;HTTP遵循请求/响应模型 。

1.支持客户/服务器模式。

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

2 请求信息和响应信息包括

  • 请求:请求行 请求头 空行 消息体

  • 响应:状态行 响应头 空行 消息体

3 tomcat目录结构 — 内容信息

( 说说你知道的tomcat下的一些子目录有哪些,并且说说你的的理解:
答:首先他要有可以启动服务的嘛,一般的启动的都是在bin目录下。
安装之后一般都是有jar文件,jar文件是放在lib目录下的。(一般在做每一个项目的时候,就算没有lib,都会自己建立一个lib来存放jar文件的)。
在创建项目的时候,就会把你创建的项目放在webapps目录下。
自己所写的jsp生成的Servlet就存放在work里面。
一些配置文件就放在conf目录下。
有记录这些动作的,就需要日志记录,就有logs日志文件。(可以根据英文来记忆目录的名字)

  • bin:启动和关闭服务器的脚本文件

  • lib:服务器及所有的应用都能共用的jar文件

  • conf:存放配置文件

  • webapps:应用程序部署目录

  • logs:日志文件

  • work:由JSP生成的Servlet的存放目录

4 servlet的生命周期

说说你对Servlet生命周期的了解:答:Servlet生命周期大体分为三个阶段,

  • 第一个阶段:初始化:准备工作,触发init()方法。

  • 第二个阶段:服务:处理浏览器的各种请求并作出响应。触发server()方法。

  • 第三个阶段:销毁:容器关闭,触发destroy()方法。

Servle生命周期大体可以分为:初始化,服务,销毁3个阶段。
初始化:第一个阶段主要工作,容器装载并实例化servlet,并触发init()方法装载资源。
服务阶段:主要处理来源于客户端的各种请求与给出响应,请求到达时触发service()方法,处理请求产生响应。servlet是多线程的,容器只装载一个servlet实例,初始化只执行一次,但是请求达到时,每个请求被servlet的service()方法执行的线程并发处理。
销毁: servlet的销毁代表着该servlet实例被容器丢弃,一般是容器关闭或容器需要空闲内存时,容器通过调用destroy()来销毁。

6 重定向 转发 的原理

( 谈谈你了解的重定向与转发(重定向与转发的区别):

答:重定向:
重定向的使用是:response.sendRedirect(url);
重定向后,浏览器的地址栏会发生变化,变成新的目标URL;
使用重定向浏览器会发起两次不同的请求。因为重定向是可以请求到其他应用程序中的资源。

转发:
转发的使用是:request.getRequestDispatcher(/path).forward(request, response);
转发后,浏览器的地址栏的地址不会发生变化,因为转发是共享的request和response对象,属于同一个请求响应过程。由服务器内部完成。
)
请求转发:
只能将请求转发到同一个WEB应用中的组件,请求转发的组件与组件之间共享相同的request 对象和response 对象,它们属于同一个访问请求和响应过程。
由服务器内部完成请求的转发,并返回了响应。
所以转发过程中浏览器地址不会跳转路径,依旧是前一个URL,由于转发请求的工作都是服务器完成。安全性较高。
重定向:
可以将请求重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
请求者与被请求者使用各自的request 对象和response 对象,它们属于两个独立的访问请求和响应过程。
浏览器发起了2次不同的请求,所以重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL。

7 session的原理

(解释session是的工作原理:
答:服务器会创建一个session对象,这个session对象是存放在服务器的。创建session对象的,服务器还会产生一个sessionID,这个sessionID是存放在客户端的。当我们关闭浏览器的时候,sessionID会被销毁,但是session对象是不一定被销毁的。session对象可以设置一个超时。)

Session对象的原理在于,服务器可以给客户端创建并维护一个Session对象,用于存放数据。

在创建Session对象的同时,服务器将会为该Session对象产生一个唯一的编号,这个编号称之为SessionID,服务器以Cookie的方式将SessionID存放在客户端。Session对象是保存在服务器端,浏览器关闭时并不意味着Session对象被删除。

8 JSP与servlet的区别


谈谈及自己认为的JSP与Servlet的区别:
答:JSP主要是设置网页的,侧重于视图。Servlet主要是写功能的,侧重控制逻辑。

  • 解释1 :JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

  • 解释2:JSP在本质上就是SERVLET,但是两者的创建方式不一样.Servlet完全是JAVA程序代码构成擅长于流程控制和事务处理而通过Servlet来生成动态网页;JSP由HTML代码和JSP标签构成,可以方便地编写动态网页

因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.

9 谈谈自己的ajax的理解

( 谈谈你自己对Ajax的理解:
答:Ajax是异步的JavaScript和XML,它不是语言,是一种新方法,主要用它来更新部分网页。
)

  • AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

  • AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

  • AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。

10 response与request对象的创建与销毁— (时间)

(response对象与request对象是怎么创建于销毁的:
答:当运行Servelt的时候,创建response对象与request对象,一个请求和响应完成以后tRequest和Response就会由容器负责销毁。

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。

11 怎样部署一个servlet (配置)

(在web.xml里怎样去部署一个Servlet:
答:先注册(servlet),servlet下有一个servlet-name是用于声明一个servlet的名字,servlet-class是用来写java类完整的位置。
与servlet同级的一个映射(servlet-mapping),servlet-mapping里有个servlet-name是映射的逻辑名字,必须与下的name一致,url-patter映射路径。

注册Servlet

<servlet>
<servlet-name>InitUser</servlet-name>--- 声明一个在web应用程序中唯一的名字
<servlet-class>com.cy.servlet.InitUser</servlet-class>  ----java类完整的位置
( 初始化参数  对单个的servlet
<init-param>
<param-name>name</param-name>
<param-value>value</param-value>
</init-param>
)
</servlet>
映射Servlet
<servlet-mapping>
<servlet-name>InitUser</servlet-name>
<url-pattern>/InitUser</url-pattern>
</servlet-mapping>

12 经常遇到出错的状态码并解释意思(解释)

( 答:200:表示正确
302:一般使用转发的时候会遇到
404:找不到指定的位置
500:服务器报错
)

  • 200:正确

  • 302:客户请求的文档在其他地方,新的URL在location头中给出,浏览器应该自动访问新的URL

  • 404:无法找到指定的位置的资源。

  • 500:服务器遇到了意料不到的情况,不能完成客户的请求。

13 把数据从servlet查出转发到jsp显示数据的方式

( 答:一般有三种方法,1 可以用脚本。2 可以用EL表达式。3 使用javabean。)

  • 1 脚本

  • 2 EL表达式

  • 3 JavaBean

14 异常处理 执行顺序 try catch finally

(答:在try中捕获到异常,执行catch中的代码,最后执行finally。一般finally里的方法都会执行。)
如果在try{}中捕获相应的异常,中断当前代码的执行,转而去执行catch{}中的内容,最后去执行 finally{}中方法,一般来说finally中的方法都是会被执行的,其中finally中很大程度上用于资源的释放。

finally中的代码总是会执行吗?

如果一个方法内在执行try{}语句之前就已经return了,那么finally语句指定不会执行了。因为它根本没有进入try语句中 如果在一个try语句中调用System.exit(0);方法,那么就会退出当前java虚拟机,那么finally也就没有执行的机会了。

15 HttpServletRequest对象获取请求参数的方法:

  • getParameter(parameterName) 返回一个字符串对象。

  • getParameterValues(parameterName) 返回一个字符串数组对象。

  • getParameterNames() 以Enumeration(枚举)的方式返回请求中所有的表单参数名列表。

16 servlet映射的路径的方式有几种— …

精确模式匹配。这种类型的模式用于将请求一对一映射到指定的Servlet。
扩展名匹配“.扩展名”。在这种情况下,所有以指定扩展名结尾的URL都转向指定的Servlet。
路径映射。路径映射必须以’/‘开始,以’/
‘结尾,在这之间可以出现任意字符。路径匹配通常用于将对某个目录的所有请求转向一个指定的Servlet。
默认的Servlet,’/‘。默认的Servlet映射用于定义一个在没有给出路径信息时请求转向的Servlet。

17 配置servlet时初始化参数的方式

初始化web应用程序参数(必须出现在任何Servlet标记之前)

<contes-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>
</contes-param>
初始化参数  对单个的servlet
<init-param>
<param-name>name</param-name>
<param-value>value</param-value>
</init-param>

18 response对象输出文本,二进制数据

getWrite() :文本
getOutputStream():文本 ,但是一般都是发送非文本的二进制信息

19 谈谈你对session的了解 :

(答:
首先从字面意思来解释他,就是会话的意思嘛。
当你启动一个服务的时候调用HttpServletRequest.getSession(true)这个的语句的时候,session对象就被创建了。服务器可以为浏览器创建并维护一个session对象,他的作用是来存放数据的。在创建session的同时,服务器也会为这个session对象产生一个唯一的编号sessionID,这个sessionID是放在浏览器里的。当你第二次去访问服务器的时候,服务器就会通过这个sessionID来检查到以前的session对象,并进行对其访问。

可以为session删除的时候,是在session超时的时候,或者是调用了session的invalidate()方法,也可以是服务器关闭或停止的时候。并不会因为浏览器的关闭的时候,session对象呗删除。

20 servletConfig 与servletContext 对象的使用

servletConfig:初始化参数
servletContext:上下文对象 只创建一次

21 cookie 与 session的区别:(创建 作用 保存位置)

(答:cookie是以键值对的方式保存在客户端,session对象是保存在服务器的,创建session的时候会创建一个sessionID,sessionID是保存在客户端的。)

创建:创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie:存储在浏览器的内存中,用户退出浏览器之后被删除。

server端程序(如Servlet)调用HttpServletRequest.getSession(true)这样的语句时才会被创建。
保存位置:cookie数据存放在客户的浏览器上,session数据放在服务器上。

22 提交表单上传文件时用提交的方式:
(答:上传文件,在一个form表单里,需要定义enctype=”multipart/form-data” 提交方式为post)
enctype=”multipart/form-data” post

24 jar包存放的位置:

WEB-INF/lib

25 get方式与post方式提交的区别:

  • 提交数据类型:get 一般提交文本;post提交文本,二进制文本。

  • 提交数据长度:get有一定的长度;post没有限制。

  • 提交数据可见性:get 作为URL地址的一部分显示在浏览器的地址栏;post作为请求的消息体,不可见。

  • 提交数据缓存:get 缓存在浏览器URL历史状态中;post 不会被浏览器缓存。

  • 总的来说:POST的安全性要比GET的安全性高。

27 servletContext对象作用:

(答:servletCotext对象主要用setAttribute方法来绑定参数,使用getAttribute来得到绑定的参数)
setAttribute绑参数 与 得到参数getAttribute

28 重定向过程:(对应的状态码(302))

(答:先是浏览器发送http请求,服务器接收请求响应个302状态码给浏览器,然后浏览器接收302后,再发送个http请求,请求一个url地址。最后服务器接收请求,跳到新的地址)

客户浏览器发送http请求——》web服务器接受后发送302状态码响应及对应新的location给客户浏览器—》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址——》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。

29 什么叫URL重写:

URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程

30 JSP动作,(include forWord) 指令:(taglib include page)

(你了解的JSP的动作有哪些,指令有哪些,分别的作用是什么:

答:动作有include和forWord两种,指令有page include taglib 三种。

  • include作用(动作)的是把查询的那个页面插入到当前这个页面来;

  • forWord作用就是跳转到forWord里那个page的地址去;

  • page就是为当前的这个页面做一些指令的;

  • include(指令)就是把另外一个文件包含在jsp中;

  • taglib 就是一般用来如何访问标签库的一些准备工作的

  • 动作:是一种动态的包含,它把显示的结果查入到当前页面来显示。其语法格式为: Page表示相对路径;flush为真时表示缓冲区填满时自动清空。

动作:是将客户端所发出来的请求,从一个JSP页面转发到另一个JSP页面。其语法格式为: 
Page指令为当前页面提供处理指令
Include指令用于把另一个文件包含在JSP中
Taglib指令制定如何包含和访问自定义标签库

31 jsp导入标签库 :

(答:就jsp需要导入标签库,首先需要两个jar文件,一个提供的是jsp标准库的API类,另一个提供的是标记库的实现类。我们是把jar文件放在WEB-INF下的lib目录下的。再到jsp页面中使用taglib指令把他导入jsp中,例如:<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %> c就是一个前缀)。

需要两个JAR文件。第一个文件是jstl.jar,它为JSTL标记库提供API类。第二个文件是standard.jar,它提供了标记库的实现类 。复制到WEB-INF目录下的lib子目录下

通过<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>引入到jsp中。核心标准标记库

32 javaBean的规范:

(答:他必须是个公共类;
有一个空的构造函数,
属性都是私有的,通过getter()setter()方法来得到和设置属性值,所有要有getter()和setter()方法,
要实现Serializable 接口)
JavaBean 类必须是一个公共类,并将其访问属性设置为 public。
JavaBean 类必须有一个空的构造函数。
一个JavaBean类不应有公共实例变量,类变量都为private。要访问这些类变量,应该通过一组存取方法(getXxx 和 setXxx)来访问,不能以大写字母开始命名成员变量。
JavaBean应该是可序列化(serializable)的,即实现java.io.Serializable 接口

33 jsp指令:(taglib include page)

  • Page指令为当前页面提供处理指令

  • Include指令用于把另一个文件包含在JSP中

  • Taglib指令制定如何包含和访问自定义标签库

34 隐式对象:

out session page request response config pageContext application exception

35 jsp遍历数据:

标记用于循环处理字符串中由分隔符分隔的各成员

37 Web应用程序状态管理的解决方案:

  • 1 表单隐藏字段

  • 2 Cookie

  • 3 URL重写

  • 4 Session会话跟踪

38 说说 context request session 各自的生命周期是怎样的:

(答:context是一个上下文对象,每个容器都会产生一个实现servletcontext接口的实例,在服务停止的时候,context就结束了。

request的生命周期是request请求域,一个请求结束,则request结束。
session的生命周期是session会话域,浏览器访问的时候,session就开始,当session超过时间限制后,session注销而失效 或是人为使用session.invalidate();使用session失效;或是关闭服务器,session就失效了。)

39 常用的监听器:

  • 上下文监听器

  • 会话监听器

  • 请求监听器

  • HttpSessionBindingListener是唯一个不需要再web.xml中注册的listener

40 配置过滤器:

<filter>
<filter-name>Filter1</filter-name>
<filter-class>com.cy.Filter1</filter-class>
</filter>
<filter-mapping>
<filter-name>Filter1</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

41 jsp运行阶段:

翻译 编译 类装载 类实例化 初始化 服务 销毁

42 静态 动态包含数据:

include 指令用于把例外一个文件静态包含在jsp中。语法:<%@ include file = “url”%>,特点:共享request请求域,先包含再编译,不检查包含页面的变化。

动态包含,语法:特点:不共享request请求域,先编译再包含,会检查包含页面的变化。

43 EL表达式取值的顺序:

(在EL表达式中如果我们没有规定他的作用域是哪个,那么他的作用域执行顺序是怎样的:
答:他的顺序是先是page 接着是request 然后是session 最后是application。

作用域顺序 page request session application

44 XMLHttpRequest属性和方法:

(Ajax中的对象XMLHttpRequest是用来做什么的以及他的属性和方法有哪些:
答:首先要知道XMLHttpRequest用于在后台与服务器交换数据用的。

他的属性有两种,就是responseText,一字符串的形式响应数据,还有就是 responseXML是以xml的形式响应数据。

他的方法我们最常用的就是open()方法。里面带有三个参数,一个是请求方式method:get/post,第二个需要跳转的文件位置,第三个就是是同步还是异步。

属性:

responseText:会的字符串形式的响应数据
responseXML:获得XML形式的响应数据
方法:

open(method,url,async)
method:请求的类型;GET 或 POST
url:文件在服务器上的位置
async:true(异步)或 false(同步)
open(String):
string:仅用于 POST 请求

45 表单提交文件:

(答:要显示表单提交文件就要使用enctype=”multipart/form-data”,并且提交方式必须为post)。
enctype=”multipart/form-data” 不能用get方式

48 http处理流程 :

(答:首先浏览器一服务器建立连接,接着浏览器发送http请求,然后服务器响应http请求,把请求得到的内容返回给浏览器,最后服务器关闭连接)
客户端和web服务器建立连接-→客户端发送HTTP请求-→服务器端接收客户端的HTTP请求,生成HTTP响应回发-→服务器端关闭连接。客户端解析回发响应,恢复页面。

49 怎么实现转发?

(答:实现转发就是使用request的getRequestDispatcher()方法,例如:request.getRequestDispatcher(/path).forword(req,resp);这样就实现了转发。)
request.getRequestDispatcher(/path).forword(req,resp);

50 为什么要管理用户状态?

(答:因为浏览器发送请求时,http是一种无状态的协议,当你再一次发送请求的时候,服务器又会重新去创建页面。之前访问存在的信息都不见了。所以我们需要管理用户的状态。)
web应用程序是无状态的。每次从服务器请求页的时候,都会创建网页类的一个新实例。这通常意味着每次在往返过程中会丢失该页的及控件中的所有信息。http是一种无状态连接。

51 web必要的目录结构:

(答:WEB-INF,WEB-INF下的lib文件与web.xml配置文件。一些有关网页的代码,如html,css,jsp文件。一些需要导入的包,java代码。)
配置文件(web.xml) ;静态文件和JSP类;文件和包

52 过滤器对应请求的四种类型:forWord include request error

(答:四种类型是:request,include,forWord,error,一般默认方式是request)
过滤器对应的请求方式,可以是REQUEST、INCLUDE、FORWARD、ERROR四种之一,默认是REQUEST

来源:cnblogs.com/hellokitty1/p/5033589.html

最后

最近小于哥也做了一个关于职场分享的视频号,主要是职场面试分享以及技术分享之类的,我想大家一定会有用的大的,这里希望大家来去支持一下

回复 【idea激活】即可获得idea的激活方式

回复 【Java】获取java相关的视频教程和资料

回复 【SpringCloud】获取SpringCloud相关多的学习资料

回复 【python】获取全套0基础Python知识手册

回复 【2020】获取2020java相关面试题教程

回复 【加群】即可加入终端研发部相关的技术交流群

阅读更多

为什么HTTPS是安全的

因为BitMap,白白搭进去8台服务器...

《某厂内部SQL大全 》.PDF

如何写好一份前端简历

8种常见SQL错误用法

大家好,欢迎加我微信,很高兴认识你!

在华为鸿蒙 OS 上尝鲜,我的第一个“hello world”,起飞!

相信自己,没有做不到的,只有想不到的

在这里获得的不仅仅是技术!


喜欢就给个“在看

最后

以上就是甜蜜冬日为你收集整理的Java毕业答辩来了!的全部内容,希望文章能够帮你解决Java毕业答辩来了!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部