最新java面试题-jsp/servlet篇

java面试题-jsp/servlet篇

一、EL表达式的作用域
page<requset<session<application
二、什么是servlet
是一个在服务器上用于处理客户端请求和作出响应的java程序
三、servlet的执行流程
Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()方法初始化servlet,再根据不同的请求调用doGet和doPost方法,最后调用destroy()方法进行销毁
四、Get和Post的区别
在页面提交数据时,get的数据大小有限制4k,post没有限制,get请求提交的数据会在地址栏显示,post不显示,所以post比get安全;get限制form表单的数据集必须为ascll字符,而post支持整个ios10646字符集;get是form的默认方法;get的表单数据是按照key=value的形式添加打url后面,用?隔开,每个key=value之间用&隔开,post是将数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向url。
五、jsp中的9大内置对象及作用域
Request:请求对象,作用域是request
Response:响应对象,作用域是page
pageContext:页面上下文对象,作用域是page
application:应用程序对象,作用域是application
session:会话对象,作用域是session
Out:输出对象,作用域是page
Config:配置对象,作用域是page
Page:页面对象,作用域是page
exception:例外对象,作用域是page
六、Jsp有哪些动作,作用分别是什么
Jsp一共有6种基本动作:
Jsp:include,在页面被请求的时候引入一个文件
jsp:useBean,寻找或者实例化一个JavaBean
jsp:getProperty,获取某个JavaBean的属性
jsp:setProperty,设置某个javaBean的属性
jsp:forword,把请求转发到新页面
jsp:plugin,根据浏览器类型为java插件生成OBJECT或EMBED标记
七、动态include和静态include的区别
动态include使用jsp:include动作实现,<jsp:include page=“include.jsp” flush=“true”>,它总会检查所包含的页面文件的变化,适合用于包含动态页面,并可以带参数;
静态include使用include伪码实现,<@include file = “include.html”>不会检查包含页面的变化,适合用于静态页面的引入
八、转发和重定向的区别
转发只是容器中控制权的转向,在浏览器地址栏上不会显示转发后的地址,重定向是完全跳转,浏览器地址栏中显示的地址会改变;转发中原页面的转发页面使用的是同一个request,重定向是两个独立的请求;转发使用request.getRequestDispatcher(“”).forward()完成,重定向使用response.sendRedirect()完成,转发比重定向更加高效
九、jsp的四种会话跟踪技术
page:代表与页面相关的对象和属性
request:代表与web客户机发出的一个请求相关的对象和属性
session:代表与某个web客户机的一个用户体验相关的对象和属性
application:代表与整个web应用程序相关的对象和属性
十、jsp和servlet的区别、共同点、各自应用的范围
jsp在本质上就是servlet,但是两者的创建方式不一样,servlet完全是由java代码构成的,擅长于流程控制和事物处理,而通过servlet来生成动态页面很不直观;jsp页面有html和jsp标签构成,可以方便地编写动态页面;因此在实际应用中servlet来控制业务流程,jsp来生成动态网页
十一、cookie和session的作用,区别和各自的应用范围,session的工作原理
cookie记录在客户端,session记录在服务器,因为cookie保存在客户端,所以不安全,保存在服务器会更安全;cookie的长度有限制,session没有,每一个session在服务端有一个sessionId作为表示,储存的数据量大,cookie不能超过300个,而且每个大小不能超过4KB,所以cookie文件的大小限制在1200KB以内;cookie是在客户端开辟的一块可长期储存用户信息的地方,session是在服务器开辟一块储存用户信息的地方;
session原理:当客户端第一次访问服务器是,服务器会在内存创建对应的session给访问客户,当客户离开或时间过期时,服务器会销毁session,session是由容器管理的
十二、当容器调用servlet的destory()方法的时候,servlet会马上销毁吗,如果当时这个servlet正在执行其他任务或者线程呢?
当destroy被调用时,会马上销毁,不过在这之前会等servlet的service方法执行结束
十三、我们没有写servlet的构造方法,容器是怎样创建servlet的实例的呢?
容器会自动为servlet创建一个无参构造方法,并通过Class.forName(className).newInstance()来创建servlet实例
十四、页面间对象传递的方法
request、session、application、cookie

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
常考面试题 1.讲下servlet的执行流程。 Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()《启动顺序根据web.xml里的startup-on-load来确定加载顺序》 方法初始化servlet,再根据不同请求调用doGet或doPost方法,最后再通过destroy()方法进行销毁。 2.Get和Post的区别 在页面提交数据时,get的数据大小有限制4k,post没有限制,get请求提交的数据会在地址栏显示,post不显示,所以post比get安全. 3.有三台服务器,如果在一台服务器上登陆了这个用户,其他两台就不能再登陆这个用户,使用session共享,你是怎么做的。 把所有的session的数据保存到Mysql服务器上,所有Web服务器都来这台Mysql服务器来获取Session数据。 4.写一个自定义标签要继承什么类 SimpleTagSupport,一般调用doTag方法 或者实现SimpleTag接口 5.Jsp如何处理json 在 jsp 中处理 JSON,通常需要配套使用 JQuery 控件,并且导入一些 Common jar 包。 使用 JQuery 控件是因为它能有效的解析并且展示 JSON 数据, 导入Common 则是因为 Java 中的对象并不是纯粹的数据,需要通过这些 Jar 包的处理使之转化成真实数据。 6.如何处理Servlet的线程不安全问题 1.最简单的就是不使用字段变量, 2.使用final修饰变量, 3.线程安全就是多线程操作同一个对象不会有问题,线程同步一般来保护线程安全, 所以可以在Servlet的线程里面加上同步方法或同步块。 (Synchronized)可以保证在同一时间只有一个线程访问,(使用同步块会导致性能变差,最好不去使用实例变量) 7.Jsp的重定向和转发的流程有什么区别 重定向是客户端行为,转发是服务器端行为 重定向时服务器产生两次请求,转发产生一次请求,重定向时可以转发到项目以外的任何网址,转发只能在当前项目里转发 重定向会导致request对象信息丢失。转发则不会 转发的url不会变,request.getRequestDispatch().forward() 重定向的url会改变,response.getRedirect().sendRedirect();

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值