ServletJsp技术

Servlet/Jsp技术

0.Servlet/Jsp介绍

Servlet技术是java开发web应用的一种底层技术,主要用来生产动态的web内容,大多情况用来进行一些后台管理。而jsp是为了简Servlet程序开发而发布的技术,语言基本有HTML和java代码组成。Servlet/Jsp出现后,涌现出了大量的框架来帮助程序员快速开发。

1.Servlet

servlet其实就是一个java程序,一个Servlet应用包含多个Servlet程序,而jsp页面也要被转化为Servlet程序。

1.Servlet需要容器的支持才能运行,如Tomcat、jetty
ServletJsp技术_第1张图片

2.达到Servlet的请求,需要ServletRequest对象和ServletResponse对象去处理。

web客户端与web服务器之间通过HTTP协议进行通信,而Servlet/jsp容器属于web服务器的一部分。当你要访问一个Servlet应用时,web客户端发送一个HTTP请求到服务器,Servlet/jsp容器将请求传递给Servlet应用,然后将结果返回客户端。

3.Servlet在服务器中的运行:

  1. 实例化:Servlet容器创建Servlet的实例
  2. 初始化(init())
  3. 调用(service(){doGet/doPost}) 如果请求Servlet,则容器调用service()方法
  4. 销毁(destroy()).其中1 2 4 在Servlet的整个生命周期中只会被执行一次

4.如果在web.xml中对Servlet配置了load-on-startup,那么就是在容器加载时就将Servlet初始化,否则是接受第一次请求时再加载。

5.在web.xml文件中,Servlet可以通过元素和元素指定通过url的方式访问这些Servlet。

6.Servlet的工作原理
ServletJsp技术_第2张图片

7.Servlet的数量

Servlet默认是线程不安全的,一个容器中只有每个Servlet一个实例。

StandardWrapper源码中写明,这个类负责Servlet的创建,其中singleThreadModule模式下创建的实例数不能超过20个,也就是同时只能支持20个线程访问这个Servlet,因此,这种对象池的设计会进一步限制并发能力和可伸缩性。

8.缺点

开发效率低、程序的可移植性差、程序可维护性差

2.JSP

1.jsp(java servlet page)其实就是Servlet。是从Servlet继承我而来。只不过他在Servlet当中又添加和修改了一些方法,作了新的封装。

2.工作原理
ServletJsp技术_第3张图片

流程图解释:

浏览器请求jsp页面,服务器用jsp引擎将其解析成Servlet类的java源代码文件,也就是 * jsp.java, 再由java编译器编译成一个字节码文件,也就是 *jsp.class,并装载到jvm解释执行。剩下的就等同于Servlet的处理过程了。

3.各自作用

现在jsp用来做页面视图的展现,Servlet用于逻辑控制。在mvc架构模式中,就jsp和Servlet而言,c通常由Servlet充当,v通常由jsp来充当。

面试

1.Servlet和GCI的区别?

Servlet是基于java编写的,处于服务器进程中,他能够通过多线程方式运行service()方法,一个实例可以服务于多个请求,而且一般不会销毁;而GCI对每个请求都产生新的进程,服务完成后销毁,所以从效率上低于Servlet。

2.牢记Servlet的声明周期?

Servlet的声明周期从web加载Servlet开始,通过调用Servlet的init()方法进行Servlet的初始化,通过调用service()方法处理请求,根据不同的请求调用不同的方法。服务结束,web容器调用Servlet的destory()方法。

3.jsp是Servlet技术的扩展,更加强调表现成的处理。Servlet和jsp最主要的不同点在于?

服务端有一个jsp容器,主要处理jsp页面的请求,容器首先把jsp转成一个Servlet,所有的jsp元素都会转换为java代码,然后编译这个Servlet类。jsp侧重于视图,Servlet主要用于控制业务逻辑。

4.jsp有哪些内置对象?作用分别是什么?

  • HttpServletRequest类的request对象:代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务端的数据。
  • HTTPServletResponse类的response对象:代表响应对象,主要用于向客户端回应发送数据。
  • ServletContext类的application对象:主要用于保存所有应用系统中的共有数据,它是一个共享的内置对象,即是一个容器中的多个用户共享的一个application对象,只要没有关闭服务器,application就一直存在。
  • HttpSession类的session对象:主要用来区分每个用户信息和会话状态。
  • PageContext类的pageContext对象:主要用来管理页面属性,代表了一个页面的上下文,pageContext对象的创建和初始化都是有容器自动完成的。
  • Object类的page对象:代表正在运行的jsp页面,也就是说page对象代表了jsp被编译后的Servlet。page对象只能用在当前的jsp范围之内。
  • ServletConfig类的config对象:代码片段配置对象,用于初始化Servlet的配置参数。
  • JspWriter类的out对象:主要用于向客户端输出数据。
  • exception对象:处理jsp文件执行时发生的错误和异常,只要在错误页面里才能使用。

5.说出jsp的6个动作指令和作用?

  • jsp:include :在页面被请求的时候引入一个静态或动态的文件。
  • jsp:useBean : 寻求或者实例化一个JavaBean。
  • jsp:setProperty : 设置JavaBean的属性。
  • jsp:getProperty : 获取某个JavaBean的属性。
  • jsp:forward : 吧请求转到一个新的页面(HTML文件、jsp文件或者一个新的程序段。)
  • jsp:pligin : 根据浏览器类型为java插件生成object或embed标记。
  1. Jsp的3种跳转方式

    • response.sendRedirct()方法:重新发送请求。
    • response.setHeader()方法:与response.sendRedirect()方法
    • :是服务器端的跳转。

你可能感兴趣的:(javaWeb)