JSP的脚本,注释,运行原理,指令,隐式对象,标签

    技术2022-07-11  93

    jsp的脚本和注释 1.jsp脚本: 1.<%java代码%>----------内部的java代码翻译到service方法内部 2.<%=java变量或表达式%>---------会被翻译成service方法内部out.print() 3.<%!java代码%>-------会被翻译到成service的成员内容 2.jsp注释: 1.Html注释<!----注释内容------>--------可见范围 jsp源码 翻译后的servlet 显示HTML源码 2.java注释://单行 /* 多行*/ 可见范围:jsp源码 翻译后的servlet 3.jsp注释:<%------注释内容-------%>可见范围:jsp源码 3.jsp的运行原理------jsp本质就是servlet(重点) jsp在第一次被访问时会web容器翻译成servlet,执行 过程: 第一次访问---->helloServlet.jsp---->helloServlet_jsp.java ------>编译运行 4.jsp指令(3个) jsp的指令是指导jsp翻译和运行的命令 jsp包括三大指令: 1.page指令----属性最多的指令(实际开发中page指令默认就可以) 根据不同的属性,指导整个页面特性 格式:<% @page 属性名1 = “属性值1” 属性2="属性值2".....%> 常用属性如下: language:jsp脚本中可以嵌入的语言类型(但是现在只可以用java所以这个标签没 用) pageEncoding:当前jsp文件的编码------内部包含contenType contenType response.setContentType("text/html; charset=UTF-8");(可以 设置request缓冲区的编码和解析的编码) session:(默认是true)jsp在翻译时是否自动创建session import:在jsp中写java代码时的导入jar包 errorPage:当前页面出错后跳转到指定页面。处理的错误是500 isErrorPage:当前页面是处理是一个处理错误的页面 2.include指令 页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp页面中 格式:<% @include file="被包含的文件地址" %> 3.taglib指令 在jsp页面中引入标签库(jstl标签库,Struts2标签库) 格式:<%@ taglib uri = "标签库地址" pretix="前缀"%> 5.jsp内置/隐式对象 (重要) jsp被翻译成servlet之后,servlet方法中有9个对象定义并初始化完毕, 我们在jsp脚本中可以直接使用这9个对象 out 用于页面输出 request 得到用户请求 response 服务器向客户端的回应信息 config 服务器配置,可以取得jdbc初始化参数 session 用来存储用户信息 application(Servletcontext) 所有用户的共享信息 page 指当前页面转换后的Servlet类的实例 pageContext jsp的页面容器 exception 表示jsp页面发生异常,在错误页面中才起作用 1.out对象 out的类型:JSPWriter out作用:就是想客户端输出内容 out缓冲区:默认8kb可以设置成8kb代表关闭缓冲区直接写到response缓冲区 设置在page中 buffer=0kb”; 例子: <body> aaaaaaaaaa <% out.write("bbbbbbbbb"); response.getWriter().write("ccccccccccccc"); %> <%="dddddddddddddddd" %> <!-- 先输出c然后在a b d输出 --> <!-- 因为jsp在转换文servlet文件时a b d都是out.write()输出 --> <!-- a b d所以在out缓冲区--> <!-- 而tomcat引擎在获取时只能获reponse缓冲区的内容 --> <!-- 这时就会先输出reponse缓冲区的内容 再让out缓冲区内容--> <!-- 写到reponse缓冲区内输出--> <!-- page指令可以设置out缓冲区buffer=8kb”默认的--> <!-- 当设置为0kb时out缓冲区就没有,out.write()就会直接写到 reponse缓冲区 --> </body> 2.pageContext对象 jsp页面的上下文对象 page对象与pageContext对象不是一回事 1.pageContext对象是一个域对象 作用范围:当前页面 setAttribute(String name,Object obj) getAttribute(String name) removeAttrbute(String name) pageContext可以象指定的其他域中存储数据 setAttribute(String name,Object obj,int scope) getAttribute(String name,int scope) removeAttrbute(String name,int scope) 例子://使用pageContext向request,session,application域中存储数据 pageContext.setAttribute("name", "lisi",PageContext.REQUEST_SCOPE); pageContext.setAttribute("name", "wangwu",PageContext.SESSION_SCOPE); pageContext.setAttribute("name", "tianqi",PageContext.APPLICATION_SCOPE); findaAtttribute(String name)会从小到大搜索域范围中的name pageContext域<request域<session域<application域 2.可以获得其他8大隐式对象 例如:pageContext.getRequext() pageContext.getSession() 6.jsp标签(动态) 1.页面包含(动态包含) 格式:<jsp:include page="被包含的页面"/> 2.请求转发:<jsp:forward page="要转发的资源"/> 静态包含<%@ include file=""%> 静态包含是在被翻译成servlet的java文件时 先将被包含者的HTML内容写到包含者中 在编译运行 动态包含:<jsp:include page="被包含的页面"/> 动态包含是在被翻译成servlet的java文件时 将两者都编译成java文件 在运行的阶段再将被包含着的HTML插到包含者中
    Processed: 0.013, SQL: 10