Jsp简介

1.Java Server Page(JSP)是由Sun公司倡导、许多公司参与共同创建的一种动态网页技术标准。

2.Jsp在传统的网页HTML文件中加入java程序片段(scriptlet)和JSP标签就构成了JSP网页。

3.Jsp的主要作用是简化了java服务器端程序的开发。

4.Jsp本质上就是一个servlet,服务器会根据jsp产生一个java文件和一个class文件,文件保留在tomcat的work目录下。

了解完Jsp页面的执行流程之后,我们来操作代码,需要分析一下,为什么说Jsp就是Servlet,我们做一个详细的研究!!!

这里我们创建一个项目,分别创建一个Servlet类,类名为One,创建一个Jsp文件,文件名为index.jsp.

在One这个类的doget方法中我们编写以下代码,往浏览器发送一个具备html代码格式的标题。

/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");response.setCharacterEncoding("UTF-8");PrintWriter pw=response.getWriter();pw.append("<h1>我是标题一</h1>");
}

在index.jsp文件中,我们也想达到一样的效果,只需要添加以下代码即可

<body>
<h1>我是Jsp的标题一</h1>
</body>

我们通过简单对比,显然使用jsp方式编写html页面方便简单。那项目最终是运行在服务器上的,jsp文件在运行之后会先被翻译成java文件,再编译成class文件进行执行,我们现在需要找到被翻译之后的java文件,研究一下。如果初学者忘记怎么tomcat按照到哪个路径下去了,可以点击window--》preferences

查看tomcat的安装路径,从tomcat文件夹路径下,找到work文件夹,然后找到当前运行的项目,并打开,找到被翻译后的java文件,index_jsp.java。

jsp文件中,我们编写的html代码其实最终还是与Servlet中一样被作为String字符串的方式输出给浏览器,只不过将tomcat服务器帮我们把繁琐的java代码进行封装,而不再需要我们开发者大量的操作java代码而已。并通过查看源代码发现:

那么很明显可以看出Servlet和Jsp之间的关系,显然Jsp被翻译以后其实就是Servlet的子类,与One的写法基本是一致。那么也就是意味着,我们在Servlet中运用和学习的技术在Jsp文件中都是可以如法炮制的。

接下来,Jsp文件中不仅仅可以编写html代码,Jsp文件中可以编写多种语言的混合使用:

Jsp中脚本元素的用法

我们知道Servlet是java类,是可以进行定义全局变量,定义方法,并且也能编写大量的可执行的代码,包括判断,循环,创建对象等等操作,那么我们根据上面的分析得出Jsp和Servlet是一样的,那也就意味着我们也能在jsp页面中定义变量,定义方法,做java代码的执行操作。只不过需要特殊的符号进行包裹:

定义全局变量,方法:

将java代码中的结果数据转换成文本输出在浏览器上:

做if语句的判断操作,这里因为需要html语言和java代码进行混合使用,这里需要将java代码进行分段操作:

(1)jsp脚本片段中可以定义变量、编写语句,不能定义方法。

(2)jsp脚本片段中只能出现java代码。

(3)jsp脚本片段中的java代码必须严格遵循java语法,例如,在执行语句后必须用分号(;)结束。

(4)在一个jsp页面中可以有多个脚本片段,在两个或多个脚本片段之间可以嵌入文本、HTML标记和其他jsp元素。

(5)多个脚本片段中的代码可以互相访问。

(6)单个脚本片段可以是不完整的,但是多个脚本片段组合之后必须是完整的java语句。

Jsp注释

} JSP注释分为两类:
} 显式注释
} HTML注释可以包含在JSP文件中,这些注释将作为响应的一部分发回浏览器。由于它们是注释,所以不生成任何可见输出,但是最终用户通过浏览器的“查看”菜单的“源文件”选项看到这些注释
} 隐式注释
} JSP隐式注释只能通过原始的JSP文件来查看,当JSP作为响应返回到客户端时,客户端是看不到该注释的,JSP容器会忽略注释的内容

Jsp指令

} JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理jsp页面中的其余部分
} 常用的 JSP 指令有三种:
◦ include 指令
◦ page 指令
◦ taglib 指令
} 语法:<%@ 指令 属性名="值" %>
} 如果一个指令有多个属性,可以写在一起,也可以分开来写

page指令

} page指令用于定义jsp页面的各种属性,无论page指令出现在jsp页面中的什么地方,它作用的都是整个jsp页面
}
} 为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个jsp页面的起始位置
}
} 重要属性:
◦ contentType
◦ pageEncoding
◦ import

在我们创建的Jsp页面的最顶部就已经自动生成了page指令的代码:

那么我们继续简单运用一下其他的属性:

import属性用于导入需要调用的其他java类的包:

使用快捷方式导入使用的java类后,会发现文件的最上面多出几行代码:

isErrorPage属性和errorPage属性:

在我们编写代码的过程中经常会出现代码报错,浏览器上出现一大片报错信息:

那么为什么我们日常生活中访问的网站怎么就没有出现报错页面呢,难道别人开发的网站就真的那么牛逼,能做到没有任何Bug,并不是的,是因为别人对错误信息做了处理,创建了专门显示错误信息的友好提示页面而已,那么我们也来完成一个!

创建一个two.jsp页面:

<%@ page language="java" errorPage="error.jsp" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%int a=100/0;
%>
</body>
</html>

接下来创建error.jsp页面:

<%@ page language="java" isErrorPage="true" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>亲,你的代码出现除数为0的异常 ,请仔细检查你的代码,是否存在被除数除以除数而导致的页面报错!!!</p>
</body>
</html>

再次运行,你会发现,不会再显示报错信息,而是跳转了一个新的页面告知用户产生错误的原因。

include指令

}静态包含,就是将其他页面或者servlet的内容包含进来,一起进行编译,生成一个java文件。

}语法:

}  <%@ include file="路径" %>

创建jsp文件three.jsp文件:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><div style="width: 900px;height: 800px;background-color: green; margin: auto;"><!-- 头部 --><%@ include file="head.jsp" %><!-- 中部 --><%@ include file="center.jsp" %><!-- 底部 --><%@ include file="foot.jsp" %></div>
</body>
</html>

创建head.jsp,center.jsp,foot.jsp文件,并使用include指令将多个文件包含在一个jsp文件中,作为其中的一部分,并在翻译的时候,产生一个java文件。

head.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><div style="width: 900px;height: 200px;background-color: red;"></div>
</body>
</html>

center.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><div style="width: 900px;height: 400px;background-color: pink;"></div>
</body>
</html>

foot.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><div style="width: 900px;height: 200px;background-color: blue;"></div>
</body>
</html>

运行项目后,使用浏览器访问three.jsp页面,可以看到其他三个页面在一个页面中的效果:

taglib指令

} 导入标签库(在后面章节学习)
}
} 语法:
◦ <%@ taglib prefix="前缀名" uri="名称空间" %>
}
} 例如:
◦ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
}

本章节内容,到这里结束。

【Jsp】第六课 Jsp简介和初步使用相关推荐

  1. 2022年欢迎来到Jsp编程第二课:JSP核心九大内置对象

    回顾:Servlect常用的对象,过滤器,监听器. ServletConfig:对象获得静态数据 ServletContext对象:获取共享静态数据,获取共享动态数据,获取共享文件数据. HttpSe ...

  2. 全民一起玩Python基础篇第六课:复杂结构初步(列表、对象、模块等)(下)

    多维列表 >>> x=[2,3,4,5,'a'] >>> y=['b','c'] >>> x[1]=y >>> q=[3,4,x ...

  3. 【Jsp】第二课 Servlet入门学习(一)

    什么是Servlet } servlet是由sun公司提供的一门用于开发动态web资源的技术 } Servlet的核心是javax.servlet.Servlet接口,所有的Servlet 必须实现这 ...

  4. JSP第四课:用户注册登录设计(内置对象使用)

     一.相关知识:内置对象使用 客户端的浏览器从Web服务器上获得网页,实际上是使用HTTP协议向服务器发送一个请求,服务器在接收到来自客户端浏览器发来的请求后要响应请求.JSP通过request对象获 ...

  5. JSP系列一:JSP简介

    378 一,JSP简介  JSP是建立在Servlet规范提供的功能之上的动态网页技术. 1,Servlet和JSP:servlet是含有HTML的Java代码,JSP是含有Java代码的HTML. ...

  6. java排课系统源代码,JSP自动排课系统 - WEB源码|JSP源码/Java|源代码 - 源码中国

    JSP自动排课系统 JSP自动排课系统\JSP自动排课系统 JSP自动排课系统\JSP自动排课系统\JSP自动排课系统录像.avi JSP自动排课系统\JSP自动排课系统\paike JSP自动排课系 ...

  7. 关于有关排课的java项目_基于jsp的选排课系统-JavaEE实现选排课系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的选排课系统, 该项目可用各类java课程设计大作业中, 选排课系统的系统架构分为前后台两部分, 最终实现在线上进行 ...

  8. Jsp入门1Jsp入门基础简介与工作原理详解

    一)JSP基础简介 1.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于 ...

  9. 小学计算机键盘的初步认识教案,小学信息技术西交大三(上)第六课:初步认识键盘(教案...

    <小学信息技术西交大三(上)第六课:初步认识键盘(教案>由会员分享,可在线阅读,更多相关<小学信息技术西交大三(上)第六课:初步认识键盘(教案(2页珍藏版)>请在人人文库网上搜 ...

最新文章

  1. protobufjs 命令执行_【原码笔记】-- protobuf.js 与 Long.js
  2. ISA三向外围网络模板说明
  3. 执行 pip3 install selenium 时出现 fail to create process
  4. 【转】80后安稳上班,90后看心情上班,95后……太形象了!
  5. MySQL Join Buffer参数查询命令
  6. 多线程与高并发(三):JUC包下新的同步机制:CAS,AtomicInteger,AtomicLong,ReentrantLock,CountDownLatch,ReadWriteLock等
  7. python多行语句用反斜杠_抗联部队规定新战士每年必须学会多少个生字
  8. 数据库服务器 之 Postgresql备份和恢复------SQL转储篇
  9. 微软 CEO 纳德拉痛失爱子
  10. 【2-SAT】URAL - 2089 - Experienced coach
  11. U盘被写保护,无法格式化
  12. 【锋利的jQuery】读书笔记
  13. mmsegmentation安装过程报错记录
  14. UNI-APP,推广二维码页面实现
  15. 软通动力新员工转正考试-新员工转正考试题
  16. 防汛数字孪生,厦门走在元宇宙前端! | 专栏
  17. Qt之简约按钮导航栏
  18. 计算机安全教程ppt课件,计算机网络安全教程幻灯片课件.ppt
  19. 编程任务编号 H: 剪辑电影片段
  20. 影视后期制作学习第二天(AE)

热门文章

  1. 舆情网比较好用及比较实用的舆情系统工具参考
  2. Host 'X.X.X.X' is blocked because of many connection errors; unblock with 'mysqladmin flush-ho
  3. css如何定义img的src
  4. 小数化分数c++(附做法数学证明)
  5. 时间序列完全教程(R)
  6. NTFS,exFAT,EXT4,MBR,GPT
  7. 华师计算机系统课程作业答案,华师在线计算机专业操作系统期末作业
  8. 【优化训练】RePr:Improved Training of Convolutional Filters论文笔记
  9. JMX : MXBean
  10. python 最简单的方法实现一个斐波那契数列