2022-08-31 第五组 张明敏 第五组

目录

jsp

1、特点

2、基础语法

2.1 jsp脚本片段

2.2 jsp表达式

2.3 jsp 声明

执行的过程执行JSP的步骤

3、jsp的指令标识

3.1 page指令

3.2 include指令

3.3 taglib指令

4、jsp标签

4.1 内置标签

4.2 JSTL标签(重点)

核心标签(常用)

4.3 自定义标签

5、jsp四大作用域:(面试)

5.1 当前页 pageContext

5.2 一次请求 request

5.3 一次会话 session

5.4 整个web应用 application

6、jsp的九大内置对象(面试)

request 请求

response 响应

session 会话

application 应用

out 输出

page 当前jsp页面对象

exception  异常

pageContext 当前页,是作用域

config

WEB-INF

web.xml配置

EL表达式

EL表达式和JSTL标签的区别

面试

jsp和servlet有啥区别:(重要)

include 指令

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的九大内置对象(面试)

JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用

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指令是先把要引入的页面合并再编译。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值