Jsp入门--语法格式(<% %>)、指令(page、include、taglib)

JSP脚本

1. <% java代码 %>

     方法内部的代码都可以写在个位置

<%  String s1 = "hello jsp";    %>

2. <%=java代码  %>

    把java代码运行的结果在页面显示,  要求java代码是一个表达式

<%=s1 %>

3. <%! java代码   %>   使用很少

       对属性的声明,方法的声明

4、jsp的注释 <%-- ... --%>

JSP是特殊的Servlet

   JSP是一种特殊的Servlet,当JSP页面首次被访问时,容器(Tomcat)会先把JSP编译成Servlet,然后再去执行Servlet。所以JSP其实就是一个Servlet!

JSP真身存放目录

  JSP生成的Servlet存放在${CATALANA}/work目录下,我经常开玩笑的说,它是JSP的“真身”。我们打开看看其中的内容,了解一下JSP的“真身”。

  你会发现,在JSP中的静态信息(例如<html>等)在“真身”中都是使用out.write()完成打印!这些静态信息都是作为字符串输出给了客户端。

  JSP的整篇内容都会放到名为_jspService的方法中!

JSP指令

语法: 语法格式:  <%@ 指令名  属性名1=值1   属性名2 = 值2....  %>
  1. page指令:  对jsp页面一些设置
  2. include指令: 包含其他jsp页面
  3. taglib指令: 引入标签库  (往后)

page指令

page指令是最为常用的指定,也是属性最多的属性!

page指令没有必须属性,都是可选属性。例如<%@page %>,没有给出任何属性也是可以的!

在JSP页面中,任何指令都可以重复出现!

默认创建的jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

属性:

1、 language:  jsp支持的编程语言: 值只能是java

2、 pageEncoding: 设置jsp的编码:指定当前JSP页面的编码!这个编码是给服务器看的

3、 Content-type:   contentType属性与response.setContentType()方法的作用相同!

  它会完成两项工作,一是设置响应字符流的编码,二是设置content-type响应头。

注意: 

  1. 如果只设置pageEncoding没有设置contentType, contentType默认使用的pageEncoding
  2. 如果只设置contentType没有设置pageEncoding, pageEncoding默认使用的contentType

4、  import, 导包

  a) Import=”包.类,包.类2,....”

  b) 使用多个page指令, 每一个page指令包含一个import

5、  errorPage与isErroePage

  errorPage=”错误页面的url”, 当jsp出现错误, Tomcat根据的errorPage属性,找到对应的设置的错误页面给客户端

<%@ page  errorPage = "./error.jsp"%>

  错误页面: 添加一个属性: isErrorPage:  boolean,  默认值false,  不是错误页面   True; 是错误页面

<%@ page  isErrorPage = "true" %>

可在xml中统一设置xml,错误页面

 只需要在页面头部添加isErrorPage:就可在页面中出现错误后返回相应页面

6、  autoFlush  是否自动刷新, 默认true, 自动刷新, buffer,设置缓冲区大小, 默认8KB

7、  isELIgnored  是否忽略EL表达式(EL表达式不起作用) 默认false,不忽略   True.忽略,

其他属性:

  •  info:JSP说明性信息;
  •  isThreadSafe:默认为false,为true时,JSP生成的Servlet会去实现一个过时的标记接口SingleThreadModel,这时JSP就只能处理单线程的访问;
  •  session:默认为true,表示当前JSP页面可以使用session对象,如果为false表示当前JSP页面不能使用session对象;
  •  extends:指定当前JSP页面生成的Servlet的父类;

include指令

  include指令表示静态包含!即目的是把多个JSP合并成一个JSP文件!

语法:<%@include file =  "包含页面的路径" %>

底层只是将被包含的页面复制过去

注意:  被包含的页面, 只需要写内部,不需要写HTML头部

Taglib 指令

  导入第三方的标签库

语法:<%@ taglib  prefix="前缀"  uri="标签的url"  %>

Jsp动作标签

语法:   jsp: 标签名前缀, 区分与HTML的标签
        <jsp:标签名 属性名=值  >       
  • <jsp:include> 
  • <jsp:forward> 
  • <jsp:param>

1、<jsp:include>标签的作用是用来包含其它JSP页面的

2、<jsp:forward  page=”转发的资源路径”>  请求转发,

   对request.getRequestDispatcher("/top.jsp").forward(request,response);的简写

3、在<jsp:include>和<jsp:forward>标签中使用<jsp:param>子标签

<jsp:include page="./demo4.jsp">
        <jsp:param value="zhangsan" name="name1"/>
        <jsp:param value="21" name="age"/>
</jsp:include>
dome4.jsp页面中

//获取参数
  out.print(request.getParameter("name1"));
  out.print(request.getParameter("age"));

<%@ include%>  与  <jsp:include> 的区别

  <%@ include  file=”” %>  静态包含, 

    如果ajsp使用静态包含b.jsp, 生成java代码时, 只有a.jsp对应的java代码, 没有.b.jsp对应的java代码,

  只是在a.jsp中把b.jsp中的代码赋值粘贴到a.jsp

  <jsp:include  page=”动态包含页面的路径” >: 

    动态包含, a.jsp 动态包含b.jsp  a.jsp生成一个java类, b.jsp生成java类, 

  a.jsp中java类只是调用了b.jsp中的方法  _jspService()

 

posted @ 2020-05-11 20:31  64Byte  阅读(1227)  评论(0编辑  收藏  举报