1. jsp: Java Server Page
jsp 文件 必须 由 应用服务器 部署(启动项目) ,部署后 用浏览器才能访问
2. jsp 运行原理:
idea 编译 部署项目的 位置:
C:\Users\74163\AppData\Local\JetBrains\IntelliJIdea2021.1\tomcat\c5b2c807-b7a6-4948-a9ca-71919e55968b
这个 目录 下的 \work\Catalina\localhost\ROOT\org\apache\jsp
index_jsp.java
index_jsp.class
运行原理: jsp文件在第一次被访问时, jsp引擎先将它编译成一个Servlet源程序 即(.java文件)
再把这个Servlet源程序 编译成 字节码文件 即(.class 文件)
然后 由Web容器来装载和解释这个字节码文件
3. 欢迎页面: (web.xml 中 配置)------- 但 一般 欢迎界面 就是 index.jsp
index.html
index.jsp
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
4. jsp 语法:
<% 代码片段 %>
注释: 在浏览器页面,中 注释均不显示
<!-- 注释内容 --> html 注释, 这种注释在查看页面 源文件时 可以看见注释内容
<%-- 注释内容 --%> jsp 注释, 这种注释在查看页面 源文件时 注释内容不可见
表达式:
<%= %> 表达式 , 表达式的值 会转为String, 不能使用 分号; 结尾
声明: (很少使用)
<%! 声明变量,常量,声明函数 %>
指令:
<%@ %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> 设置页面属性
<%@ include file="" %> 包含哪些页面
<%@ taglib uri="" %> 引入标签库 (后期 jstl 会使用)
form 是 表单:
action 提交到的地址
method 提交方式 post| get , post 方式比get 要安全
表单元素: 表单元素 必须 添加 name 属性
文本框 type="text"
密码框 type="password"
单选按钮 type="radio"
多选按钮 type="checkbox"
下拉框 select | option
多行文本框 textarea
文件域 type="file"
按钮: 按钮 一般 不需要增加 name 属性
type="submit" 提交按钮
type="button" 普通按钮
type="reset" 重置按钮
5. jsp 内置对象 (9个内置对象)
out: jsp输出对象,
request: 请求对象, 利用该对象的request.getParameter() 可以获得用户的请求参数
response: 响应对象, 利用该对象的 sendRedirect() 可以实现 重定向
session : 会话对象
[page: 指向当前jsp的页面
pageContext: jsp的上下文对象
config: ServletConfig对象
application: ServletContext上下文对象
exception: 异常对象
]
6. 转发 与 重定向
重定向: A->B->C
A 向B 发出请求(第一次) 然后B 通过重定向的方式跳转到C
但B不会直接向C 发出请求, 而是 先返回到A,通过A向C 发送请求(第二次请求)
转发: A->B->C
A向B 发出请求(第一次),然后B通过转发的方式 跳转到C, B 直接发出请求到C
转发与重定向都可以实现 页面的跳转,但 略有不同
a. 请求次数不同:
重定向比请求转发 多请求一次
b. 地址栏不同
重定向: 两次请求, 因此 地址栏 会发生改变 显示 的是 C.jsp
转发: 仅是服务器内部的跳转, 因此 地址栏 不变 (显示的依然是B.jsp,但是 此时的内容为C.jsp)
c.是否保留第一次请求时的数据:
重定向 因为发送两次请求, 因此 不会保留第一次的请求数据
转发 只发送一次请求,因此 会保留第一次的请求数据
7. jsp 四大作用域对象
范围 由小变大 : pageContext<request<session<application
pageContext 当前jsp 页面范围内有效
request 一次请求当中有效
session 一次会话中有效(关闭浏览器时 代表 会话结束)
application 整个web工程范围内有效(只要不重启tomcat,数据一直存在) ------ 统计访问次数
scope.jsp scope2.jsp
四大 作用域对象 通过 setAttribute(键,值) 设置 键值信息
通过 getAttribute(键) 获得 值的信息 (注意要进行 强制类型转换)