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="要转发的资源"/>
相关推荐
这周也會开心5 分钟前
云服务器安装JDK、Tomcat、MySQL
java·服务器·tomcat
hrrrrb1 小时前
【Spring Security】Spring Security 概念
java·数据库·spring
小信丶1 小时前
Spring 中解决 “Could not autowire. There is more than one bean of type“ 错误
java·spring
sdgsdgdsgc1 小时前
Next.js企业级应用开发:SSR、ISR与性能监控方案
开发语言·前端·javascript
周杰伦_Jay2 小时前
【Java虚拟机(JVM)全面解析】从原理到面试实战、JVM故障处理、类加载、内存区域、垃圾回收
java·jvm
rit84324995 小时前
基于MATLAB的模糊图像复原
开发语言·matlab
fie88895 小时前
基于MATLAB的声呐图像特征提取与显示
开发语言·人工智能
程序员小凯5 小时前
Spring Boot测试框架详解
java·spring boot·后端
豐儀麟阁贵6 小时前
基本数据类型
java·算法
_extraordinary_6 小时前
Java SpringMVC(二) --- 响应,综合性练习
java·开发语言