JSP的基础知识

Java server page
作用
代替Servlet程序 回传html数据
因为Servlet程序回传jtml数据是一件非常繁琐的事情
开发成本和维护成本都极高

jsp本质上是一个Servlet程序
是Servlet通过输出流把Html数据回传到客户端

JSP头部的page指令 解决jsp乱码问题
jsp的page指令可以修改jsp页面中的一些重要的属性或者行为
属性
language jsp翻译成什么文件 暂时只支持Java
contentType jsp返回的数据类型是什么 也是源码
<% request.setCharacterEncoding(“UTF-8”); %>
<%@ page contentType=“text/html; charset=utf-8”%>
在jsp头部插入这一句 解决乱码问题
response.setContentType 参数值
pageEncoding jsp页面文件本身的字符集
import 导包 导类(与java相同)

以下两个属性是给out输出流使用(不建议改)
aotoFlush 当out输出缓冲区满了以后 是否自动刷新缓冲区 默认值是true
buffer 设置out缓冲区大小 默认是8KB

errorPage jsp页面运行时出错 jsp自动跳转的位置
iserrorPage 设置是否是errorPage页面 如果是true 可以获取异常信息

session 设置访问当前jsp页面是否会创建HttpSession对象 默认是true
session属性 设置jsp翻译出来的Java类默认继承谁

JSP声明脚本(极少使用)
<%!声明java代码 %>
可以给jsp翻译出来的java类定义属性和方法 甚至静态代码块 内部类等

表达式脚本(常用)
<%= 表达式 %>
表达式脚本的作用是 在jsp页面上输出数据//就是out.print(表达式)
特点:
1.所有表达式脚本都会被翻译到_jspService()中
2.表达式脚本都会被翻译为out.print(表达式) 输出到页面上
3.由于表达式脚本翻译的内容都在 _jspService()中 所以_jspService()中的对象 都可以直接使用
4.表达式脚本中的表达式不能以分号结束

代码脚本
<% Java语句 %>
1.代码脚本的作用是可以在jsp页面中编写我们自己需要的功能(写的是Java语句) 都在_jspService()中
2._jspService()中可以用的对象 都可以在代码脚本中使用
3.代码脚本还可以由多个代码脚本块组合完成一个完整Java语句
4.代码脚本还可以和表达式脚本一起组合在jsp页面输出数据

jsp三种注释
1.<!-- 这是html注释 -->
//翻译为out.write("<!-- 这是html注释 -->");
2.//Java注释
Java注释会被翻译到Java源代码中
3.<%-- 这是jsp注释–%>
jsp注释可以注释掉jsp页面所有代码
其中 只有html注释可以被查看源代码看到

九大内置对象
jsp中的内置对象 是指Tomcat在jsp页面成为Servlet源代码后 内部提供的九大对象 叫内置对象
request
response
pageContext
session
application
config
out
page
exception

四大域对象
四个域对象分别是pageContext、request、session、application
//跳转页面就没有了
pageContext(PageContextImpl类):当前jsp页面范围内有效
//刷新一次就没有了
request(HttpServletRequest类):一次请求有效
//关闭浏览器就没有了
session(HttpSession类):一个会话范围内有效(打开浏览器访问服务器,直到关闭浏览器)
//重启服务器就没有了
application(ServletContext类):整个web工程范围内都有效 只要web工程不停止 数据都在
域对象是可以像Map一样存取数据的对象,四个域对象功能一样
不同的是它们对数据的存取范围

虽然四个域对象都可以存储数据 但在使用上存在首先顺序的
pageContext===》》》request===》》》session===》》》application

原因:原先保存的数据 在不用的时候可以在最短时间内最快释放

jsp中out()输出和response.getWriter().write()输出的区别
response表示相应 我们常用于返回给客户端内容(输出)
out也是给用户做输出使用

当jsp页面中所有代码执行完成后会做以下两个操作
1.执行out.flush()操作会把out缓冲区中的数据追加写入到response缓冲区末尾。
2.会执行response的刷新操作,把全部数据写给客户端

底层都是用out输出 所以一般情况下 一般使用out输出 避免打乱顺序

out.write()与out.print()怎么进行选择
out.write()输出字符串没有问题 //因为会把其他类型的数据翻译为ascll对应的字符
out.print()输出任意数据都没有问题 //先进性逻辑运算后转化为字符串调用out.write()输出

即在jsp中优先使用out.print()输出

静态包含
存在一改全改的需求
实现
一个单独的jsp页面 只维护一份 改一处 其他统一被修改
即包含引入
<%@ include file="/include/foot.jsp"%>

静态包含的特点:
1.静态包含不会翻译被包含的jsp页面
2.静态包含其实是把被包含的jsp页面拷贝一份到包含的位置执行输出

动态包含
<jsp:include page="/include/foot.jsp"></jsp:include>
表面上完全一样
1.同样是在对应位置翻译成java代码
2.动态包含使用代码调用jsp页面执行输出
3.动态包含还可以传递参数

//一般使用静态包含 因为随着技术的发展 我们目前只需要jsp输出页面数据

jsp的请求转发
<jsp:forword page=“请求转发的路径”></jsp:forword>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值