JavaEE(4)—JSP

JSP


问题

Servlet:

  • 优点:网页内容可以动态更改。
  • 缺点:极大不便于网页内容的书写,影响开发效率

Servlet更适合做请求处理,但做响应JSP更方便

特点

  • 本质上还是Servlet
  • 跨平台,一次编写处处运行
  • 组件跨平台
  • 健壮性和安全性
  • JSP修改后不用重启服务器

过程:在url中输入a.jsp之后,tomcat会寻找name为a.jsp的Servlet,实际上底层有个Servlet叫JspServlet,把a.jsp转译为Servlet

JSP中的注释:

  • 前端注释: 会被转译,也会被发送,但是不会被浏览器执行
<!--    -->
  • java代码注释:会被转译,但是不会被servlet执行
    //
  • JSP注释:不会被转译
<%--   --%>

JSP语法指令:

1.前端代码直接编写

2.page指令:

<%@page 属性名="属性值" 属性名="属性值"...%>
language://声明jsp要被转译的语言
import://声明转译的java文件要导入的包,不同的包使用逗号隔开
pageEncoding://设置jsp文件的数据编码格式,
contentType,charset://设置jsp数据响应给浏览器时,浏览器的解析和编码格式
session://设置转译的servlet中是否开启session支持,默认开启。false表示关闭
errorPage://设置jsp运行错误跳转的页面
extends://设置jsp转译的java文件要继承的父类(包名+类名)

  • 作用:配置jsp文件的转译的相关参数

3.局部代码块

<%
    //声明java局部代码域
    int a = 4;
%>

特点:

  • 局部代码块中声明的java代码会被原样转译到jsp对应的servlet文件的_JspService方法中
  • 代码块中使用的变量是局部变量

缺点:

  • 使用局部代码块在jsp中进行逻辑判断,书写麻烦,阅读困难

开发:

  • 使用servlet进行请求逻辑处理,使用jsp进行页面展现

4.jsp全局代码块

<%!
    //声明java全局代码块
    public void test(){
            
        }
%>

特点: 声明的java代码作为全局代码转移到对应的servlet类中

注意: 全局代码块声明的代码需要使用局部代码块调用


5.Jsp的脚本段语句:

<%=
    str
%>

等价于

<%
    out.print(str);
%>

特点: 帮助我们快速的获取变量或者方法的返回值作为数据响应给浏览器

注意: 不要再变量名中加分号

位置: 除jsp语法要求以外的任意位置都可以写


1.JSP静态引入

<%@include file="includeStatic.jsp" %>

作用: 会将引入的jsp文件和当前的jsp文件转译成一个java(Servlet)文件使用

本质: 会将引入的.jsp的文件与原来的.jsp文件合并,引入的.jsp并没有被单独转译

注意: 当前文件和静态引入的jsp文件中不能够使用java代码块声明同名变量

2.动态引入

<jsp:include page="index.jsp"></jsp:include>

特点: 会将引入的jsp文件单独转译,在当前文件转译好的java文件中调用引入的jsp文件的转译文件,在网页中显示合并后的显示效果

注意: 动态引入允许文件中声明同名变量

优点: 降低jsp代码的冗余,便于维护升级


JSP的转发 forward标签

<jsp:forward page="forward.jsp">
        <jsp:param name="str" value="aaa"></jsp:param>
</jsp:forward>

特点:

  • 一次请求
  • 地址栏信息不变

注意:

  • 在转发标签的两个标签中间除了写 param子标签不会出错,其他任意字符都会报错
  • name为附带的数据的键名,value为附带的数据内容
  • 数据会以?的形式拼接在转发路径的后面

JSP九大内置对象:

  • jsp文件在转译成对应的Servlet文件的时候自动生成的并声明的对象。我们在jsp页面中直接使用即可。
  • 注意:内置对象在jsp页面中使用,使用局部代码块或者脚本段语句来使用。不能在全局代码块中使用。

内容:

  • 1.pageContext:页面上下文对象,封存了其他内置对象。封存了当前jsp的运行信息

注意:每个jsp文件单独拥有一个pageContext对象

作用域:当前页面

  • 2.request:封存当前请求数据的对象。由tomcat服务器创建

  • 3.session:此对象用来存储用户的不同请求的共享数据

  • 4.application:ServletContext对象,一个项目只有一个。存储用户共享数据的对象,以及完成其他操作。作用域在项目内

  • 5.response:响应对象,用来响应请求处理结果给浏览器的对象

  • 6.out:响应对象,jsp内部使用。带有缓冲区的响应对象,效率高于response对象

  • 7.page:代表当前jsp页面的对象,相当于java中的 this

  • 8.exception:异常对象,存储了当前运行的异常信息

    注意:使用此对象需要在page指定中使用属性isErrorPage="true"开启

  • 9.config:也就是ServletConfig对象,主要是用来获取web.xml中的配置数据,完成一些初始化数据的读取


四个作用域对象

pageContext:
  • 当前页面
  • 解决了当前页面内的数据共享问题
  • 获取其他内置对象
request:
  • 一次请求
  • 一次请求的servlet的数据共享
  • 通过请求转发将数据流转给下一个servlet
session:
  • 一次会话
  • 一个用户的不同请求的数据共享
  • 将数据从一次请求流转到其他请求
application:
  • 项目内
  • 不同用户的数据共享问题。
  • 将数据从一个用户流转给其他用户

作用:数据流转


JSP的路径

在jsp中资源路径可以1.使用相对路径完成跳转。但是

  1. 资源的位置不可随意更改
  2. 需要使用…/来进行文件夹的跳出。比较麻烦

2.使用绝对路径

  • /虚拟项目名/项目资源路径

注意:在jsp中资源的第一个/表示的是服务器根目录,相当于localhost:8080

猜你喜欢

转载自blog.csdn.net/wintershii/article/details/83049871
今日推荐