Java && JSP

JSP

java server page :是Java的一种服务器端页面的技术。

就是为了解决Servlet处理HTML的不方便(是Java代码中夹杂着HTML,以Java代码为主体)。

本质上: 是HTML代码中夹杂着Java代码,它是以HTML为主体。其实,JSP也是Servlet。

  • 文件的后缀名是 .jsp

JSP的处理逻辑

  • 当浏览器第一次请求某个 .jsp 文件的时候
    • Tomcat会找到对应的 .jsp 文件,然后自动将其翻译为一个 .java 文件
    • 继而自动编译 .java 文件为 .class 文件

idea下的目录:

C:\Users\Administrator.IntelliJIdea2019.1\system\tomcat\ Unnamed_code2 \work\Catalina\localhost\0731\org\apache\jsp

在这里插入图片描述在这里插入图片描述

我idea下的目录

C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_8_5_57_MyJavaCode_3\work\Catalina\localhost\JSP\org\apache\js

可见 jsp 文件编译完 就是一个 Serlvet 。 它方便了以Servlet来基础的动态页面技术的开发。

Page指令

用于进行JSP页面的一些相关的设置。

<%@ page 属性名1="属性值1" %>
<!--
pageEncoding: 属性用于告诉JSP的翻译器(翻译.java)文件此.jsp文档使用的编码方式。
contentType: 设置resp的 contentType。 
-->
<%@ page pageEncoding="UTF-8" 
contentType="text/html; utf-8"  %>

在这里插入图片描述

scriptlets 语法

格式:

<%  java代码;  %>

在这里插入图片描述

本质上是 _jspService 方法体的一部分。

申明语法

<%! 
    java代码
%>

在这里插入图片描述

注意: 它的内容会放置在Java类的成员位置。

JSP表达式

<%= Java代码 %>

在这里插入图片描述

作用就是调用输出流进行回写。

  • 不能以分号结束。
  • 代码要作为参数传递。

JSP注释

格式:

<%-- jsp的注释内容 --%>

这种JSP注释,会在翻译为java文件的时候,被忽略。

在JSP页面中可以存在以下形式的注释:

注释格式最终效果
<!--原生的HTML注释-->在生成的.java文件中可以看到,浏览器中通过html源码会看到。
<%--jsp的注释内容--%>在生成的.java文件中看不到,浏览器通过html源码也看不到。
代码中的Java单行或多行注释在生成的.java文件中能看到,浏览器通过html源码看不到。

在这里插入图片描述

https://blog.csdn.net/u014785687/article/details/74078512

JSP的内置对象(必须背会)

JSP规范中规定了一些固定的名称的变量,这些变量称为内置对象。我们在JSP代码中,可以直接使用。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意: 只有 isErrorPage = “true” 的时候,当前页面中才能访问到全部的 9个内置对象。

  • request : 当前http请求对象
  • response : 当前http响应对象
  • session: 当前的session会话
  • application : 当前的ServletContext域对象
  • pageContext: 当前的页面域对象
  • page : 当前jsp生成的java对象
  • out: 输出对象
  • config: 当前对应的serlvetConfig对象。
  • exception: 异常页面中,表示当前发生的异常对象。
<!--典型的在jsp页面中获取当前项目的名称-->
 <%=request.getContextPath()%>
<%
    //pageContext对象是四(域对象)合一的对象
    // 表示将数据存放到对应的域对象中。
//    pageContext.setAttribute("name"  , "value"); //就是往PageContext中放置内容
    // 它的 setAttribute 还支持第三个int型的值:
    // PageContext.PAGE_SCOPE =1    --->    pageContext.setAttribute("name"  , "value",PageContext.PAGE_SCOPE)  等价于  pageContext.setAttribute("name"  , "value");
    // PageContext.REQUEST_SCOPE=2 ---> pageContext.setAttribute("name"  , "value",PageContext.REQUEST_SCOPE)  等价于  request.setAttribute("name"  , "value");
    // PageContext.SESSION_SCOPE=3 ---> pageContext.setAttribute("name"  , "value",PageContext.SESSION_SCOPE) 等价于 session.setAttribute("name"  , "value");
    // PageContext.APPLICATION_SCOPE = 4 ---> pageContext.setAttribute("name"  , "value",PageContext.APPLICATION_SCOPE)  等价于
    //               application.setAttribute("name", "value");


    //该对象的getAttribute方法也支持传递范围去查询。
//    pageContext.getAttribute(, )
    //该对象的removeAttribute方法也支持传递范围去移除。
//    pageContext.removeAttribute(, );

    //返回指定范围域对象中的 name 名称列表
//    pageContext.getAttributeNamesInScope(int);

    //【特色功能】: 它可以自动根据范围,从小-> 到大 获取对应的 key 的值。如果能找到就返回。
//    pageContext.findAttribute("key");

    out.print(pageContext.findAttribute("aaa"));
%>

常规的开发模式

在这里插入图片描述

JSP页面主要负责数据的展现。 通过借助 9大内置对象。操作后台Servlet传递过来的各种数据,进行展示的逻辑书写。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值