jsp--jsp基本概念

一、背景介绍  

       JSP(Java Server Pages),其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签。JSP是一种动态网页技术标准,也是JavaEE的标准。JSP和Servlet一样,是在服务器端执行的。JSP是在Servlet技术发展之后为了让开发者写html标签更方便而发展起来的技术,JSP实际上就是Servlet。

       人们通常把Servlet作为Web应用中的控制组件来使用,只负责响应请求产生数据,并把数据通过转发技术带给jsp,而把jsp技术作为数据显示模板来使用。这样使程序结构更清晰,可读性和可维护性更高。


二、知识剖析(JSP页面元素构成)

    1.JSP页面的三大指令

     (1)<%@ page ... %>    定义网页依赖属性,比如脚本语言、error页面、缓存需求等等;

       <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"  

     import="java.util.Date"  import="java.text.SimpleDateFormat"%>
       page指令一般在表头位置,用来设置本页面的语法,编码格式,导包等信息,page指令可以合并在一行,也可以分为多行,这个可以根据自己的需求编写。

     (2)<%@ include ... %>    包含其他文件(静态包含);

       有两个页面一个是index.jsp(左)页面,一个是include.jsp(右)页面,在同级目录,如下所示;

      初始页面:

         

        

      显示:

             

      在index.jsp中加入include指令:

      

      显示:

      

     (3)taglib指令:引入标签库的定义。

      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
       prefix:指定标签前缀,这个东西可以随意起名
       uri:指定第三方标签库的uri(唯一标识)

      2.表达式

      在JSP页面中执行的表达式 <%=表达式%>,注意表达式不以分号结束。例如,当前时间:<%= new java.util.Date() %>;

      在页面输出指定格式的当前时间:

<%=new SimpleDateFormat("yy年MM月dd日 HH:mm:ss").format(new Date())%>
 

      3.脚本片段

      在JSP页面中插入多行java代码 <% Java代码 %>,JSP引擎在翻译JSP页面时,会将JSP脚本片段中的Java代码原封不动的放到Servlet的_jspServlet方法中,所以,<% %>中的Java代码必须严格遵循java语法。

    脚本即 Scriptlet , 也就是 JSP 中的代码部分 , 是一段 Java 代码 , 几乎可以使用任何 Java 语法 , 它是在请求时期执行的 , 可以使用 JSP 页面所定义的变量、方法、表达式或 JavaBean . 脚本定义的变量和方法在当前整个页面内有效 , 但不会被其他线程共享 , 用户对该变量的作用不会影响其他用户 , 当变量所在页面关闭时 , 该变量会被销毁

  语法格式如下 :  

<%scriptlet%>

<%! String str ="为中华之崛起而读书";%>
<%
    if(true){
%>
        <%=str%>
<%
    }
%>


      4.注释(3种方式)

     (1) HTML注释:<!--html注释,且客户端可见-->;

     (2)JSP注释:<%--JSP注释,客户端不可见--%>;

     (3)JSP脚本注释:即java注释 //单行 , /*多行 */。

      5.声明:

      在JSP页面中,可以声明一个或者多个合法的变量和方法 , 声明后的变量和方法可以在本 JSP 页面的任何位置使用 , 并将在 JSP 页面初始化时被初始化。

 语法格式如下 :

  <!%declaration; [declaration;] ...%>

     在声明时需要注意 :

声明以 "<%!" 开头 , 以 "%>" 结尾 , "%!" 必须紧挨
变量和方法的命名规则应与 Java 的命名规则相同
可以直接使用在 "<@page %>" 中被包含进来的已经声明的变量和方法 , 不需要对其进行重新声明
一个声明仅在一个页面有效 , 如果想每个页面都用到一些声明 , 可以将它们写成一个单独的文件 , 用 "<%@ include%>" 指令 或 "<jsp:include>" 动作包含进来


三、html和jsp的区别:

      HTML(Hypertext Markup Language)文本标记语言,它是静态页面,和JavaScript一样解释性语言,为什么说是解释性语言呢?因为,只要你有一个浏览器那么它就可以正常显示出来,而不需要指定的编译工具,只需在TXT文档中写上HTML标记就OK。

      JSP(Java Server Page)是Java服务端的页面,所以它是动态的,它是需要经过JDK编译后把内容发给客户端去显示,我们都知道,Java文件编译后会产生一个class文件,最终执行的就是这个class文件,JSP也一样,它也要编译成class文件!JSP不止要编译,它还得要转译,首先把JSP转译成一个Servlet文件,然后在编译成class文件。当用户访问JSP时就执行了class文件

      1.HTML能直接打开,jsp只能发布到Tomact等服务器上才能打开;

      2.定义上HTML页面是静态页面可以直接运行,JSP页面是动态页它运行时需要转换成servlet;

      3.他们的表头不同,这个是JSP的头“ <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>”在表头中有编码格式和导入包等;

      4.在jsp中用<%%>就可以写Java代码了,而html没有


四、jsp页面如何设置没有缓存?

    (1)清空tomcat缓存。

       server->tomcat->clean tomcat work directory.

    (2)设置页面Nocache方式,即每次访问此页面,均需要从服务器重新读取,而不是使用缓存中存在的此页面。

      在jsp页面的<head></head>中间添加如下代码。

<meta http-equiv="pragma" content="no-cache"> 

<meta http-equiv="cache-control" content="no-cache"> 

<meta http-equiv="expires" content="0">   

五、jsp怎么去关掉session?

      session.removeAttribute("username"); //注销session中的username对象
      session.removeAttribute("id"); //注销session中的id对象
      session.invalidate(); //关闭session

六、jsp的内置对象有哪几个?

      JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception

     (1)request对象

      request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。

     (2)response对象

      response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。

      (3)session对象

       session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

      (4)application对象

       application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。

     (5)out 对象

      out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

     (6)pageContext 对象

      pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等 对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。

      (7)config 对象

      config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

      (8)page 对象

      page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。

      (9)exception 对象

       exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。
--------------------- 
作者:qq_41802128 
来源:CSDN 
原文:https://blog.csdn.net/qq_41802128/article/details/81839696 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值