Servlet&JSP&JDBC面试总结

一:应用开发框架
C/S:客户端/服务器端
   优点:客户端分担服务器端的功能(QQ客户端的聊天记录)
         安全性高
   缺点:必须安装客户端
         开发开销大
维护困难
         不能无缝升级
B/S:浏览器/服务器端(主流的企业级开发模式,
                  只需要浏览器,网上银行)
   优点:不需要安装客户端,浏览器就是客户端
          开发的开销小
 维护方便
 实现无缝升级
   缺点:安全性不高
         服务器端硬件要求高
服务器端的操作将会是软件的核心--
--->压力(并发,效率,

网络传输)网上售票系统

二 Servlet

A:servlet是运行在服务器端的java类

B:ervlet每次都会启动一个线程来处理客户端发送的  request,然后给客户端返回处理之后的response,

   即生成动态html网页,效率比较高。

C:Servlet的执行流程

     A:浏览器发送一个Http 请求会自动加载web.xml文件

    B:找对应的url-pattern标签---
     >servlet-name标签(servlet-mapping)---
     --->servlet-name标签(servlet标签中的)---

     -->servlet-class标签找到对应的Servlet

   C:调用Servlet的service方法来处理请求。包装成response返回客户端。

三,创建Servlet的步骤

    A:继承HttpServlet 

    B:继承GenericServlet  获取传入数据参数

    C:Servlet实现Servlet接口  了解Servlet其生命周期

四,跳转问题

    A:内部跳转

       特点:a)是同一个请求
       b)能够获取请求的数据
       c)浏览器的地址不会发生改变
       d)不能够访问其他应用程序的资源

         第一步:获取转发器RequestDispatcher

        request.getRequestDispatcher(path);

     第二步:进行跳转
       a)forward:会清空前一个response输出流中的信息
       b)include:不会清空前一个response输出流中的信息

B:重定向跳转:服务器外部跳转
     response.sendRedirect(path)
        path可以相当路径也可以是绝对路径。
      特点:a)不是同一个请求,发送了两次请求
  b)不能够获取请求的数据
           c)浏览器的地址会发生改变

           d)能够访问其他应用程序的资源。

五,Servlet的生命周期

    第一个阶段:加载和实例化对象 只调用一次
     默认情况下第一次访问该Servlet的时候,实例化对象
     第二次访问该Servlet不会创建新的对象,
     所以Servlet是单例模式。
   加载方式:
      a)延迟加载 默认
         当第一次访问的时候加载该对象
      b)预先加载
         当tomcat启动的时候加载该对象
   修改加载方式:web.xml指定Servlet的加载模式
        在Servlet标签中添加:
     <load-on-startup>num</load-on-startup>
     num>=0预先加载
       num越小越先加载
     num<0延迟加载
     num默认是-1
第二个阶段:初始化对象  只调用一次
    加载和实例化对象之后就调用init()
    初始化参数 init()

第三个阶段:处理请求:服务方法  调用多次
     调用service()
     每一个请求来了,启动线程调用该方法处理请求。
     Servlet对象只有一个,属于单例模式。
     Servlet线程不安全.
     如何控制:
        a)加锁synchronized (this) {}
  效率低
b)把一些受影响的变量尽量定义成局部变量。
  局部变量是多线程不共享的变量。
第四个阶段:销毁对象 只调用一次
     调用destory()
     当tomcat正常关闭或者

     当web应用重新部署的时候会销毁对象。

六,过滤器

    作用:在一个请求去访问某个资源的时候,filter可以在这个
               请求访问到这个资源之前,把请求拦下,然后做出一系
               列的处理或者判断(比如编码的转换,信息的过滤、权
               限的判断、是否已经登录的验证等等),最后filter再

               决定是否要让这个请求去访问那个资源

              日志,事务,字符乱码,访问权限的过滤

    创建:实现Filter接口

            a)init:这个过滤器类被服务器创建对象的时候会调用到这个方法。
    b)destroy:过滤器对象被销毁的时候会调用这个方法。

    c)doFilter:当过滤器拦截到请求的时候,会调用这个doFilter.

            d)  如果有多个过滤器按顺序执行

七,监听器

    作用:监听web中的一些事件的发生,如果某些事件一旦发生了,

那么这个监听器就会调用指定方法进行处理.监听request对象的创建和销毁

  创建:监听request相关的接口

ServletRequestListener接口

            监听session相关的接口

HttpSessionListener接口

            监听application相关的接口
ServletContextListener接口

八,Web应用的四大范围

     pageContext:指的是一个页面的范围,
 只在JSP中使用。
     request:指的是一个请求的范围
              可以包含多个页面
     内部跳转
     session:指的是一个会话的范围
             可以包含多个request
     ServletContext:指的是一个web应用的范围

                   可以包含多个session

jsp

1,jsp的九中内置对象

     page:当前的jsp页面,指针this
pageContext:当前的jsp页面的上下文
request:封装请求的信息
response:封装响应
session:会话
application:指web应用,
         就是SerlvetContext
out:输出流
config:配置信息 
exception:异常信息

   当isErrorPage=true时,才可以使用该对象

2,jsp 的生命周期

     1) 翻译阶段 jsp--->.java
当容器接受到客户端第一次对jsp的请求后,
先判断被请求的jsp是否存在,
若不存在返回404错误,若存在,
将该jsp先翻译成一个Servlet。
处理请求的方法:_jspService()
    2) 编译阶段  .java---->.class
将翻译后的Servlet的源文件编译成一个字节码文件,
然后由容器将其装载进虚拟机并实例化(单例)
    3) 执行阶段
调用翻译后的Servlet的对应的init()、
service方法、destroy()。
    补充:
1) 如果被请求的jsp源文件内容发生变化,
那么要重新将jsp翻译成Servlet,再编译、
装载和实例化,最后运行Servlet。
2) 如果第二次请求jsp时,
此时若被请求的jsp已经有对应的Servlet实例,

那么就直接运行该Servlet。

3,jsp和servlet的相同点和不同

        JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑

4,JSP共有以下6种基本动作

jsp:include:在页面被请求的时候引入一个文件。

jsp:useBean:寻找或者实例化一个JavaBean。

jsp:setProperty:设置JavaBean的属性。

jsp:getProperty:输出某个JavaBean的属性。

jsp:forward:把请求转到一个新的页面。

jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。

猜你喜欢

转载自blog.csdn.net/huyunqiang111/article/details/79798635