目录
jsp的inclued标签和jsp的include指令的区别
JSP页面比Servlet更有优势 :
. 它们很容易维护。
.不需要重新编译或重新部署。
.JSP可以访问JAVA的整个API。
.JSP是Servlet的扩展版本。
劣势:必须依赖Java、tomcat环境、需要解析编译后才能执行
它的简单原理:
用JSP编码很容易 : 只是将JAVA代码添加到HTML/XML。
减少代码的长度: 在JSP中,我们使用动作标记、自定义标记等。
连接到数据库更容易: 网站连接到数据库更容易,并允许读取或写入数据到数据库很容易。
制作交互式网站: 在这方面,我们可以创建动态网页,帮助用户在实时环境中进行交互。
可移植,强大,灵活,易于维护 : 因为这些是浏览器和服务器独立的。
无需重新部署和重新编译 : 它是动态的、安全的和平台无关的,因此不需要重新编译。
扩展Servlet : 因为它具有Servlet的所有特性,隐式对象和自定义标记
一个jsp页面可以有多个脚本片段,多个脚本片段中的代码可以相互访问
- <span style="background-color:#dadada"><%
- <span style="color:#981a1a"><%----span> <span style="color:#000000">jsp脚本片段:这里只能出现Java代码并严格执行Java规范,不能出现HTML代码span> <span style="color:#981a1a">---span>%>
- %>span>
<span style="background-color:#dadada"><%<span style="color:#981a1a">=span> <span style="color:#000000">expressionspan> %> span>
只能声明,不能使用
- <span style="background-color:#dadada"><%! int var=10; %>
- <%!
- int x = 2;
- public void fun(){}
- // 不能声明抽象方法
- %>span>
注释:html的注释可以,要么就是<%--我是注释---%>
创建html页面,从哪里请求将发送到服务器如try.html。
其次要处理用户的请求是创建.jsp文件Eg.new.jsp
.创建项目文件夹结构
.创建XML文件如my.xml。
.创建WAR文件。
.启动Tomcat.运行应用程序
JSP指令控制JSP编译器如何去生成servlet
不需要我们写
<span style="background-color:#dadada"><%<span style="color:#555555">@span> <span style="color:#000000">指令名span> <span style="color:#000000">属性1span><span style="color:#981a1a">=span><span style="color:#aa1111">"值1"span> <span style="color:#000000">属性1span><span style="color:#981a1a">=span><span style="color:#aa1111">"值1"span> <span style="color:#000000">……span><span style="color:#981a1a">>span> span>
定义整个jsp页面的相关属性
用来引入其他的jsp页面,得先把连个页面结合,再编译成一个servlet
<span style="background-color:#dadada"><%<span style="color:#555555">@span> <span style="color:#000000">includespan> <span style="color:#000000">filespan><span style="color:#981a1a">=span><span style="color:#aa1111">"somefile.jsp"span> %>span>
引入页面上需要用到的标签库
(1)jsp:include:引入指定页面
<span style="background-color:#dadada"><span style="color:#117700"><span><span style="color:#117700">jsp:includespan> <span style="color:#0000cc">pagespan>=<span style="color:#aa1111">"hello.jsp"span><span style="color:#117700">>span><span style="color:#117700">jsp:includespan><span style="color:#117700">>span>span>
(2)jsp:forward:转发页面(不常用)
(3)jsp:param:传参数(不常用)
- <span style="background-color:#dadada"><span style="color:#117700"><span><span style="color:#117700">jsp:forwardspan> <span style="color:#0000cc">pagespan>=<span style="color:#aa1111">"hello.jsp"span><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">jsp:paramspan> <span style="color:#0000cc">namespan>=<span style="color:#aa1111">"num1"span><span style="color:#117700">>span><span style="color:#117700">jsp:paramspan><span style="color:#117700">>span>
- <span style="color:#117700">span><span style="color:#117700">jsp:forwardspan><span style="color:#117700">>span>span>
- <span style="background-color:#dadada"> <span style="color:#117700"><span><span style="color:#117700">c:choosespan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">c:whenspan> <span style="color:#0000cc">testspan>=<span style="color:#aa1111">"${sessionScope.age eq 18}"span><span style="color:#117700">>span>
- 你已经年满18岁,可以签署劳动合同了!
- <span style="color:#117700">span><span style="color:#117700">c:whenspan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">c:whenspan> <span style="color:#0000cc">testspan>=<span style="color:#aa1111">"${sessionScope.age lt 18}"span><span style="color:#117700">>span>
- 你好没有满18岁!
- <span style="color:#117700">span><span style="color:#117700">c:whenspan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">c:otherwisespan><span style="color:#117700">>span>
- 你已经是大人了!!!
- <span style="color:#117700">span><span style="color:#117700">c:otherwisespan><span style="color:#117700">>span>
- <span style="color:#117700">span><span style="color:#117700">c:choosespan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">hrspan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">c:forEachspan> <span style="color:#0000cc">beginspan>=<span style="color:#aa1111">"1"span> <span style="color:#0000cc">endspan>=<span style="color:#aa1111">"10"span> <span style="color:#0000cc">stepspan>=<span style="color:#aa1111">"2"span> <span style="color:#0000cc">varspan>=<span style="color:#aa1111">"i"span> <span style="color:#0000cc">varStatusspan>=<span style="color:#aa1111">"stat"span><span style="color:#117700">>span>
- ${i} ----- ${stat.first} <span style="color:#117700"><span><span style="color:#117700">brspan><span style="color:#117700">>span>
- <span style="color:#117700">span><span style="color:#117700">c:forEachspan><span style="color:#117700">>span>span>
引用核心标签库的语法如下:
<span style="background-color:#dadada"><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>span>
<span style="background-color:#dadada"><span style="color:#117700"><span><span style="color:#117700">c:forEachspan><span style="color:#117700">>span> 基础迭代标签,接受多种集合类型span>
<span style="background-color:#dadada"><span style="color:#117700"><span><span style="color:#117700">c:paramspan><span style="color:#117700">>span> 用来给包含或重定向的页面传递参数span>
- <span style="background-color:#dadada"><span style="color:#117700"><span><span style="color:#117700">c:ifspan><span style="color:#117700">>span> 构造简单的“if _ else”结构的条件表达式
- 标签属性: test="条件"
- var="存储条件结果的变量"
- scope="var属性的作用域" 默认值是pagespan>
<span style="background-color:#dadada"><span style="color:#117700"><span><span style="color:#117700">c:outspan><span style="color:#117700">>span> 向浏览器输出一段文本span>
- <span style="background-color:#dadada"><span style="color:#117700"><span><span style="color:#117700">c:setspan><span style="color:#117700">>span> 把某一对象存在指定的域范围内
-
- <%<span style="color:#981a1a">--span> <span style="color:#000000">向指定的作用域中设置值span> <span style="color:#981a1a">--span>%>
- <span style="color:#117700"><span><span style="color:#117700">c:setspan> <span style="color:#0000cc">scopespan>=<span style="color:#aa1111">"session"span> <span style="color:#0000cc">varspan>=<span style="color:#aa1111">"name"span> <span style="color:#0000cc">valuespan>=<span style="color:#aa1111">"zhangsan"span><span style="color:#117700">>span><span style="color:#117700">c:setspan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">c:setspan> <span style="color:#0000cc">scopespan>=<span style="color:#aa1111">"session"span> <span style="color:#0000cc">varspan>=<span style="color:#aa1111">"age"span> <span style="color:#0000cc">valuespan>=<span style="color:#aa1111">"20"span><span style="color:#117700">>span><span style="color:#117700">c:setspan><span style="color:#117700">>span>
- ${sessionScope.name}span>
- <span style="background-color:#dadada"><%<span style="color:#555555">@span> <span style="color:#000000">pagespan> <span style="color:#000000">contentTypespan><span style="color:#981a1a">=span><span style="color:#aa1111">"text/html;charset=UTF-8"span> <span style="color:#000000">languagespan><span style="color:#981a1a">=span><span style="color:#aa1111">"java"span> %>
- <%<span style="color:#555555">@span> <span style="color:#000000">taglibspan> <span style="color:#000000">prefixspan><span style="color:#981a1a">=span><span style="color:#aa1111">"c"span> <span style="color:#000000">urispan><span style="color:#981a1a">=span><span style="color:#aa1111">"http://java.sun.com/jsp/jstl/core"span> %>
- <span style="color:#117700"><span><span style="color:#117700">htmlspan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">headspan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">titlespan><span style="color:#117700">>span>admin<span style="color:#117700">span><span style="color:#117700">titlespan><span style="color:#117700">>span>
- <span style="color:#117700">span><span style="color:#117700">headspan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">bodyspan><span style="color:#117700">>span>
- <%
- <span style="color:#008855">Stringspan> <span style="color:#000000">adminspan> <span style="color:#981a1a">=span> <span style="color:#aa1111">"admin"span>;
- <span style="color:#000000">requestspan>.<span style="color:#000000">setAttributespan>(<span style="color:#aa1111">"admin"span>,<span style="color:#000000">adminspan>);
- %>
- <span style="color:#117700"><span><span style="color:#117700">c:ifspan> <span style="color:#0000cc">testspan>=<span style="color:#aa1111">"${requestScope.admin == 'admin'}"span><span style="color:#117700">>span><span style="color:#117700">c:ifspan><span style="color:#117700">>span>
- 向浏览器页面输出:
- <span style="color:#117700"><span><span style="color:#117700">brspan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">c:outspan> <span style="color:#0000cc">valuespan>=<span style="color:#aa1111">"${requestScope.admin}"span><span style="color:#117700">>span><span style="color:#117700">c:outspan><span style="color:#117700">>span>
- <span style="color:#117700">span><span style="color:#117700">bodyspan><span style="color:#117700">>span>
- <span style="color:#117700">span><span style="color:#117700">htmlspan><span style="color:#117700">>span>span>
<span style="background-color:#dadada">span>
作用域:生效范围
pageContext是pageContext对象
一个属性只能在一个页面中获取
- <span style="background-color:#dadada"><%
- <span style="color:#000000">pageContextspan>.<span style="color:#000000">setAttributespan>(<span style="color:#aa1111">"pageContext"span>,<span style="color:#aa1111">"pageContext"span>);
- %>span>
request 是HttpServlet的对象
一个页面中设置的属性,范围是一次请求
session 是HttpSession的对象
一个会话中的属性只要页面不关闭,都能获取到
application是ServletContext对象
当前项目下的任何一个位置都能获取
request对象的作用域为一次请求。
response对象也具有作用域,它只在JSP页面内有效。
服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。
setAttribute(String key,Object obj): 将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字。
getAttribute(String key): 获取application对象中含有关键字的对象。
out 对象用于在Web浏览器内输出信息,待数据输出完毕后,要及时关闭输出流。
page 对象代表JSP本身,只有在JSP页面内才是合法的
只有当页面是错误处理页面,即编译指令page 的isErrorPage 属性为true 时,该对象才可以使用
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
是个加密路径,无法通过地址栏url方式直接访问,需要后台转发
- <span style="background-color:#dadada"><span style="color:#117700"><span><span style="color:#117700">error-pagespan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">error-codespan><span style="color:#117700">>span>500<span style="color:#117700">span><span style="color:#117700">error-codespan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">locationspan><span style="color:#117700">>span>/500.html<span style="color:#117700">span><span style="color:#117700">locationspan><span style="color:#117700">>span>
- <span style="color:#117700">span><span style="color:#117700">error-pagespan><span style="color:#117700">>span>
-
- <span style="color:#117700"><span><span style="color:#117700">error-pagespan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">error-typespan><span style="color:#117700">>span>java.lang.NullPointerException<span style="color:#117700">span><span style="color:#117700">error-codespan><span style="color:#117700">>span>
- <span style="color:#117700"><span><span style="color:#117700">locationspan><span style="color:#117700">>span>/npe.html<span style="color:#117700">span><span style="color:#117700">locationspan><span style="color:#117700">>span>
- <span style="color:#117700">span><span style="color:#117700">error-pagespan><span style="color:#117700">>span>span>
EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。
所有EL表达式的格式都是以“${}”表示
例如,${ userinfo}代表获取变量userinfo的值。
当EL表达式中的变量不给定范围时,则默认在page范围查找,然后依次在request、session、application范围查找。也可以用范围作为前缀表示属于哪个范围的变量,例如:${ pageScope. userinfo}表示访问page范围中的userinfo变量。
- <span style="background-color:#dadada"><% session.setAttribute="name","小红" %>
- <% request.setAttribute="name","小花" %>
-
- <input type="text"> value="${sessionScope.name}"
- span>
EL表达式和JSTL标签的区别
EL是用来显示数据的,功能跟<%=表达式%> 一样,EL是不需要引入什么东西的
没区别
jsp本质上就是一个servlet,jsp更侧重于视图的展示,servlet更侧重于逻辑处理
先有的servlet后有的jsp
引入其他jsp页面,得先把连个页面结合,再编译成一个servlet
jsp:include标签先把要引入的页面先编译再合并,
include指令是先把要引入的页面合并再编译。