jsp技术

2018-05-11  22:21:16

jsp脚本形式

  1)<%  %>

  2)<%=  %>

  3<%!  %>

  当jsp文件被翻译后,可以在Tomcat/work下找到翻译后的xxx_jsp.java文件,打开发现

  导入Tomcat源代码文件查找HttpJspBase发现

  HttpJspBase继承了HttpServlet类,也就是说jsp的本质是servlet。

  再返回来看xxx_jsp.java文件,会发现

  <%=  %>实质是out.print()

  <%  %>内的语句书写在servlt方法内部

  <%!  %>内容书写在成员变量的位置,因此可以在其中创建方法

 对比三种注释方式:

  html:  <!--注释内容-->  可见范围:jsp源码,翻译后的Servlet,浏览器显示的源码

  java:  //  /**/        可见范围:jsp源码,翻译后的Servlet

  jsp:  <%--注释内容--%>可见范围:jsp源码

  可见jsp的注释形式最安全

jsp运行原理

  jsp在第一次被访问时会被Web容器翻译成servlet,再执行

  过程:

    第一次访问---->xxx.jsp---->xxx_jsp.java---->编译运行

jsp指令

  1)page指令

    language 只能是java 不支持其他语言

    contentType:文本类型  实质是response.setContentType("text/html; charset=UTF-8")

    pageEncoding:当前jsp文件的编码

      当没有contentType时找pageEncoding,因此可以不写contentType

    session:是否在jsp翻译时自动创建session

    import:导包

    errorPage:错误(500)时往某页面跳转

    isErrorPage:当前页面是否为处理错误的页面

  2)include指令

    页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp页面中

    格式:<%@ include file="被包含的文件地址"%>

  3)taglib指令

    在jsp页面中引入标签库(jstl标签库、struts2标签库)

    格式:<%@ taglib uri="标签库地址" prefix="前缀"%>

jsp内置/隐式对象

  out      页面输出  out缓冲区默认大小8kb,可设置为0kb,将其关闭,内容将直接写在response缓冲区

  request    得到用户请求信息

  response      服务器向客户端的回应信息

  config      服务器配置,可以取得初始化参数

  session      用来保存用户的信息

  application    所有用户的共享信息

  page       指当前页面转换后的Servlet类的实例

  pageContext  JSP的页面容器  域对象,作用范围当前jsp页面,也可以向指定的其他域存取对象

    pageContext.findAttributr("name"),从小到大搜索四个域(request,session,pageContext,appliaction)中的name,找到一个后停止

    pageContext.get...方法可以得到其他八个隐式对象

  exception    表示JSP页面所发生的异常,在错误页中才起作用

jsp表现

  1)页面包含(动态包含):<jsp:include page="被包含的页面"/>

     举例A中包含B来理解静态包含和动态包含

      静态包含:将AB页面合在一起进行翻译

      动态包含:先翻译A后编译运行,到<jsp:include page="被包含的页面"/>语句,再翻译B,然后对B编译运行

  2)请求转发:<jsp:forward page="要转发的资源" />

猜你喜欢

转载自www.cnblogs.com/xiongdaren/p/9027075.html