浅谈JSP

浅谈JSP

jsp的局部代码块

<%
	//声明java代码块
	int i = 80;
	if(i>90){
%>
	<h1>优秀</h1>
<%  } else{ 
		function1();		//调用function1方法	
 %>
	<h1>有待进步</h1>
<%  }  %>

jsp的全局代码块

<%int i = 80;
	public void test(){
		System.out.println("全局代码块");
	}
%>

Jsp 的访问原理:

浏览器发起JSP页面的请求,
tomcat去项目中找Servlet,找不到
然后去tomcat中去找,
在这里插入图片描述
在这里插入图片描述
执行JspServlet 将请求的 JSP 文件转义成为对应的 java 文件(也是Servlet),
然后执行转义好的 java 文件。

使用:

JSP 负责页面展现,Servlet 负责业务逻辑处理。

Jsp 的9大内置对象:

  1. PageContext 对象
//界面的上下文对象
//封存了其他的内置对象;封存了当前jsp的运行信息

//注意:每一个jsp文件单独拥有一个pageContext对象

//作用域:当前页面
  1. Request 对象
//封存了当前请求数据的对象。
//由tomcat服务器创建;

//作用域:一次请求
  1. Session 对象
//此对象用来存储对象。
//由tomcat服务器创建。

//作用域:一次请求
  1. Application 对象
//ServletContext对象,一个项目只有一个,
//存储用户共享数据的对象、操作

//作用域:项目内
  1. Response 对象
//响应对象
//用来响应请求处理结果给浏览器对象
  1. Out 对象
//响应对象
//带有缓存区的响应对象,效率高于response对象

//作用域:jsp内部使用
  1. Page 对象
//代表当前jsp的对象;相当于java的this
  1. Exception 对象
//异常对象
//存储了当前运行的异常信息

//注:使用此对象需要在page指定中使用属性isErrorPage="true"开启
  1. Config 对象
//ServletConfig对象,
//主要是用来web.xml的配置数据

//完成一些初始化数据的读取
4个作用域对象 作用域 使用场景 流转方式
pageContext 当前界面 解决了当前页面内的数据共享 获取其他内置对象
request 一次请求 一次请求的servlet的数据共享 通过请求转发给下一个servlet
session 一次会话 一个用户的不同请求的数据共享 将数据从一次请求转发给其他请求
application 项目内 不同用户的数据共享问题 将数据从一个用户流转给其他用户

作用:数据流转

Jsp 的语法和指令:

  1. JSP 的 page 指令
/*配置jsp文件转译的相关参数*/
<%@page 属性名="属性值" 属性名="属性值" ... %>

<%@page language="java"		//声明java要被转译的语言
		import="java.util.*, java.lang.*"		//转译的java文件需要导入的jar包
		pageEncoding="utf-8"		//当前jsp文件保存的编码格式
		contentType="text/html; charset=utf-8"		//设置JSP数据响应给浏览器是,浏览器的解析和编码格式
		
		session="true"		//设置转译的servlet中是否支持开启session支持;默认开启,true表示开启
		errorPage="error.jsp"		//设置jsp配置运行错去跳转的界面
		extends="xxx.yyy.zzz"		//设置jsp转译的java文件要继承的父类		
		 ... %>
  1. JSP 的 taglib 指令

被引入的jsp文件不能定义当前jsp界面使用的java代码块声明的同名变量
3. Jsp 的静态引入(JSP 的 include 指令)

/*会将引入的jsp文件和当前的jsp文件转译成一个servlet文件
 *在网页中显示合并后的效果
 *静态引入的jsp文件不会单独转译成servlet文件
 */
<%@include file="foot1.jsp" %> 	//可点击

在这里插入图片描述

静态/动态引入
优点:
降低jsp代码的冗余,便于维护升级

  1. Jsp 的动态引入
/*动态引入的jsp文件能够转译成servlet文件
 *并被当前jsp文件转译成的servlet文件调用
 *在网页中显示合并后的效果
 *
 *注:动态引入允许文件中声明同名变量
 */
<jsp:include page="foot2.jsp" ></jsp:include>
  1. 页面转发(forword 标签)
/*一次请求、地址栏信息改变*/
/*转发标签的中间除了写子标签 <jsp:param /> 不会报错,其他任意字符串都会报错*/
<jsp:forward page="foreard.jsp">
	<jsp:param name="str" value="转发信息">
</jsp:forward>

在这里插入图片描述

jsp中的相对资源路径

相对路径: …/…/资源路径
绝对路径: /虚拟项目名/资源路径

第一个 “ / ” 表示服务器的根目录

jsp自带的全局路径声明:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
	<base href="<%=basePath%>">
	...
...

作用:给资源前面添加项目路径

猜你喜欢

转载自blog.csdn.net/Xxacker/article/details/85056864
jsp