Java学习【web基础-JSP1-JSP中的各种元素】

注意:jsp文件仅仅是一个草稿文件,jsp中为我们提供的那些api也都是草稿api,最终jsp中的语法会变成之前我们学习过的java语法。

JSP中的各种元素【脚本元素(注释元素),指令元素,动作元素】
脚本元素

<% %>
在该脚本段中所以的内容,最终会出现在一个java方法中。
所以,在java的方法中能写什么内容,在<% %>中就能写什么内容
所以,在java的方法中不能写什么内容,在<% %>中也就不能写什么内容

Java方法中能写的内容:局部变量,局部内部类,各种程序结构(if for..)
Java方法中不能写的内容:方法,static,4种访问修饰符

<%! %>
该脚本段中写的内容,会出现在类之内,方法之外。
所以,在java的类之内,方法之外能写什么内容,在<%! %>中就能写什么内容
所以,在java的类之内,方法之外不能写什么内容,在<%! %>中也就不能写什么内容

java的类之内,方法之外能写:属性 方法 块 内部类 
java的类之内,方法之外不能写:程序结构   表达式

<%= %>
在该脚本端中所写的内容,最终会成为out.print()的参数。
所以在java的方法参数中,能写什么,<%= %>就能写什么。
所以在java的方法参数中,不能写什么,<%= %>也就不能写什么。

java的方法参数能写:表达式
java的方法参数不能写:除了表达式以外,都不能写

<%--   --%>
该脚本用于告诉web服务器,在把一个jsp文件解析出一个java源文件的过程中,忽略该脚本中的内容,也就是说,<%-- --%>脚本中的内容根本不会出现在java源文件中。

对比: //   /* */ 注释的内容会出现在java源文件中。

对比: <!-- --> 不但会出现在java源文件中。而且还会被web服务器发送给客户端浏览器。

注意以上3种注释是有<!-- -->能在客户端浏览器的源代码中看到。所以有2个术语:

客户端注释: <!-- -->
服务器端注释  <%-- --%>    //     /* */

注意,jsp只有在第一次被访问的时候,才会实例化出对象,第2,3,4,5…n次访问同一个jsp页面时,都使用的是第一次已经创建好的实例!
这里写图片描述

指令元素
【page(<%@ page…%)>;include(<%@ include file=”…”%>);taglib(<%@ taglib url=”tabLibraryURL”/prefix=”tagPrefix”%>)】
所有的指令元素,都是<%@ %>

page,学习page指令元素,就是学习page指令元素的属性.

1.import
用于引入外包的class

这里写图片描述

2.buffer
用于控制当前jsp页面的缓冲区大小,默认值为8kb
缓冲区的作用:提高读写速度。
缓冲区就是用来积攒数据的地方。

缓冲区中的数据,何时会被发送到目的地
2.1缓冲区已经放满数据了,再多放一个字节。

这里写图片描述

2.2强制发送缓冲区中的数据。

这里写图片描述

3.contentType
用于告诉浏览器,服务器给你发送的是什么格式的数据。
<%@page pageEncoding="gbk" contentType="application/excel; charset=ISO-8859-1" %>
<%
// 该行代码用于控制,下载文件的名字
    response.setHeader("content-disposition","attachment;filename=abc.xls");
%>
4.errorPage
当前jsp页面中抛出异常的时候,指定的跳转页面

这里写图片描述

5.isThreadSafe
控制web服务器是否对该jsp页面支持并发,取值为true就表示支持并发

这里写图片描述

6.pageEncoding
    6.1 Jsp-->java过程中,就是使用该属性指定的码表来生成java源文件的。
    6.2 告诉浏览器使用什么码表。

include: 静态包含(动态包含参见后面)

另:
保证打开jsp文件时,只有代码编辑界面
window-->preference-->file-->file association-->*.jsp-->MyEclipse JSP Editor(default)

保证jsp一旦创建出来,页面的编码方式就默认为utf-8
window-->preference-->jsp-->ISO 10646/Unicode(utf-8)

这里写图片描述

taglib (参见后面)

动作元素:

所有动作元素都是 <jsp:xxx > 
<jsp:useBean /> <jsp:setProperty /> <jsp:getProperty />

学习<jsp:useBean />之前,必须要知道,什么是javabean。
Javabean就是一个普普通通的java类而已。(不是什么新的技术,也不是什么新的api),只不过这个类要符合一些规范而已。

JavaBean的规范:

 1. 所有属性必须私有化。
 2. 必须为私有属性提供公共的getter(获取器)和setter(设置器)
 3. 必须提供一个公共的无参的构造器。
 4. 必须实现序列化接口: java.io.Serializable

这里写图片描述

这里写图片描述

为什么非要把java代码,都用相应的jsp标记替换呢? 因为,在将来要学习的mvc架构中,要求jsp页面上不得出现java代码!

注意,<jsp:useBean/> 会回调公共的无参构造器,等价于实例化对象。
注意,<jsp:setProperty /> 会回调对应的setter方法,等价于给对象的属性赋值。
注意,<jsp:getProperty /> 会回调对应的getter方法,等价于获取对象的属性,并且发送给客户端浏览器。

动态包含

<jsp:include />

这里写图片描述

经典面试题: 静态包含与动态包含的区别:

1.静态包含是先包含,后编译;  最终只能生成一个java源文件!class也是一个
动态包含是先编译,后包含。最终生成多个java源文件!class也是多个
2.静态包含不能用变量名作为路径; 动态包含就可以用变量名作为路径。

这里写图片描述

3.静态包含不能给被包含的目标jsp页面传递参数;动态包含就可以!
4.一个页面上的多个静态包含的页面中,不能有同名的变量;动态包含就可以!

如果有一种场景,既能使用静态包含,又能使用动态包含,那么应该如何抉择??
应该使用静态包含! 因为静态包含总共只会编译一次,速度快!

转发

<jsp:forward />

这里写图片描述

<jsp:param /> 

我们先学习,如何给服务器传递请求参数!

1.通过表单。

这里写图片描述

2.不需要表单,直接在url后面加上?参数名=参数值&参数名2=参数值2…..

这里写图片描述

3.直接在超链接的url后面写出参数即可!

这里写图片描述

4.通过window.location=”url?请求参数”

这里写图片描述

5.我们要学习的<jsp:param>也是用来给服务器传递参数的,但是该标记必须搭配<jsp:include />或者<jsp:forward />

这里写图片描述

注意,如果没有给被动态包含的页面传递参数,则<jsp:include>和</ jsp:include>之间不能有任何内容,必须贴紧

这里写图片描述

注意,如果没有给被转发的目标页面传递参数,则<jsp:forward>和</ jsp: forward >之间不能有任何内容,必须贴紧
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值