• 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页面可以有多个脚本片段,多个脚本片段中的代码可以相互访问

    1. <span style="background-color:#dadada"><%
    2.    <span style="color:#981a1a"><%----span> <span style="color:#000000">jsp脚本片段:这里只能出现Java代码并严格执行Java规范,不能出现HTML代码span> <span style="color:#981a1a">---span>%>
    3. %>span>

    2.2 jsp表达式

    <span style="background-color:#dadada"><%<span style="color:#981a1a">=span> <span style="color:#000000">expressionspan> %> span>

    2.3 jsp 声明

    只能声明,不能使用

    1. <span style="background-color:#dadada"><%! int var=10; %>
    2. <%!
    3.   int x = 2;
    4.   public void fun(){}
    5.   // 不能声明抽象方法
    6. %>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">属性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>

    3.1 page指令

    定义整个jsp页面的相关属性

    3.2 include指令

    用来引入其他的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>

    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: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:传参数(不常用)

    1. <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>
    2.    <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>
    3. <span style="color:#117700">span><span style="color:#117700">jsp:forwardspan><span style="color:#117700">>span>span>
    1. <span style="background-color:#dadada">   <span style="color:#117700"><span><span style="color:#117700">c:choosespan><span style="color:#117700">>span>
    2.        <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>
    3.           你已经年满18岁,可以签署劳动合同了!
    4.        <span style="color:#117700">span><span style="color:#117700">c:whenspan><span style="color:#117700">>span>
    5.        <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>
    6.           你好没有满18岁!
    7.        <span style="color:#117700">span><span style="color:#117700">c:whenspan><span style="color:#117700">>span>
    8.        <span style="color:#117700"><span><span style="color:#117700">c:otherwisespan><span style="color:#117700">>span>
    9.           你已经是大人了!!!
    10.        <span style="color:#117700">span><span style="color:#117700">c:otherwisespan><span style="color:#117700">>span>
    11.    <span style="color:#117700">span><span style="color:#117700">c:choosespan><span style="color:#117700">>span>
    12.    <span style="color:#117700"><span><span style="color:#117700">hrspan><span style="color:#117700">>span>
    13.    <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>
    14.       ${i} ----- ${stat.first} <span style="color:#117700"><span><span style="color:#117700">brspan><span style="color:#117700">>span>
    15.    <span style="color:#117700">span><span style="color:#117700">c:forEachspan><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: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>
    1. <span style="background-color:#dadada"><span style="color:#117700"><span><span style="color:#117700">c:ifspan><span style="color:#117700">>span>   构造简单的“if _ else”结构的条件表达式
    2.         标签属性: test="条件"    
    3.   var="存储条件结果的变量"
    4.   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>
    1. <span style="background-color:#dadada"><span style="color:#117700"><span><span style="color:#117700">c:setspan><span style="color:#117700">>span>   把某一对象存在指定的域范围内
    2.    
    3.   <%<span style="color:#981a1a">--span>  <span style="color:#000000">向指定的作用域中设置值span>  <span style="color:#981a1a">--span>%>
    4.    <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>
    5.    <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>
    6.   ${sessionScope.name}span>
    1. <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> %>
    2. <%<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> %>
    3. <span style="color:#117700"><span><span style="color:#117700">htmlspan><span style="color:#117700">>span>
    4. <span style="color:#117700"><span><span style="color:#117700">headspan><span style="color:#117700">>span>
    5.    <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>
    6. <span style="color:#117700">span><span style="color:#117700">headspan><span style="color:#117700">>span>
    7. <span style="color:#117700"><span><span style="color:#117700">bodyspan><span style="color:#117700">>span>
    8. <%
    9.    <span style="color:#008855">Stringspan> <span style="color:#000000">adminspan> <span style="color:#981a1a">=span> <span style="color:#aa1111">"admin"span>;
    10.    <span style="color:#000000">requestspan>.<span style="color:#000000">setAttributespan>(<span style="color:#aa1111">"admin"span>,<span style="color:#000000">adminspan>);
    11. %>
    12. <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>
    13. 向浏览器页面输出:
    14. <span style="color:#117700"><span><span style="color:#117700">brspan><span style="color:#117700">>span>
    15. <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>
    16. <span style="color:#117700">span><span style="color:#117700">bodyspan><span style="color:#117700">>span>
    17. <span style="color:#117700">span><span style="color:#117700">htmlspan><span style="color:#117700">>span>span>
    <span style="background-color:#dadada">span>

    4.3 自定义标签

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

    作用域:生效范围

    5.1 当前页 pageContext

    pageContext是pageContext对象

    一个属性只能在一个页面中获取

    1. <span style="background-color:#dadada"><%
    2. <span style="color:#000000">pageContextspan>.<span style="color:#000000">setAttributespan>(<span style="color:#aa1111">"pageContext"span>,<span style="color:#aa1111">"pageContext"span>);
    3. %>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配置

    1. <span style="background-color:#dadada"><span style="color:#117700"><span><span style="color:#117700">error-pagespan><span style="color:#117700">>span>
    2.    <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>
    3.    <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>
    4. <span style="color:#117700">span><span style="color:#117700">error-pagespan><span style="color:#117700">>span>
    5. <span style="color:#117700"><span><span style="color:#117700">error-pagespan><span style="color:#117700">>span>
    6.    <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>
    7.    <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>
    8. <span style="color:#117700">span><span style="color:#117700">error-pagespan><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变量

    1. <span style="background-color:#dadada"><% session.setAttribute="name","小红" %>
    2. <% request.setAttribute="name","小花" %>
    3. <input type="text"> value="${sessionScope.name}"
    4. span>

    EL表达式和JSTL标签的区别

    EL是用来显示数据的,功能跟<%=表达式%> 一样,EL是不需要引入什么东西的

    面试

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

    没区别

    jsp本质上就是一个servlet,jsp更侧重于视图的展示,servlet更侧重于逻辑处理

    先有的servlet后有的jsp

    include 指令

    引入其他jsp页面,得先把连个页面结合,再编译成一个servlet

    jsp的inclued标签和jsp的include指令的区别

    jsp:include标签先把要引入的页面先编译再合并,

    include指令是先把要引入的页面合并再编译。

  • 相关阅读:
    115 个 Java 面试题和答案——终极重点(下)
    Go语言实用用法大全
    论文回顾:Playful Palette: An Interactive Parametric Color Mixer for Artists
    Ubuntu:Arduino IDE 开发环境配置【保姆级】
    推荐系统-模型:Feed 流推荐
    简单的咖啡文化静态HTML网页设计作品 DIV布局咖啡馆文化网页模板代码 DW咖啡网站制作成品
    4.无约束优化问题基本公式
    正则表达式与Linux常用快捷命令(sort、uniq、tr、cut、paste)
    主成分之综合竞争力案例分析
    论如何在Android中还原设计稿中的阴影
  • 原文地址:https://blog.csdn.net/qq_50392643/article/details/126884095