zoukankan      html  css  js  c++  java
  • JSP技术

    JSP: Java Sever Pages的简写。是一种动态网页开发技术。实际上是一个Servlet,是特殊的Servlet。

               Html文件中,加入了Java代码,形成了JSP文件,后缀是.jsp;

    JSP技术的特点:

      1. 跨平台

      2. 业务代码分离

      3. 组件重用

      4. 继承Java Servlet功能(Servlet比JSP出现的早,以前是在Servlet类中编写Java和Html代码,不利于阅读。现在的JSP页面最终要编译成Servlet才能处理用户请求,所以JSP拥有Servlet的所有功能和特性)

      5. 预编译(在用户第一次请求时,服务器对JSP页面代码进行编译,并且仅执行一次编译。编译好的代码被保存,在下一次访问时,直接执行编译好的代码。)

    JSP技术的原理:

      JSP的工作方式是请求/应答模式。....

    与Servlet的区别:
    (1).Jsp不用预先在web.xml中配置,注册
    (2).它的处理需要中介组件Jsp Servlet 引擎
    web.xml  文件,是web主控文件,除了Jsp,都要在里面注册。
    因为Jsp是一个静态文件。

     在web 2.5的情况下,新建servlet会自动在web.xml中增加相应的注册信息。

    <Servlet-class>........</Servler-class>   是用到了反射
    <Servlet-mapping>节点就是Servlet的映射,而<url-pattern>节点则给出了Web访问此Servlet的方法。
     
    JSP调用过程:

    发送请求,判断是否存在,如果是第一次请求,则
    jsp的工作原理:

     

    当在浏览器上输入一个地址后,
    jsp Servlet engine :jsp引擎,从磁盘上读出来,用out.write()的方式,把jsp文件解释成一个.java文件,编译成.class文件,加载到虚拟机,调用它的init方法,再调用service方法,最后是destory()方法
    jsp_service方法

    JSP注释:

    <!--Html的注释内容-->  可以在该注释内容中使用任何有效的JSP表达式;在浏览器中通过查看源代码(F12),可以看到该注释。

    <%--Jsp的注释内容--%>  隐藏注释(jsp专有注释),在浏览器查看源码,看不到。
     
     
    其他的:
    <%!  变量和方法声明 %>    
      jsp声明   <%与!之间不能有空格,但是!与其后面的表达式之间可以有空格。
     
    <%=Java表达式 %>        
     jsp表达式,<%与=之间不能有空格,但是=与其后面的表达式之间可以有空格。

    <%   代码段   %>
     
     
    jsp指令有四类:
    <%@ page arrribute=value %>       jsp指令, 指令标识

    jsp指令的语法格式:
    <%@ 指令名  属性名="属性值" %>

    page指令:
    用于定义JSP文件中的全局属性,主要用来设定整个JSP文件的属性和其他功能。
    <%@page 属性1="值1"  属性2="值2"  ...%>
    <%@ page import=""  %>
     
    注意:
    page是JSP页面最常用的指令,用于定义整个JSP页面的相关属性,这些属性在JSP被服务器解析成Servlet时会转化成相应的Java代码。
    如:language属性,extends属性,import属性,pageEncoding属性(编码格式),contentType属性(编码方式),session属性,buffer属性,autoFlush属性,isErrorPage属性,errorPage属性。
     
    只有import属性,可以出现多次,即导入多个类,也可以合并,中间用逗号(,)分隔。

    include指令:
    通过该指令可以在一个JSP页面中包含另一个JSP页面。
    格式:   <%@include file="被包含文件URL" %>           
                也就是在双引号中,写路径,可以是相对路径,也可以是绝对路径。但是不可以是通过<%=%>表达式所代表的文件。
    <%@ include file="  " %>   将Jsp页面拼在一起,显示在一个页面上。
    好处: 使用include指令包含文件可以大大提高代码的重用性,而且也便于以后的维护和升级。

    taglib指令:
    在JSP指令中taglib指令用来申明此JSP文件使用的自定义标签,同时使用标签库,并制定标签的前缀。
    格式:<&@ taglib uri="tagLibraryURL" prefix="tagPrefix" %>
    prefix:用于指定标签的前缀,该前缀不能命名为jsp,jspx,java,javax,sun,servlet和sunw。
    uri:用于指定标签库文件存放的位置。
     
     
    JSP内置对象的概述:
         JSP为了简化开发,提供了一些内置对象,用来实现很多JSP应用。在使用JSP内置对象时,不需要先定义这些对象,直接使用即可。
         在jsp中一共预先定义了9个这样的内置对象,分别是:request、response、session、application、out、pageContext、config、page和 exception。
       
    1、request对象:
        (1).访问请求参数
         例如:在页面中定义一个超链接,<a href="delete.jsp?id=1">删除</a>
          本例中,设置了一个请求参数,如果要同时指定多个参数,各参数间使用符号“&”分隔即可。
          还有就是例如:使用request对象获取请求参数:
          <% String name=request.getParameter("name");%>
          name: <%=name%>
       (2).在作用域中管理属性
          在请求转发时,需要把一些数据传递到转发后的页面进行处理。这时,就需要使用request对象的setAttribute() 方法将数据保存到request范围内的变量中。
         语法格式:
         request.setAttribute(String name,Object object);
       参数说明:
        name:表示变量名,为String类型,在转发后的页面取数据时,就是通过这个变量名来获取数据的。
        object:用于指定需要在request范围内传递的参数,为Object类型。
     
      在将数据保存到request范围内的变量中后,可以通过request对象的getAttribute()方法获取该变量的值,具体的语法格式如下:
         request.getAttribute(String name);
     
    2.cookie对象:
       注意:在使用cookie时,应保证客户机允许使用cookie。
     
    3.response对象:
         response对象用于响应客户请求,向客户端输出信息,它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面内有效。
     
    4.session对象:
        session在网络中被称为会话,由于HTTP协议是一种无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。   为了弥补这一点,HTTP协议提供了session。 通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这个时间取决于服务器。
       (1).创建及获取客户的会话:
           通过session对象可以存储或读取客户相关的信息。例如:用户名或购物信息等,这可以通过session对象的setAttribute()方法和getAttribute()方法实现。下面进行介绍:
        1.setAttribute()方法
            该方法用于将信息保存在session范围内,其语法格式为:
          session.setAttribute(String name,Object obj);
           参数说明:
        name:用于指定作用域在session范围内的变量名
        obj:保存在session范围内的对象。
         例如:将用户名"绿草"保存到session范围内的username变量中,可以使用下面的代码:      session.setAttribute("username","绿草");
        2.getAttribute()方法
           该方法用于获取保存在session范围内的信息,其语法格式如下:
           getAttribute(String name);
         参数说明:
         name:指定保存在session范围内的关键字。
         例如: 读取保存到session范围内的username变量的值,示例代码如下:
           session.getAttribute("username");
     
        说明:getAttribute()方法的返回值是Object类型,如果将获取到的信息赋值给String类型的变量,则需要进行强制类型转换或是调用其toString()方法,例如,下面的两行代码都是正确的:
        String user=(String)session.getAttribute("username");   //强制类型转换
        String user1=session.getAttribute("username").toString();    //调用toString()的方法。
     
      (2).从会话中移动指定的绑定的对象:
         对于存储在session会话中的对象,如果想将其从session会话中移除,可以使用session对象的removeAttribute()方法,该方法的语法格式如下:
        removeAttribute(String name);
        参数说明:
          name:用于指定作用域在session范围内的变量名。一定要保证该变量在session范围内有效,否则将抛出异常。
       例如:将保存在session会话中的username对象移除的代码如下:
        <%   session.removeAttribute("username")    %>
        
        (3).销毁session
          当客户端长时间不向服务器发送请求后, session对象会自动消失。但对于某些实时统计在线人数的网站(例如聊天室),每次都等session过期后,才能统计出准确的人数。这是远远不够的,所以还需要手动销毁session。通过session对象的invalidate()方法可以销毁session,其语法格式如下:
        session.invalidate();
      session 对象被销毁后,将不可以再使用该session对象了,如果在session被销毁后,再调用session对象的任何方法,都将报出Session already invalidated异常。
      
         (4).会话超时的管理
           例如:通过设置seMaxInactiveInterval()方法设置session的有效期为10000秒,超出这个范围session将失效。
         session.setMaxInactiveInterval(10000);
     
     
     
     
     
     


  • 相关阅读:
    VirtualBox 命令行操作
    [大数据入门]实战练习 安装Cloudera-Hadoop集群
    DB2 Package Issues and Solution
    关于《阿里巴巴Java开发规约》插件的安装与使用
    Spring学习笔记:Spring概述,第一个IoC依赖注入案例
    SpringMVC:系统认识一下maven
    利用JS提交表单的几种方法和验证(必看篇)
    a标签调用js的几种方法
    使用BigDecimal进行精确运算
    Maven中settings.xml的配置项说明
  • 原文地址:https://www.cnblogs.com/FocusIN/p/7994879.html
Copyright © 2011-2022 走看看