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;] ...%>

     在声明时需要注意 :

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

三、常见问题

      html和jsp的区别(见扩展思考)

四、编码实战(见知识剖析)

五、扩展思考

      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没有

 六、参考文献

      本文主要摘自https://www.cnblogs.com/rocomp/p/4822419.htmlhttps://www.cnblogs.com/yuanmiemie/p/6196906.html

七、更多讨论

     1.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">   

    2.jsp怎么去关掉session?

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

    3.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 对象。

八、视频教程

https://v.qq.com/x/page/f0761gtmhhp.html

快点加入我们吧:http://www.jnshu.com/login/1/23284132

猜你喜欢

转载自blog.csdn.net/qq_41802128/article/details/81839696