注释
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域)