JSP/Servlet

来源:互联网 发布:网络视频协议 编辑:程序博客网 时间:2024/06/08 01:10

  一、JSP基本原理

  jsp的本质是servlet,当用户向指定servlet发送请求时,Servlet利用输出流动态生成HTML页面,包括每一个静态的HTML标签和所有在HTML页面中出现的内容。

  JSP的3个编译指令7个动作指令,9个内置对象

  3个编译指令

   page:该指令是针对当前页面的指令。
   include:用于指定包含另一个页面。
   taglib:用于定义和访问自定义标签。

  7个动作指令

   Jsp:forward:执行页面转向
   Jsp:param:用于传递参数,必须与其他支持参数的标签一起使用
   Jsp:include:用于动态引入一个jsp页面
   Jsp:plugin:用于下载javaBean或者Applet到客户端执行
   Jsp:useBean:创建一个javaBean实例
   Jsp:setProperty:设置javaBean实例的属性值
   Jsp:getProperty:输出JavaBean实例的属性值

  9个内置对象

   application:javax.servlet.ServletContext实例。常用方法:getAttribute,setAttribute
   config:jsp配置信息
   execption:常用方法有 getMessage()和printStackTrace()
   Out :javax.servlet.jsp.JspWriter实例,代表JSP页面的输出流,用于输出内容形成HTML页面
   page:代表该页面本身,通常没有太大的用处。相当于servlet中的this
   pageContext:javax.servlet.jsp.PageContext的实例。代表该jsp页面上下文,使用该对象可以访问页面中的共享数据。常用方法:getServletContext()和getServletConfig()等
   request:javax.servlet.HttpServletRequest的实例,常用方法有setAttribute,getAttribute(String    attrName)、getParameter(String paramName)、getparameterValues(String paramName)和setCharacterEncoding(String env)
   session:  javax.servlet.http.httpSession的实例,该对象代表依次会话。常用方法有getAttribute和setAttribute(string attrName,Object attrValue)等。

   二、servlet和jsp的区别

   servlet中没有内置对象,原来JSP中的内置对象都必须由程序显式创建
对于静态的HTML标签,servlet都必须是用页面输出流逐行输出

   三、JSP/Servlet生命周期

     jsp的本质就是servlet,开发者编写jsp页面由web容器编译成相应的servlet,所以servlet的创建和销毁都不是由程序员控制的,而是由web容器控制。
   →创建servlet实例
   →web容器调用servlet的init方法,对servlet进行初始化。
   →servlet初始化后,将一直存在于容器中,用于响应客户端请求。用doGet处理Get请求,dopost 处理post 请求,或者使用统一的service方法处理响应用户请求。
   →web容器决定销毁servlet时,先调用servlet的destory方法,通常在关闭web应用之时销毁servlet

                              

   四、使用servlet作为控制器

    servlet作为表现层的三个劣势:

    1、开发效率低,所有的HTML标签都需要使用页面输出流完成
    2、不利于团队协作开发,美工人员无法参与servlet的开发
    3、程序可维护性差,即使修改一个按钮的标题,都必须要重新编辑java代码,并重新编译。

   在MVC模式中,jsp只作为表现层。servlet作为控制器层,

    1、负责收集用户请求参数
    2、将应用的处理结果、状态数据呈现给用户
    servlet仅仅充当Controller角色,作用类似于调度员:所有用户请求都发给servlet,servlet调用Model来处理用户请求,并调用JSP来呈现结果。
    Model通常由JavaBean来充当,所有的业务逻辑、数据访问都在Model中实现
         JavaBean: JavaBean可分为两种:一种是有用户界面(UI,User Interface)  的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。

   五、session对象

    session对象是HttpSession的实例,HTTPSession有下面两个常用方法:
    1、setAttribute(String attName,Object attValue):设置session范围内attName属性值attValue
    2、getAttribute(string attName):返回session范围内attName属性值。
   session里的属性值必须是可序列化的,否则将会引发不可序列化的异常。

原创粉丝点击