JavaWeb开发(九)JSP技术

1. JavaWeb JSP技术

1.1. JSP简介

1.1.1. 什么是JSP

JSP全名为Java Server Page 是为了简化servlet的工作而出现的替代品。在JSP中java代码与HTML共同存在,其中HTML代码用于展示静态的内容,java代码用来展示动态的内容。

1.1.2. 为什么出现JSP技术

1997年Java Web中只有servlet,生成html技术也需要在servlet中完成,虽然servlet也可以完成所有的输出工作,但是使用过程比较麻烦,部署也比较复杂。为了克服这些缺点1999年SUN公司推出了JSP技术。该技术在生成HTML代码的时候相比servlet方便了许多。

1.1.2. 对于servlet和JSP技术的理解:

servlet:在java代码中嵌入html代码,更擅长编写java业务代码JSP:在html中嵌入java代码,更擅长页面展示。

1.2. jsp运行原理

jsp在第一次被访问时会被Web容器翻译成servlet,即jsp本质上就是Servlet过程。

第一次访间---->helloservlet.jsp----helloservlet_jsp.java---->编译运行被翻译后的servlet在Tomcat的work目录中可以找到,使用IDEA会单独为项目维护一个目录。

通过观察发现jsp会转化为java文件,并且间接的继承了HttpServlet,实现了其中的主要方法,init、service、 destory,并且将html代码通过java方式输出给浏览器。

1.3. JSP脚本和注释

1.3.1. JSP脚本

复制代码
1.<%java代码%>   ----- 内部的java代码翻译到service方法的内部
2.<%=java变量或表达式>  -----会被翻译成service方法内部out.print()
3.<%!java代码%>  ----会被翻译成servlet的成员的内容

1.3.2. JSP注释

复制代码
1. Html注释:<!--注释内容--> ---可见范围jsp源码、翻译后的servlet、页面显示html源码
2. 2.java注释://单行注释 /*多行注释*/  --可见范围jsp源码 翻译后的servlet
3. 3.jsp注释:<%--注释内容--%> -----ī可见范围 jsp源码可见


1.4. jsp指令(3个)

jsp的指令是指导jsp翻译和运行的命令,jsp包括三大指令:

1.4.1. page指令

属性最多的指令(实际开发中page指令默认)属性最多的一个指令,根据不同的属性,指导整个页面特性。

格式:

javascript 复制代码
<%@ page 属性名1="属性值1" 属性名2="属性值2" ...%>

常用属性如下:

(1)language:jsp脚本中可以嵌入的语言种类;

(2)contentType:response.setContentType(text/html;charset=UTF-8);

(3)session:是否jsp在翻译时自动创建sessionimport:导入java的包;

(4)errorPage:当当前页面出错后跳转到哪个页面。

javascript 复制代码
<%@ page import="com.zzs.session.SessionServlet " %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<%@include file="/include.jsp" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h2>hello jsp</h2>
<!-- html注释 -->
<jsp:include page="/include1.jsp"></jsp:include>
<%
    //java单行注释
    /*
    java多行注释
     */
    String str = "hello jsp";
    int i = 0;
    i++;
%>
<%-- jsp注释 --%>
<%="变量i=" + i%>
<%!int x = 0;%>
</body>
</html>

1.4.2. include指令

页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp五面中格式:

javascript 复制代码
<%@ include file="被包含的文件地址"%>
javascript 复制代码
<jsp:include page="/include1.jsp"></jsp:include>

1.4.3. taglib指令

在jsp页面中引入标签库(jst1标签库、struts2标签库)格式:

javascript 复制代码
<%@ taglib uri="标签库地址"prefix="前缀"%>
javascript 复制代码
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

1.5. JSP隐式对象概述

1.5.1. 什么是JSP隐式对象

当jsp被翻译成servlet的时候,service方法内部有九个对象定义并初始化,这九个对象被称为隐式对象。

1.5.2. 九大隐式对象


1.5.3. 九大隐式对象-out对象

1.5.4. JSP九大隐式对象-epageContext对象

pageContext对象就是jsp页面的上下文对象

(1)pageContext是一个域对象

setAttribute(String name, Object obj)

getAttribute(String name)

removeAttrbute(String name)

(2)pageContext可以向指定的其他域中存取数据

setAttribute(String name,Object obj,int scope)

getAttribute(String name,int   scope)

removeAttrbute(String name,int scope)

findAttribute(String name)//获取顺序依次从pageContext域,request域

javascript 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
//    pageContext.setAttribute("name","xiaoming");
//    pageContext.setAttribute("name","zhangsan",PageContext.REQUEST_SCOPE);
    pageContext.setAttribute("name","lisi",PageContext.SESSION_SCOPE);
    pageContext.setAttribute("name","wangwu",PageContext.APPLICATION_SCOPE);
%>
<%=pageContext.getAttribute("name",PageContext.REQUEST_SCOPE)%>
<%=pageContext.getAttribute("name",PageContext.APPLICATION_SCOPE)%>
<%=
    pageContext.findAttribute("name")
%>
</body>
</html>

1.5.5. JSP标签

(1)页面包含(动态包含):

javascript 复制代码
<jsp:include page="被包含的页面"/>

(2)请求转发:

javascript 复制代码
<jsp:forward page="要转发的资源"/>
相关推荐
2301_803554524 分钟前
c++中的绑定器
开发语言·c++·算法
海棠蚀omo12 分钟前
C++笔记-位图和布隆过滤器
开发语言·c++·笔记
杰哥技术分享30 分钟前
Yii2 安装-yii2-imagine
开发语言·yii
五岳32 分钟前
深入研究使用DozerMapper复制List<Ojbect>前后元素类型不一致的问题
java·爬坑
人生在勤,不索何获-白大侠41 分钟前
day15——Java常用API(二):常见算法、正则表达式与异常处理详解
java·算法·正则表达式
Bug退退退1231 小时前
RabbitMQ 高级特性之消息确认
java·分布式·rabbitmq
The_cute_cat1 小时前
JavaScript的初步学习
开发语言·javascript·学习
Naiva1 小时前
【小技巧】Python + PyCharm 小智AI配置MCP接入点使用说明(内测)( PyInstaller打包成 .exe 可执行文件)
开发语言·python·pycharm
云动雨颤1 小时前
Java并发性能优化|读写锁与互斥锁解析
java
梦子要转行1 小时前
matlab/Simulink-全套50个汽车性能建模与仿真源码模型9
开发语言·matlab·汽车