Jsp与Servlet面试题

一、jsp有哪些内置对象作用分别是什么   

    答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):

request  用户端请求,此请求会包含来自GET/POST请求的参数 
response  网页传回服务器端的回应 
pageContext  网页的属性是在这里管理 
session  与请求有关的会话期 
application  服务器启动时创建,服务器关闭时停止,为多个应用程序保存信息 
out  用来传送回应的输出 
config  servlet的构架部件 
page  JSP网页本身
exception  针对错误网页,未捕捉的例外

    

二、jsp有哪些动作作用分别是什么

  答:JSP共有以下6种基本动作

jsp:useBean 寻找或者实例化一个JavaBean
jsp:setProperty 设置JavaBean的属性
jsp:getProperty 输出某个JavaBean的属性
jsp:forward 把请求转到一个新的页面
jsp:plugin 根据浏览器类型为Java插件生成OBJECT或EMBED标记
jsp:include   在页面被请求的时候引入一个文件

三、JSP中动态INCLUDE与静态INCLUDE的区别?

  答:动态include用jsp:include动作实现 ,它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 。
    静态include用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面。

四、 Servlet生命周期

  Servlet生命周期包括三部分: 
    初始化:Web容器加载servlet,调用init()方法 。
    处理请求:当请求到达时,运行其service()方法。service()自动派遣运行与请求相对应的doXXX(doGet或者doPost)方法。 
    销毁:服务结束,web容器会调用servlet的distroy()方法销毁servlet。

五、get提交和post提交有何区别

  (1)get一般用于从服务器上获取数据,post一般用于向服务器传送数据 
  (2)请求的时候参数的位置有区别,get的参数是拼接在url后面,用户在浏览器地址栏可以看到。post是放在http包的包体中。 
      比如说用户注册,你不能把用户提交的注册信息用get的方式吧,那不是说把用户的注册信息都显示在Url上了吗,是不安全的。 
  (3)能提交的数据有区别,get方式能提交的数据只能是文本,且大小不超过1024个字节,而post不仅可以提交文本还有二进制文件。 所以说想上传文件的话,那我们就需要使用post请求方式 。
  (4)servlet在处理请求的时候分别对应使用doGet和doPost方式进行处理请求

六、JSP与Servlet有什么区别

  Servlet是服务器端的程序,动态生成html页面发送到客户端,但是这样程序里会有很多out.println(),Java与html语言混在一起很乱,所以后来sun公司推出了JSP.其实JSP就是Servlet,每次运行的时候JSP都首先被编译成servlet文件,然后再被编译成.class文件运行。有了jsp,在MVC项目中servlet不再负责动态生成页面,转而去负责控制程序逻辑的作用,控制jsp与javabean之间的流转。

七、doGet与doPost方法的两个参数是什么

  HttpServletRequest:封装了与请求相关的信息 
  HttpServletResponse:封装了与响应相关的信息

八、request.getAttribute()和request.getParameter

  (1)有setAttribute,没有setParameter方法 。
  (2)getParameter获取到的值只能是字符串,不可以是对象,而getAttribute获取到的值是Object类型的。 
  (3)通过form表单或者url来向另一个页面或者servlet传递参数的时候需要用getParameter获取值;getAttribute只能获取setAttribute的值 。
  (4)setAttribute是应用服务器把这个对象放到该页面所对应的一块内存当中,当你的页面服务器重定向到另一个页面的时候,应用服务器 。会把这块内存拷贝到另一个页面对应的内存当中。通过getAttribute可以取得你存下的值,当然这种方法可以用来传对象。 用session也是一样的道理,这是说request和session的生命周期不一样而已。

九、四种会话跟踪技术

  会话作用域ServletsJSP 页面描述 :

十、forward和redirect的区别

  转发与重定向 :
    (1)从地址栏显示来说 
        forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL。
    (2)从数据共享来说 
        forward:转发页面和转发到的页面可以共享request里面的数据. 
        redirect:不能共享数据. 
    (3)从运用地方来说 
        forward:一般用于用户登陆的时候,根据角色转发到相应的模块. 
        redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等. 
    (4)从效率来说 
        forward:高. 
        redirect:低.

十一、Servlet的线程安全问题:

  实例变量不正确的使用是造成Servlet线程不安全的主要原因。

  从Servlet的调用过程可以看出,当客户端第一次请求Servlet的时候,tomcat会根据web.xml配置文件实例化servlet 。
  当又有一个客户端访问该servlet的时候,不会再实例化该servlet,也就是多个线程在使用这个实例。

  JSP/Servlet容器默认是采用单实例多线程(这是造成线程安全的主因)方式处理多个请求的,这种默认以多线程方式执行的设计可大大降低对系统的资源需求,提高系统的并发量及响应时间。

  Servlet本身是无状态的,一个无状态的Servlet是绝对线程安全的,无状态对象设计也是解决线程安全问题的一种有效手段。

  所以,servlet是否线程安全是由它的实现来决定的,如果它内部的属性或方法会被多个线程改变,它就是线程不安全的,反之,就是线程安全的。

  如何控制Servlet的线程安全性?

    1.避免使用实例变量 
      避免使用非线程安全的集合,在多个Servlet中对某个外部对象(例如文件)的修改是务必加锁(Synchronized,或者ReentrantLock),互斥访问。 属性的线程安全:ServletContext、HttpSession是线程安全的;ServletRequest是非线程安全的。

    设计线程安全的Servlet

      1.实现 SingleThreadModel 接口 
        该接口指定了系统如何处理对同一个Servlet的调用。如果一个Servlet被这个接口指定,那么在这个Servlet中的service方法将不会有两个线程被同时执行,当然也就不存在线程安全的问题。但是,如果一个Servlet实现了SingleThreadModel接口,Servlet引擎将为每个新的请求创建一个单独的Servlet实例,这将引起大量的系统开销,在现在的Servlet开发中基本看不到SingleThreadModel的使用,这种方式了解即可,尽量避免使用。

      2.同步对共享数据的操作 
        使用synchronized 关键字能保证一次只有一个线程可以访问被保护的区段,可以通过同步块操作来保证Servlet的线程安全。如果在程序中使用同步来保护要使用的共享的数据,也会使系统的性能大大下降。这是因为被同步的代码块在同一时刻只能有一个线程执行它,使得其同时处理客户请求的吞吐量降低,而且很多客户处于阻塞状态。另外为保证主存内容和线程的工作内存中的数据的一致性,要频繁地刷新缓存,这也会大大地影响系统的性能。所以在实际的开发中也应避免或最小化Servlet 中的同步代码。

      3.避免使用实例变量 
        线程安全问题很大部分是由实例变量造成的,只要在Servlet里面的任何方法里面都不使用实例变量,那么该Servlet就是线程安全的。在Servlet中避免使用实例变量是保证Servlet线程安全的最佳选择。Java 内存模型中,方法中的临时变量是在栈上分配空间,而且每个线程都有自己私有的栈空间,所以它们不会影响线程的安全。

原文地址:https://www.cnblogs.com/whx20100101/p/9862225.html

时间: 2024-08-01 00:41:14

Jsp与Servlet面试题的相关文章

JSP和Servlet面试题

1.讲下servlet的执行流程. Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()<启动顺序根据web.xml里的startup-on-load来确定加载顺序>方法初始化servlet,再根据不同请求调用doGet或doPost方法,最后再通过destroy()方法进行销毁. 2.Get和Post的区别 在页面提交数据时,get的数据大小有限制4k,post没有限制,get请求提交的数据会在地址栏显示,post不显示,所以post比

JSP&amp;Servlet面试题

下面是是有关JSP&Servlet的面试,肯能与之前的面试总结会有一些冲突的地方,但是,不影响我们学习,所以可以继续探索Jsp的面试题,多多益善! 1.jsp有哪些内置对象作用分别是什么答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): request 用户端请求,此请求会包含来自GET/POST请求的参数    response 网页传回用户端的回应    pageContext 网页的属性是在这里管理    session 与请求有关的会话期    application

JSP和Servlet[1]

Servlet与JSP简介 Servlet是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者. JSP经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)2.JSP更擅长表现于页面显

jsp和servlet的区别

servlet是服务器端的程序,动态生成html页面发到客户端,但是这样 程序里有许多out.println(),java和html语言混在一起很乱.所以 后来推出了jsp.其实jsp就是servlet,每一个jsp在第一次运行时被 转换成servlet文件,再编译成.class来运行. 有了jsp,因此在MVC模式中servlet不再负责生成html页面,转而担任 控制程序逻辑的作用,控制jsp和javabean之间的流转. Servlet与Jsp的区别 * Servlet中没有内置对象,原来

转 高性能、高弹性JSP和Servlet性能优化

高性能.高弹性JSP和Servlet性能优化 2009-01-05 10:00 执木 网络转载 字号:T | T 本文讲述了开发高性能.高弹性的JSP页面和Servlet的性能优化技术.其意思是建立尽可能快的并能适应数量增长的用户及其请求.在本文中,你将学习已经实践和得到证实的性能调整技术,它将大大地提高你的Servlet和Jsp页面的性能,进而提升J2EE的性能. AD:WOT2015 互联网运维与开发者大会 热销抢票 你的J2EE应用是不是运行的很慢?它们能不能承受住不断上升的访问量?本文讲

jsp与servlet的区别

Servlet与Jsp的区别 * Servlet中没有内置对象,原来Jsp中的内置对象都是必须通过HttpServletRequest对象,或由 HttpServletResponse对象生成. * 对于静态的HTML标签,Servlet都必须使用页面输出流诼行输出. 总之,Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,至于Jsp中的 Java脚本如何镶嵌到一个类中,由Jsp容器完成.而Servlet则是个完整的Java类,这个类的Service 方法用于生

jsp和servlet

1.讲下servlet的执行流程. Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()<启动顺序根据web.xml里的startup-on-load来确定加载顺序> 方法初始化servlet,再根据不同请求调用doGet或doPost方法,最后再通过destroy()方法进行销毁. 2.Jsp的重定向和转发的流程有什么区别 重定向是客户端行为,转发是服务器端行为 重定向时服务器产生两次请求,转发产生一次请求,重定向时可以转发到项目以外的

jsp和servlet学习总结

一.Jsp与servlet的区别: jsp是java代码嵌入html中,用java代码控制来html. Servlet完全是JAVA程序代码构成,用来流程控制和事务处理 jsp更擅长表现于页面显示,servlet更擅长于逻辑控制. Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到. 二.如何配置一个servlet使它运行 1.servlet的名字,包类 <servle

JSP 和 Servlet 有哪些相同点和不同点, 他们之间的联系是什么?

jsp和servlet的区别和联系:1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.Jsp是Servlet的一种简化