Java Web面试题

本文深入探讨了Tomcat优化、HTTP请求方式、Servlet工作原理及其生命周期、请求转发与重定向的区别、JSP动作与内置对象的运用,以及MVC模式在Java Web开发中的实践。

1、Tomcat的优化经验?
去掉对web.xml的监视,把jsp提前编辑成Servlet,有富余物理内存的情况,加大Tomcat使用的JVM内存。

2、HTTP请求的GET与POST方式的区别?
GET在浏览器回退是无害的,而POST会再次提交请求。
GET产生的URI地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行URI编码,而POST支持多种编码方式。
GET请求参数会被完整的保留在浏览器历史记录里,而POST参数不保留。
GET请求在URI传递的参数是有长度限制的,而POST没有
对参数的类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感数据。
GET参数通过URL传递,POST放在request body中。

3、解释一下什么是Servlet?
Servlet是使用Java Servlet应用程序接口(API)及相关类和方法的Java程序,所有的Servlet都必须要实现的核心接口是javax.servlet.servlet。每一个servlet都必须要直接或者间接实现这个接口,或者继承javax.servlet.GenericServlet或javax.servlet.HTTPServlet。
Servlet主要用于处理客户端传来的HTTP请求,并返回一个响应。

4、说一说Servlet的生命周期?
①创建Servlet实例
②Web容器调用Servlet的init()方法,对Servlet进行初始化。
③Servlet初始化后,将一直存在于容器中,用于响应客户端请求,根据客户端请求的方式通过Servlet中service()方法,去调用相应的doGet()或者doPost()方法。
④Web容器销毁Servlet时,调用Servlet的destroy()方法,通常在关闭容器时销毁Servlet。

5、请求转发和重定向的区别?
request.getRequestDispatcher(String url).forward(request,response);
request.getRequestDispatcher(String url).include(request,response);
response.sendRedirect(String url);
①请求转发是一个请求一次响应,而重定向会是两次请求两次响应。
②请求转发地址栏不变化,而重定向会显示后一个请求的地址。
③请求转发只能转发到本地项目其他servlet,而重定向不只能重定向到本项目其他servlet,还能定向到其他项目。
④请求转发是服务器端行为,只需要给出转发的servlet路径,而重定向需要给出request URI,即包含项目名。
⑤请求转发带值,重定向不带值。

6、什么情况下调用doGet和doPost?
JSP页面中的form标签里的method属性为get时,调用doGet(),为Post时调用doPost()方法。

7、request.getAttribute()和request.getParameter()有何区别?
①getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型。
②getParameter()表示接收参数,参数为页面提交的参数,包括:表单提交的参数,URL重写传的参数等,因此这个并没有设置参数的方法,而且接收参数返回的不是Object,而是String类型。

8、JSP有哪些动作?作用分别是什么?
①jsp:include:在页面被请求的时候引入一个文件。
②jsp:usrBean:寻找或者实例化一个JavaBean。
③jsp:setProperty:设置JavaBean的属性。
④jsp:getProperty:输出某个JavaBean的属性
⑤jsp:forward:把请求转到一个新的页面。
⑥jsp:plugin:根据浏览器类型为Java插件生成Object或Embed标记。

9、JSP有哪些内置对象?作用分别是什么?分别有什么方法?
JSP共有9个内置对象。

pageContext 网页的属性是在这里管理
request 用户端请求,此请求会包含来自GET/POST请求的参数
session 与请求有关的会话期
application 正在执行的内容
response 网页传回用户端的回应
out 用来传送回应的输出
config 的构架部件
page 网页本身
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表示JSP页面运行时产生的异常和错误信息,该对象只有在错误页面中才能使用(page指令中设定isErrorPage为true的页面才能使用)

10、JSP常用的指令?
page:针对当前页面的指令。
include:包含另一个页面
taglib:定义和访问自定义标签

11、JSP中动态的include与静态include的区别?
动态include用于jsp:include动作实现<jsp:include page = “include.jsp” flush = “true”/>它总是会检查所含文件的变化,适用于包含动态页面,并且可以带参数。
静态include用include伪码实现,不会检查所含文件的变化,适用于包含静态页面<%@include file=“include.html”%>.

12、两种跳转方式分别是什么?有什么区别?
<jsp:include page = “include.jsp” flush = “true”/>
<jsp:forward page = “nextpage.jsp”/>
前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面,执行完后还会回来,相当于函数调用,并且可以带参数,后者完全转向新页面,不会再回来,相当于go to语句。

13、页面间对象传递的方法?
request、session、application、cookie

14、JSP和Servlet有哪些相同点和不同点,联系是什么?
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类Servlet",Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在java文件中,并且完全从表现HTML中分离出来,而JSP的情况是java和HTML可以组合成一个扩展名为.jsp的文件,JSP偏重于视图,Servlet偏重于业务逻辑。

15、MVC的各个部分都有哪些技术来实现?如何实现?
MVC是Model-View-Controller的简写。
Model代表的是应用的业务逻辑(通过Java Bean,EJB组件实现)。
View是应用的表示面(由JSP页面产生)。
Controller是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现,这些组件可以进行交互和重用。

16、 Servlet总结-servlet的主要接口、类

17、作用范围?

           范围		         JSP中的范围       EL表达式中的范围       范围大小
        PageContext          PageContext           PageScope		   降序
     HttpServletRequest        request            requestScope
        HttpSession            session            sessionScope
        ServletContext       application        applicationScope
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值