JavaEE jsp技术学习

JavaEE jsp技术学习

1.1 jsp的简介

JSP全名为Java Server Pages,中文名叫Java服务器页面,其根本是一个简化的Servlet设计,是由Sun Microsystem

s公司倡导、诸多公司一起建立的一种动态网页技术标准。

JSP特点:

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

jsp的访问原理:

浏览器发起请求,请求JSP,请求被Tomcat服务器接收,执行JspServer将请求的JSP文件转译成对应的Java文件(也就是Servlet),然后执行转译好的Java文件。

1.2 jsp的page指令

作用:设置jsp转译的时候的一些配置信息。

常用的jsp page指令:

<%@page language="java"%><%--声明转译的语言 --%>
<%@page import="java.util.*,java.lang.*"%> <%--声明转译时导入的java包文件 --%>
<%@page pageEncoding="utf-8"%> <%-- 设置jsp的数据保存的编码格式 --%>
<%@page contentType="text/html; charset=utf-8"%> <%-- 设置数据的响应编码格式--%>
<%@page session="false"%> <%-- 设置session为关闭,默认为true--%>
<%@page isErrorPage="true"%> <%-- 开启Exception异常对象,默认为false--%>
<%@page errorPage="xxx.jsp"%><%--指定当jsp页面运行出现异常错误时跳转的页面--%>

jsp中还有其他指令,后续会更新。

1.3 jsp的全局代码块 局部代码块 脚本段语句

<%@page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--局部代码块
	声明方式:<% java代码  %>
	特点:
		使用局部代码块声明的Java代码会被原样转译到_jspService()方法中,也就是局部代码。
--%>
<%
	int a=123;
	System.out.println(a);
	test();//调用在全部代码块中声明的方法
%>
<%--全局代码块
	声明方式:<%! java代码  %>
	特点:
		全局代码块中声明的java代码在被转译时,会被转译成jsp对应的java文件的全局代码。
	作用:
		声明方法和全局变量。
	注意:
		使用全局代码块声明方法,使用局部代码块调用方法。
--%>
<%!
	int b=456;
	public void test(){
		System.out.println("全局代码块的声明");
	}
%>
<%--jsp中Java脚本段(表达式)
	声明方式:<%=变量名/方法名 %> 
	作用:
		将java代码的变量值或者方法的返回值响应给浏览器
--%>
<%=a %>

1.4 jsp的注释

在jsp中通常有五种注释:

  • HTML注释:会被转译也会被浏览器响应,但是注释中的内容浏览器不执行。
  • CSS注释:会被转译也会被浏览器响应,但是注释中的内容浏览器不执行。
  • js注释:会被转译也会被浏览器响应,但是注释中的内容浏览器不执行。
  • java注释:会被转译,但不会执行。
  • jsp注释:不会被转译,也不会被执行。

1.5 jsp的静态引入和动态引入

如果不同的jsp界面使用相同的资源,如果将资源在每个jsp页面都单独声明,会时代码冗余过多,不利于代码的升级和维护。那么,就需要静态引入和动态引入。

静态导入的使用:

<%@include file="被引入jsp文件的相对路径" %>

静态导入的特点:被引用jsp文件和原有jsp文件被转译成一个Java文件。

注意:静态引入的相关jsp文件中不能声明原jsp文件已有的同名变量。

动态引入的使用:

<jsp:include page=“被引入jsp文件的相对路径”></jsp:includejsp>

动态引入的特点:被引入的jsp文件会被单独转译,原有的jsp文件会调用被引入的jsp文件。因此,可以避免静态导入中同名变量问题的出现。

从以上内容我们可以看到,静态引入和动态引入都达到了相同的效果,实现了不同jsp文件之间的资源共享。但是,从两者的特点的的角度讲,静态引入的效率更高一些,如果不存在同名变量问题,推荐使用静态引入。

1.6 jsp的forward标签(页面转发)

不同的jsp在处理请求时,有可能会将当前的请求转发给另外的jsp进行处理,使用forward动作命令即可:

<jsp:forward page="目标jsp的相对路径">
    <jsp:param value="" name=""/>
</jsp:forward>

特点:从当前jsp跳转到另外一个jsp

注意:jsp:forward标签中除了jsp:param子标签外不能有其他任何内容,否则会报错!

jsp:param子标签用于声明转发的附带数据

1.7 jsp的内置对象

什么是内置对象?

jsp在转译成其对应的java文件(也就是Servlet)时,会默认在_jspService()方法中声明创建几个对象,这些对象被称为内置对象。

内置对象的特点:

我们可以在jsp页面中声明java局部代码块,在代码块中直接使用内置对象。

注意:对象的名字必须是转译好的java文件中声明的对象名。

内置对象有哪些?

  • request:封存了请求的相关数据 ,由服务器创建

  • response:封存了响应相关的数据

  • out:响应数据的对象,底层使用了缓冲区,效率高于response

  • session:解决了同一用户不同请求之间的数据共享问题,由服务器创建

  • page: this,指代本次请求被转译的Servlet对象

  • pageContext:页面上下文对象,此对象封存了另外的8个对象,一个jsp页面拥有一个该对象,每次请求该对象都被重新创建。作用域为当前jsp界面。

  • config:Servlet中ServletConfig对象,使用此对象完成资源的初始化

  • application:Servlet中ServletContext对象,为所有用户共享

  • exception:jsp页面的异常对象,封存了异常信息

1.8 请求转发和重定向中绝对路径和相对路径

Servlet中的绝对路径和相对路径:

在请求转发中,转发地址根目录为项目目录,因此绝对路径只需写项目下的路径即可

在重定向中,重定向地址根目录为webroot目录,因此请求转发绝对路径要添加项目名

一般不建议使用相对路径

jsp中的绝对路径和相对路径:

jsp中第一个斜杠表示服务器根目录

myeclipse中创建的jsp文件会自动生成路径代码basePath,该值为当前项目根目录,并且在head标签中使用了

<base href="<%basePath%>">

相当于将当前页面的资源全部默认定位为从项目跟目录开始查找,我们就不需要写第一个斜杠了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值