JSP页面+EL表达式+JSTL标签库
2021-03-13 02:28
标签:core 异常 图片 缓冲区 file print html注释 组合 content 1.JSP java server pages.代替servlet程序 回传 html页面的数据给客户端进行显示。 创建:new java enterprise,在web下new jsp 访问:第一次访问jsp页面时,tomcat服务器会将jsp页面翻译成java源文件,并对其编译形成.class字节码文件。 翻译出来的文件位置:C:\Users\VICTORIA\.IntelliJIdea2019.3\system\tomcat\Tomcat_8_5_54_tomcat8\work\Catalina\localhost\tomcat8_war_exploded\org\apache\jsp 本质:jsp程序通过继承HttpJspBase类间接继承HttpServlet类,实质就是将jsp程序翻译成servlet程序后,在servlet程序中,通过输出流将html数据回传至客户端 语法: jsp头部page指令:修改jsp页面的属性和行为 属性含义: language Jsp文件经翻译后形成什么语言的文件,暂时只支持java contentType jsp返回的数据类型,即源码中response.setContentType()的值 pageEncoding 当前jsp文件本身使用的字符集 import 与java源文件一样,用于导包导类 对于out输出流: autoFlush设置out输出流缓冲区,满后是否自动刷新,默认值ture buffer设置out输出流缓冲区大小,默认值8kb errorPage jsp页面出错后,跳转的页面位置 isErrorPage 设置当前页面是否为jsp出错页面,默认值false;当设置为ture时可以对其进行异常错误信息的获取 session 设置当前jsp页面是否会创建HttpSession对象,默认为ture extends 设置由jsp文件翻译出来的java类默认继承谁 2.错误类型 JSP Buffer overflow:JSP缓冲区满了之后不能自动刷新。 3.jsp常用脚本:声明脚本、表达式脚本、代码脚本 声明脚本(不常使用嘞) 表达式脚本:在jsp页面上输出数据 ,可输出整型、浮点型、字符串和对象。 表达式脚本都会被翻译到相应java文件的_jspService()方法中,并可以使用该方法中定义的对象。使用out.print()将内容输出到页面上。结尾不加; 在浏览器中输出。 代码脚本:在其中编译我们需要的功能。 代码脚本都会被翻译到相应java文件的_jspService()方法中,并可以使用该方法中方法。 可由多个代码脚本组合完成一个功能,且可与表达式脚本组合使用 在控制台输出。例如if,for,重写_jspService中的方法 4.jsp三种注释:html注释、java注释、jsp注释 html注释:翻译到java文件中的_jspService()中,以out.writer()输出到客户端 java注释:// /**/ 在声明脚本和代码脚本中使用 jsp注释:可注释掉jsp文件中的代码 5.jsp九大内置对象: response响应对象, request请求对象, pageContext: jsp上下文对象, session会话对象, application:ServletContext对象, config:ServletConfig对象, out: jsp输出对象, page:指向当前jsp页面的对象, exception:在jsp声明中添加isErrorPage=‘true‘后得到的异常对象。 6.jsp四大域对象:像map一样存取数据,但各自对数据的存取范围不同。 PageContextImpl类pageContext:当前jsp页面范围内有效。使用request.getRequestDispatcher("/scope2.jsp").forward(request,response)验证 HttpServletRequest类request:一次请求内有效 HttpSession类session:一个会话范围内有效(打开浏览器访问服务器,会话开始;直到关闭浏览器,会话结束) ServletContext类application:整个web工程范围内。只要web工程不停止,该对象的数据一直存在 7.jsp中的out.write(" "),response.getWriter().write(" "):表示响应,用于给客户端回传内容的。 区别:由于jsp页面在执行完全部代码后,调用out.flush()将out缓冲区中的数据追加到response缓冲区末尾;最后response缓冲区刷新将全部数据写回到客户端。 因jsp翻译成java底层使用out输出,故使用out输出,避免打乱 out.write()和out.print()区别 out.write()输出字符串没有问题(输出其他整型等有问题的原因,底层将整型先转换成ASCIII码后输出) out.print()输出任何类型都没有问题(原因,底层将数据转换成字符串后使用out.write()输出) jsp页面使用out.print()进行输出 8.jsp标签: 静态包含: 可用在对网站页面中重复引用的模块 进行维护 不翻译被包含的jsp页面,仅将被包含的代码拷贝到包含的位置,进行输出。 动态包含: 翻译被包含的jsp页面为 java文件, 底层执行 org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "/index.jsp", out, false); 调用被包含的页面进行输出 中间定义的参数可在 被包含的文件中获取requesr.getparameter("name"); 请求转发: 9.javaweb三大组件:Servlet程序,Filter过滤器,Listener监听器 Listener监听器:JavaEE规范,一种接口,监听事物变化,通过回调函数反馈给程序做相应处理。 10.ServletContextListener监听器(最常使用):监听ServletContext对象的创建和销毁。 监听到创建和销毁后,分别调用contextInitialized()和contextDestoryed(),在ServletContext对象创建后马上调用做初始化,在ServletContext对象销毁后调用。 使用过程:编写一个类去实现ServletContextListener监听器 监听 ServletContext对象 实现两个回调方法 在web.xml中配置监听器 11.EL表达式${键值}:expression language 代替jsp页面的 表达式脚本在jsp页面进行域对象 数据的输出。编码更加简洁 当值为null时,输出空串。 四个域中都具有键值 符合要求的话,按pageContext,request,session,application顺序输出 可输出一个类的普通属性、数组属性( ${p.persons}输出数组地址;${p.persons[]}输出数组中指定位置的值 )。list集合属性${p.persons[]}和map集合属性${p.persons.key1}。 12.EL表达式运算: 逻辑(== != > =
关系(&& || !), 数值(+ - * / %), empty运算(判断一个数据是否为空,值为null 空串 Object数组长度为0 list元素个数为0 map元素个数为0 情况下输出true)(${empty key值}), 三元运算, .运算(可输出bean对象中属性的值), []运算(可输出有序集合中元素的值 同时 可输出map集合中key中含特殊字符key的值${map[‘a.a.a‘]} ${map["b+b+b"]}) 13.EL中11个隐含对象(EL自身定义,可随意使用):scope表示范围 对于pageContext对象的使用:EL表达式 . 表示寻找相应的get() 输出使用协议: ${pageContext.request.scheme} 输出服务器IP: ${pageContext.request.servlername} 输出服务器端口: ${pageContext.request.servlerport} 企业中: 先封装再使用 ${req.servlerport} 14.JSTL标签库 JSP Standard Tag Library 代替JSP代码脚本 JSTL五类标签库: 核心标签库: taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> taglib表示标签库
变量
类型
作用
pageContext
PageContextImp类
获取jsp九大内置对象;用于输出协议,服务器IP,服务器端口,当前工程路径contextPath,请求方法method,客户端IP remoteHost,会话ID ${pageContext.Session.ID}
pageScope
Map(String,Object)
获取pageContext域中的 对象
requestScope
Map(String,Object)
获取Request域中的 对象
sessionScope
Map(String,Object)
获取Session域中的 对象
applicationscope
Map(String,Object)
获取ServletContent域中的 对象
param
Map(String,String)
获取请求参数的值 ${param.key值}
paramValues
Map(String,String[])
获取多个请求参数的值
header
Map(String,String)
获取请求头的值 ${header[‘user-Agent‘]} ${header.user-Agent}
headerValues
Map(String,String[])
获取多个请求头的值 ${headerValues.[‘user-Agent‘][0]} ${headerValues.[‘user-Agent‘]}得到数组对象
cookie
Map(String,Cookie)
获取当前请求的cookie信息 ${cookie.JSESSIONID}输出cookie对象 ${cookie.JSESSIONID.name}cookie对象也是 键-值对的组合
initParam
Map(String,String)
获取web.xml中配置的
格式化:
函数
数据库:现使用dao层实现与数据库的交互
xml:早期客户端与数据库之间交互,现使用JSON
使用步骤:
导入jstl标签库的jar包(taglibs-standard-impl-1.2.1.jar和taglibs-standard-spec-1.2.1.jar)
使用taglib指令引入标签库
15.标签
保存数据:
if判断:
switch选择:
遍历整型,对象数组,map对象,list对象:
16.varStatus当前变量的状态
public status implement interface LoopTagStatus{
public Object getCurrent();//当前遍历的数据
public int getIndex();//当前遍历的索引
public int getCount();//当前遍历的个数
public boolean isFirst();//当前遍历是否为开头或结尾
public boolean isLast();
public Integer getBegin();//获取begin end step的属性值
public Integer getEnd();
public Integer getStep();
}
JSP页面+EL表达式+JSTL标签库
标签:core 异常 图片 缓冲区 file print html注释 组合 content
原文地址:https://www.cnblogs.com/chritina-victoria/p/12787808.html