初识 JSP---(注释/小脚本/声明/指令/动作/内置对象)
注释
java : // /* */ /** */
html : <!-- -->
jsp <%-- --%>
jsp注释和html注释的区别
jsp注释对jsp引擎有作用,当jsp引擎看到这个注释后,生产servlet文件是会忽略他
html注释对jsp引擎没有作用,jsp引擎把他当成普通标签输出到浏览器,所以在浏览器的
查看源文件时可以看到这个注释,但是浏览器看到这个注释之后,不会把它显示到页面上
小脚本
写在<% %>中的Java代码成为Java小脚本,这些代码,通过jsp引擎转换成servlet后,这些代码
会放在service方法当中
脚本片段
就是在Java脚本中间包括html标签
<%
if(true){
%>
<a href="http://www.baidu.com">百度</a>
<%
}else{
%>
<a href="http://www.taobao.com">淘宝</a>
<%
}
%>
声明
<%!
%>
在jsp文件转换为Java后,写在声明中的语句会放在service方法外面,所以
在声明中不能写执行语句,只能写声明语句或者方法,用的很少
表达式
写在<%= %>这个标签中的代码成为表达式,里面可以放表达式,这些表达是会通过
out.print()方法写入到客户端
注意 百分号和等于号(%=)中间不要有空格
指令 : 三大指令
page
标签:<%@page %>
常用的属性
contentType="text/html; charset=utf-8"
这个属性是用来修改页面编码方式
import="java.util.Date,java.util.Random"
这个属性是用来导入在这个jsp中用到的Java类
isELIgnored="false"
是否忽略EL表达式,默认为 false ,即不忽略
errorPage
指定当我们这个jsp页面发生错误的时候要跳转的页面,被指定为errorPage的jsp
要设置 isErrorPage属性,设置为true
isErrorPage
指定当前jsp页面是否错误页面,默认是false
输出:只有设置 isErrorPage = “true” 时,才可以响应 exception 内置对象,将异常信息输出到页面
(不设置isErrorPage 属性页面也可以跳转,但无法响应对象)
include
<%@include %>
将其他页面导入本页,只产生一个servlet类
file="include.jsp"
taglib
引入JSTL标签
prefix
prefix="c"
自定义标签前缀
uri
JSTL标签的统一资源标识符(jstl标签的url地址)
如:uri="http://java.sun.com/jsp/jstl/core"
tagdir
将自定义的标签库或者是第三方的标签(如JSTL)放到项目的路径下,通过tagdir进行指定(引入自己的标签库)
动作
include
<jsp:include>
导入其他jsp页面
page
page="include.jsp" : 导入其include.jsp页面
forward
相当于servlet中的request.getRequestDispatcher("include.jsp").forward(request,response);
会转发到include.jsp页面,页面展示的内容就是转发后页面的内容
userBean
该标签会先在设置的域中查找有没有该类的对象,如果有就从域中获取,如果没有就
根据class中的类的全名创建一个对象,将该对象放入域中,相当于
com.oaec.pojo.User user = new com.oaec.pojo.User();
request.setAttribute("u",user);
域包括下面四个值
page :当前页面有效
request :一次请求有效
session :一次回话(根据浏览器)
application 整个web项目共享
在index.jsp中设置后,转发到include.jsp中仍然可以获取(在request域中)
<jsp:useBean id="u" class="com.oaec.pojo.User" scope="request"></jsp:useBean>
<jsp:setProperty property="name" name="u" value="zhangsan"/>
<jsp:setProperty property="age" name="u" value="50"/>
<jsp:forward page="include.jsp"></jsp:forward>
在include.jsp页面中获取
<jsp:useBean id="u" class="com.oaec.pojo.User" scope="request"></jsp:useBean>
<jsp:getProperty property="name" name="user"/>
九大内置对象
在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创建就会特别的繁琐.SUN公司因此在设计jsp时,在jsp页面加载完毕之后自动帮开发者创建好了这些对象,开发者只需要使用相应的对象调用相应的方法即可.这些系统创建好的对象就叫做内置对象.
内置对象名 类型
request HttpServletRequest
response HttpServletResponse
config ServletConfig
application ServletContext
session HttpSession
exception Throwable
page Object(this)
out JspWriter
pageContext PageContext
解析:
1.pageContext(jsp 运行上下文)【可以获取其他八个对象】
页面的上下文,可以获取其他的内置对象,可以设置在page域的键值对
如:pageContext.setAttribute("username","zhangsan");
使用场景:在自定义标签时会频繁使用到PageContext对象;或者是定义一个方法需要用到多个对象时,传一个pageContext对象就能解决问题.
2.out : JspWriter,向浏览器中写入数据(,相当于带缓存的PrintWriter(不带缓存))
PrintWriter:write("内容") 直接向浏览器输出内容
JspWriter:writer("内容") 向jsp缓冲区写出内容
JspWriter当满足以下条件时之一时,缓冲区的内容写出:
a,缓冲区满了
b,刷新缓冲区
c,关闭缓冲区
d,jsp页面执行完毕
3.exception
只能错误页面也就是 isErrorPage="true"
配置异常信息,这些异常信息只能ErrorPage页面进行显示
4.application :对应的ServletContext
5.config:ServletConfig
域对象(4个):
在servlet程序中,如果开发者希望使用session对象,必须通过request.getSession()来得到session对象;而在jsp程序中,开发中可直接使用session(系统帮我们创建好的session对象的名字就叫session)调用相应的方法即可,如:session.getId()
ServletContext context域
HttpServletRequet request域
HttpSession session域 --前三种在学习Servlet时就能接触到
PageContext page域 --jsp学习的
域对象的作用:保存数据,获取数据,共享数据.
保存数据:
pageContext.setAttribute("内容");//默认保存到page域 pageContext.setAttribute("内容",域范围常量);//保存到指定域中 //四个域常量 PageContext.PAGE_SCOPE PageContext.REQUEST_SCOPE PageContext..SESSION_SCOPE PageContext.APPLICATION_SCOPE
获取数据:
pageContext.getAttribute("内容"); pageContext.getAttribute("name",域范围常量); //自动在四个域中搜索数据 pageContext.findAttribute("内容"); //在四个域中自动搜索数据,顺序:page域->request域->session域->application域(context域)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
手把手 | 如何在计算机上配置数据科学开发环境
从Python、R等编程语言到以Git为例的版本控制系统甚至Unix Shell等命令行工具,数据科学家的武器库现在越来越丰富了,在个人计算机上同时使用这些武器可能会对新入门的数据科学家们造成不小的困扰,本文就将带你学习这些数据科学武器的配置方法。 在Datacamp这样的在线交互培训和教育平台上学习之后,下一步要做的就是使用自己的计算机应用Python,R,Git,或者Unix Shell中的技巧。然而,怎样准确地知道不同的项目需要什么样的准备工作呢?本教程就将帮助你了解需要安装哪些插件和软件,它包括:Anaconda Python的优势及其在操作系统中的安装。同时使用R和RStudio的好处及其在操作系统中的安装。Unix Shell的优势及其使用方法。Git的优势及其在操作系统中的安装。 接下来,让我们开始学习吧! Pytho
- 下一篇
浅谈BDD下的自动化测试框架
一、什么是BDD BDD(Behavior Driven Development),即行为驱动开发,是敏捷开发技术之一,通过自然语言定义系统行为,以功能使用者的角度,编写需求场景,且这些行为描述可以直接形成需求文档,同时也是测试标准。 二、为什么要使用BDD 传统模式下,从客户提出需求,到输出产品,我们会经历以下流程: 客户:提出需求需求分析师:分析需求,形成开发可执行的具体 Feature、Story、Taks开发:实现需求测试:编写验证步骤,验证最终产品是否满足需求 通常,由于不同的人对需求的理解不同,最终可能导致产品与客户需求存在很大差距。 BDD是基于一种“通用语言”,可以让客户、产品经理等将需求通过同一种语言描述出来,很大程度上避免了因为理解或表达不一致带来的问题,大大提高产品的交付品质。由此BDD的优势也就体现出来了: 更关注业务,以用户使用产品的角度,描述用户行为以及预期结果不同角色的人都可以参与需求定义及讨论,最终达成一致理解使用同一种语言描述需求,及测试用例,很大程度上避免了因理解差异导致实现功能与需求不一致的问题 三、常用的BDD测试框架 我们在前面提到过,BDD最...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器