jsp 学习和使用

介绍

JSP 全名为 Java Server Pages, 中文名叫 java 服务器页面,本是一个简化的 Servlet 设计, 它 [1] 是由 Sun Microsystem倡导、 许多公司参与一起建立的一种动态网页技术标准。

jsp 可以动态的处理页面上的数据, 所以说是一种动态网页技术

特点

  • 本质上还是一个servlet
  • 跨平台, 一次编写 到处运行
  • 组件跨平台
  • 健壮性和安全性

原理

浏览器发起请求, 请求 JSP, 请求被 Tomcat 服务器接收, 执行JspServlet 将请求的 JSP 文件转义成为对应的 java 文件(也是Servlet), 然后执行转义好的 java 文件

语法和指令

page指令

page指令负责jsp的配置工作

<%@page 属性名="属性值" 属性名="属性值" ...%>
/*
属性介绍
language: jsp 要被转义的语言
import: 声明转义之后的java文件要导入的包
pageEncoding: 设置jsp文件的数据编码格式
contentType: resp的转义到的servlet响应格式
session: 设置转义的servlet中是否开启session支持, 默认开启
errorPage: 设置jsp运行错误之后跳转的页面
extends: java要继承的父类
*/
java局部代码块
<%
// 这里是java代码块
System.out.println("这里是java语句");
%>

特点: 局部代码块声明的代码块中声明的java代码会被原样转义到jsp对应的servlet文件的_JspService方法中, 代码块中声明的变量是局部变量

java全局代码块
<%!
    // 这里是全局方法块
    public void test() {
    	System.out.println("我声明了一个方法");
	}
%>

特点: 声明的全局代码作为类的属性和方法被转义到对应的servlet中

java变量和jsp数据流转
<%String str = "这里是要被jsp输出的变量"%>
<%--使用尖括号加百分号加等号的方式--%>
<P> <%=str%> </p>

注意: 不要在使用之后添加分号

jsp的静态引入
<%@inlucde file="includeStatic.jsp" %>
<%-- file路径为相对路径 --%>

特点: 在jsp转义的时候, 会把被静态引入的jsp文件, 和自身文件转义成一个servlet文件

注意: java代码块很可能会发生重名变量和重名方法

动态引入
<jsp:include page="要引入的jsp文件的相对路径"></jsp:include>

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

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

转发
<jsp:forward page="要转发的jsp文件的相对路径">
	<jsp:param value=“aaa” name=“str” />
</jsp:forward>

一次请求,地址栏信息信息不变. 和servlet请求转发相同

注意: 两个标签中间, 除了数据流转用的子标签之外, 其他任何标签都会报错

九大内置对象

内置对象: 是jsp文件转义成对应的servelt 文件的时候, 自动生成并声明的对象.

注意: 内置对象在jsp页面中使用, 使用局部代码块或者脚本段语句来使用. 不能够在全局代码块中使用. 内置对象是 _jspService方法中的局部变量

内容:
  • pageContext 页面上下文对象, 封存了其他内置对象, 也就是封存了当前jsp的运行信息.
    注意: 每个jsp都有单独一个pageContext对象. 作用域: 当前对象
  • request 封存了当前请求数据的对象. 由tomcat服务器创建
  • session 此对象用来存储用户的不同请求的共享数据. 一次会话
  • application servletContext对象, 一个项目只有一个. 存储用户的共享数据, 项目内
  • response 响应对象, 用来响应数据给浏览器
  • out 响应对象, jsp内部使用, 带有缓冲区的响应对象. 效率高于response对象
  • page 代表当前servlet对象, 相当于servlet中的this
  • exception 异常对象, 存储了当前运行的异常信息
    注意: 使用此对象, 需要在page指令中使用isErrorPage=“true”开启
  • config: 也就是servletConfig对象
四个作用域对象
  • pageContext: 当前页面内的数据共享问题
  • request: 一次请求, 相同请求数据共享. 通过请求转发, 将数据流转给下一个servlet
  • session: 一次会话, 不同请求数据共享
  • application: 项目内, 不同用户数据共享
jsp中的路径使用
  1. 使用绝对路径 /项目名/资源名. 在jsp中/ 代表服务器加端口, 也就是服务器根目录
  2. 使用base标签, 取代服务器根目录, 变为项目根目录
<%
	String path = request.getContextpath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<base href="<%=basePath%>">
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值