javaweb项⽬答辩答辩题总结(书本⽹上语⾔答辩+⾃⼰的语⾔
答辩)
答辩每个⼈的总分为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;
使⽤重定向浏览器会发起两次不同的请求。因为重定向是可以请求到其他应⽤程序中的资源。
转发:
转发的使⽤是:RequestDispatcher(/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 (配置)
(在l⾥怎样去部署⼀个Servlet:
答:先注册(servlet),servlet下有⼀个servlet-name是⽤于声明⼀个servlet的名字,servlet-class是
⽤来写java类完整的位置。
与servlet同级的⼀个映射(servlet-mapping),servlet-mapping⾥有个servlet-name是映射的逻辑名字,必须与
<servlet>下的name⼀致,url-patter映射路径。
)
注册Servlet
<servlet>
<servlet-name>InitUser</servlet-name>--- 声明⼀个在web应⽤程序中唯⼀的名字
<servlet-class&servlet.InitUser</servlet-class> ----java类完整的位置
( 初始化参数对单个的servlet
从此心里有个你<init-param>
<param-name>name</param-name>
<param-value>value</param-value>
</init-param>dota2安装教程
)
</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语句中调⽤it(0);⽅法,那么就会退出当前java虚拟机,那么finally也就没有执⾏的机会了。
15 HttpServletRequest对象获取请求参数的⽅法:
getParameter(parameterName) 返回⼀个字符串对象。
getParameterValues(parameterName) 返回⼀个字符串数组对象。2020三伏天从几月几号到几月几号
getParameterNames() 以Enumeration(枚举)的⽅式返回请求中所有的表单参数名列表。
16 servlet映射的路径的⽅式有⼏种-- <url-pattern>...<url-pattern>
精确模式匹配。这种类型的模式⽤于将请求⼀对⼀映射到指定的Servlet。
扩展名匹配“*.扩展名”。在这种情况下,所有以指定扩展名结尾的URL都转向指定的Servlet。
路径映射。路径映射必须以'/'开始,以'/*'结尾,在这之间可以出现任意字符。路径匹配通常⽤于将对某个⽬录的所有请求转向⼀个指定的Servlet。
默认的Servlet,'/'。默认的Servlet映射⽤于定义⼀个在没有给出路径信息时请求转向的Servlet。
17 配置servlet时初始化参数的⽅式
初始化web应⽤程序参数(<contes-param>必须出现在任何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的了解:
(答:
⾸先从字⾯意思来解释他,就是会话的意思嘛。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论