目录
jsp的inclued标签和jsp的include指令的区别
jsp
JSP页面比Servlet更有优势 :
. 它们很容易维护。
.不需要重新编译或重新部署。
.JSP可以访问JAVA的整个API。
.JSP是Servlet的扩展版本。
劣势:必须依赖Java、tomcat环境、需要解析编译后才能执行
它的简单原理:
1、特点
用JSP编码很容易 : 只是将JAVA代码添加到HTML/XML。
减少代码的长度: 在JSP中,我们使用动作标记、自定义标记等。
连接到数据库更容易: 网站连接到数据库更容易,并允许读取或写入数据到数据库很容易。
制作交互式网站: 在这方面,我们可以创建动态网页,帮助用户在实时环境中进行交互。
可移植,强大,灵活,易于维护 : 因为这些是浏览器和服务器独立的。
无需重新部署和重新编译 : 它是动态的、安全的和平台无关的,因此不需要重新编译。
扩展Servlet : 因为它具有Servlet的所有特性,隐式对象和自定义标记
2、基础语法
2.1 jsp脚本片段
一个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>
2.2 jsp表达式
<span style="background-color:#dadada"><%<span style="color:#981a1a">=</span> <span style="color:#000000">expression</span> %> </span>
2.3 jsp 声明
只能声明,不能使用
<span style="background-color:#dadada"><%! int var=10; %>
<%!
int x = 2;
public void fun(){}
// 不能声明抽象方法
%></span>
注释:html的注释可以,要么就是<%--我是注释---%>
执行的过程执行JSP的步骤
创建html页面,从哪里请求将发送到服务器如try.html。
其次要处理用户的请求是创建.jsp文件Eg.new.jsp
.创建项目文件夹结构
.创建XML文件如my.xml。
.创建WAR文件。
.启动Tomcat.运行应用程序
3、jsp的指令标识
-
JSP指令控制JSP编译器如何去生成servlet
不需要我们写
<span style="background-color:#dadada"><%<span style="color:#555555">@</span> <span style="color:#000000">指令名</span> <span style="color:#000000">属性1</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"值1"</span> <span style="color:#000000">属性1</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"值1"</span> <span style="color:#000000">……</span><span style="color:#981a1a">></span> </span>
3.1 page指令
定义整个jsp页面的相关属性
3.2 include指令
用来引入其他的jsp页面,得先把连个页面结合,再编译成一个servlet
<span style="background-color:#dadada"><%<span style="color:#555555">@</span> <span style="color:#000000">include</span> <span style="color:#000000">file</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"somefile.jsp"</span> %></span>
3.3 taglib指令
引入页面上需要用到的标签库
4、jsp标签
4.1 内置标签
(1)jsp:include:引入指定页面
<span style="background-color:#dadada"><span style="color:#117700"><</span><span style="color:#117700">jsp:include</span> <span style="color:#0000cc">page</span>=<span style="color:#aa1111">"hello.jsp"</span><span style="color:#117700">></</span><span style="color:#117700">jsp:include</span><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:forward</span> <span style="color:#0000cc">page</span>=<span style="color:#aa1111">"hello.jsp"</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">jsp:param</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"num1"</span><span style="color:#117700">></</span><span style="color:#117700">jsp:param</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">jsp:forward</span><span style="color:#117700">></span></span>
<span style="background-color:#dadada"> <span style="color:#117700"><</span><span style="color:#117700">c:choose</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">c:when</span> <span style="color:#0000cc">test</span>=<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:when</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">c:when</span> <span style="color:#0000cc">test</span>=<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:when</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">c:otherwise</span><span style="color:#117700">></span>
你已经是大人了!!!
<span style="color:#117700"></</span><span style="color:#117700">c:otherwise</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">c:choose</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">hr</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">c:forEach</span> <span style="color:#0000cc">begin</span>=<span style="color:#aa1111">"1"</span> <span style="color:#0000cc">end</span>=<span style="color:#aa1111">"10"</span> <span style="color:#0000cc">step</span>=<span style="color:#aa1111">"2"</span> <span style="color:#0000cc">var</span>=<span style="color:#aa1111">"i"</span> <span style="color:#0000cc">varStatus</span>=<span style="color:#aa1111">"stat"</span><span style="color:#117700">></span>
${i} ----- ${stat.first} <span style="color:#117700"><</span><span style="color:#117700">br</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">c:forEach</span><span style="color:#117700">></span></span>
4.2 JSTL标签(重点)
核心标签(常用)
引用核心标签库的语法如下:
<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:forEach</span><span style="color:#117700">></span> 基础迭代标签,接受多种集合类型</span>
<span style="background-color:#dadada"><span style="color:#117700"><</span><span style="color:#117700">c:param</span><span style="color:#117700">></span> 用来给包含或重定向的页面传递参数</span>
<span style="background-color:#dadada"><span style="color:#117700"><</span><span style="color:#117700">c:if</span><span style="color:#117700">></span> 构造简单的“if _ else”结构的条件表达式
标签属性: test="条件"
var="存储条件结果的变量"
scope="var属性的作用域" 默认值是page</span>
<span style="background-color:#dadada"><span style="color:#117700"><</span><span style="color:#117700">c:out</span><span style="color:#117700">></span> 向浏览器输出一段文本</span>
<span style="background-color:#dadada"><span style="color:#117700"><</span><span style="color:#117700">c:set</span><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:set</span> <span style="color:#0000cc">scope</span>=<span style="color:#aa1111">"session"</span> <span style="color:#0000cc">var</span>=<span style="color:#aa1111">"name"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"zhangsan"</span><span style="color:#117700">></</span><span style="color:#117700">c:set</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">c:set</span> <span style="color:#0000cc">scope</span>=<span style="color:#aa1111">"session"</span> <span style="color:#0000cc">var</span>=<span style="color:#aa1111">"age"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"20"</span><span style="color:#117700">></</span><span style="color:#117700">c:set</span><span style="color:#117700">></span>
${sessionScope.name}</span>
<span style="background-color:#dadada"><%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#000000">contentType</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"text/html;charset=UTF-8"</span> <span style="color:#000000">language</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java"</span> %>
<%<span style="color:#555555">@</span> <span style="color:#000000">taglib</span> <span style="color:#000000">prefix</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"c"</span> <span style="color:#000000">uri</span><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">html</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">head</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">title</span><span style="color:#117700">></span>admin<span style="color:#117700"></</span><span style="color:#117700">title</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">head</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">body</span><span style="color:#117700">></span>
<%
<span style="color:#008855">String</span> <span style="color:#000000">admin</span> <span style="color:#981a1a">=</span> <span style="color:#aa1111">"admin"</span>;
<span style="color:#000000">request</span>.<span style="color:#000000">setAttribute</span>(<span style="color:#aa1111">"admin"</span>,<span style="color:#000000">admin</span>);
%>
<span style="color:#117700"><</span><span style="color:#117700">c:if</span> <span style="color:#0000cc">test</span>=<span style="color:#aa1111">"${requestScope.admin == 'admin'}"</span><span style="color:#117700">></</span><span style="color:#117700">c:if</span><span style="color:#117700">></span>
向浏览器页面输出:
<span style="color:#117700"><</span><span style="color:#117700">br</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">c:out</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"${requestScope.admin}"</span><span style="color:#117700">></</span><span style="color:#117700">c:out</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">body</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">html</span><span style="color:#117700">></span></span>
<span style="background-color:#dadada"></span>
4.3 自定义标签
5、jsp四大作用域:(面试)
作用域:生效范围
5.1 当前页 pageContext
pageContext是pageContext对象
一个属性只能在一个页面中获取
<span style="background-color:#dadada"><%
<span style="color:#000000">pageContext</span>.<span style="color:#000000">setAttribute</span>(<span style="color:#aa1111">"pageContext"</span>,<span style="color:#aa1111">"pageContext"</span>);
%></span>
5.2 一次请求 request
request 是HttpServlet的对象
一个页面中设置的属性,范围是一次请求
5.3 一次会话 session
session 是HttpSession的对象
一个会话中的属性只要页面不关闭,都能获取到
5.4 整个web应用 application
application是ServletContext对象
当前项目下的任何一个位置都能获取
6、jsp的九大内置对象(面试)
request 请求
request对象的作用域为一次请求。
response 响应
response对象也具有作用域,它只在JSP页面内有效。
session 会话
application 应用
服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。
setAttribute(String key,Object obj): 将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字。
getAttribute(String key): 获取application对象中含有关键字的对象。
out 输出
out 对象用于在Web浏览器内输出信息,待数据输出完毕后,要及时关闭输出流。
page 当前jsp页面对象
page 对象代表JSP本身,只有在JSP页面内才是合法的
exception 异常
只有当页面是错误处理页面,即编译指令page 的isErrorPage 属性为true 时,该对象才可以使用
pageContext 当前页,是作用域
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
config
WEB-INF
是个加密路径,无法通过地址栏url方式直接访问,需要后台转发
web.xml配置
<span style="background-color:#dadada"><span style="color:#117700"><</span><span style="color:#117700">error-page</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">error-code</span><span style="color:#117700">></span>500<span style="color:#117700"></</span><span style="color:#117700">error-code</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">location</span><span style="color:#117700">></span>/500.html<span style="color:#117700"></</span><span style="color:#117700">location</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">error-page</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">error-page</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">error-type</span><span style="color:#117700">></span>java.lang.NullPointerException<span style="color:#117700"></</span><span style="color:#117700">error-code</span><span style="color:#117700">></span>
<span style="color:#117700"><</span><span style="color:#117700">location</span><span style="color:#117700">></span>/npe.html<span style="color:#117700"></</span><span style="color:#117700">location</span><span style="color:#117700">></span>
<span style="color:#117700"></</span><span style="color:#117700">error-page</span><span style="color:#117700">></span></span>
EL表达式
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,jsp更侧重于视图的展示,servlet更侧重于逻辑处理
先有的servlet后有的jsp
include 指令
引入其他jsp页面,得先把连个页面结合,再编译成一个servlet
jsp的inclued标签和jsp的include指令的区别
jsp:include标签先把要引入的页面先编译再合并,
include指令是先把要引入的页面合并再编译。