我的学习之路_第三十四章_jsp
jsp
在只有servlet时,输出页面内容比较麻烦(成本高,java代码中输出HTML标签),所以需要一种技术,主要是HTML页面的代码
(HTML,css,js),可以嵌入java代码,来实现动态页面的效果。这种技术就叫做 : JSP
JSP:java server Page : 动态页面技术,JSP就是Servlet。
如何开发一个JSP:
在项目目录中创建一个 .jsp 的文件
文件内容的第一个行:<%@ page contentType="text/html;char set=UTF-8" %>
后面可以跟正常的HTML内容
JSP如何运行的:
根据WEB服务器中的work目录中的文件。JSP页面在运行之前,被服务器翻译成了servlet的源代码(xxx.jsp -> jsp.java),
然后在内变异成字节码(xxx_jsp.java->xxx_jsp.class),加载到JVM,运行.
JSP的语法:
1.三种脚本:把java的内容嵌入到THML的静态部分中的方式
<% java代码 %> : 普通的可执行的java代码
<%= 表达式 %> : 计算表达式的值,并替换到页面的当前位置
<%! 声明(变量和方法) %> :声明当前JSP所翻译成的java类中的成员
2.三种注释:
1.JSP的注释: <%-- 注释内容,可以多行 --%>
在翻译时消失
2.java的注释:<% java代码,java注释 %> //单行 /* 多行 */
翻译是还存在,编译时消失
3.标签语言的注释:<!-- 注释内容 -->
和其它页面中的标签的地位相同,都会被当成内容输出给浏览器(这种注释尽量不要用,因为会爆露程
序的结构,会被黑客利用)
所以尽量优先用JSP的注释,尽量不要用标签注释。
3.三个编译指令:在翻译和编译JSP时的一些设置
<%@ page %> : 设置当前JSP页面中的一些信息
contentType:设置内容类型(MIME类型)
pageEncoding:设置页面使用的字符集
language:使用语言java
errorpage:当页面中发生异常时,转跳到哪个页面去进行异常处理.
isErrorpage:当前页面是否是异常处理页面
import:导包
<%@ include file=" xxx.jsp " %> : 静态包含另一个页面到本页面中.
<%@ taglib %> : 引用第三方的标签库
七个动作指令(动作标签)
< jsp.include page=" "/> : 动态包含.
动态包含和静态包含的区别:
静态包含:在翻译阶段,把被包含页面直接合并到主页面中,然后编译、执行。
动态包含:主页面的被包含页面是各自进行翻译和编译的,在运行的时候,有主页面通过include的方法
调用被包含页面
<jsp: forward page=" "/> : 内部转发
<jsp: param page=" "/> : 在动态包含和内部转发时传参数
<jsp: userBean page=" "/> : 使用javaBean
<jsp: getProperty page=" "/> : 取得javaBean的属性值
<jsp: setProperty page=" "/> : 设置javaBean的属性值
<jsp: plugin page=" "/> : 在页面中引入Applet小程序
九个内置对象:事先创建的对象,可以直接用。
page this(当前JSP页面所对应的servlet的对象,域对象)
request HttpServletRequest(域对象)
session HttpSession(域对象)
application ServletContext(域对象)
response HttpServletResponse
config ServletConfig
out JspWriter:输出的内容和JSP页面中普通的标签地位相同,使用response.getWriter输出流输出的内容,
永远在页面之前.
pageContext pageContext
取得所有其他内置对象
操作域对象
exception Throwable
小总结:
在HTML页面中嵌入java代码的一种动态页面技术。
JSP的本质:servlet(WEB服务器翻译成servlet的源代码、编译、执行)
三种脚本:
<% %> : 普通的java执行语句
<%= %> : 计算表达式的值并替换到页面中的当前位置
<%! %> : 声明(类的成员)
三种注释:
<%-- --%> : 在页面中直接使用.只在JSP页面有效
// /**/ : 在<% %>中是使用,翻译后存在,编译后消失
<!-- --> : 相当于标签,所以一直保留到页面中,尽量不用
三个编译指令:
<%@ page %>
contentType
pageEncoding
errorPage
isErrorpage
import
language:java
<%@ include file=" " %> : 静态包含
<%@ taglib %> : 引用第三方的标签库
七个动作标签:
<jsp: include page=" " > : 动态包含
<jsp: forward >
<jsp: param>
<jsp: useBean>
<jsp: getProperty>
<jsp: setProperty>
<jsp: plugin>
九个内置对象:
page (object)this 当前页面
request HttpServletRequest
session HttpSession
application ServletContext
response HttpServletResponse
out JspWriter(注意它和PrintWriter的区别)
config ServletConfig
pageContext pageContext
取得内置的其他对象
操作域对象(所有四个域都可以操作,如果不指定域,则默认操作page域,其他的域需要
通过参数来指定)
exception 异常. isErrorpage = true 且其它页面发生异常并跳转到本页面时此对象才存在.
isErrorpage = false ,exception不存在,isErrorpage=true.但是脏街访问的本业面不是从其
它页面发生异常而跳转过来的话, exception=null.
我的学习之路_第三十四章_jsp的更多相关文章
- “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java第三十四章:可变参数列表
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Gradle 1.12用户指南翻译——第三十四章. JaCoCo 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- 视觉slam学习之路(一)看高翔十四讲所遇到的问题
目前实验室做机器人,主要分三个方向,定位导航,建图,图像识别,之前做的也是做了下Qt上位机,后面又弄红外识别,因为这学期上课也没怎么花时间在项目,然后导师让我们确定一个方向来,便于以后发论文什么. ...
- 我的学习之路_第三十章_servlet
servlet:小服务程序 servlet是JavaWeb体系中的三大核心(servlet/Filter/Listener)之一,而且是最主要的那个. 作用:接受请求,处理请求,做出响应 继承体系:s ...
- 读书笔记_Effective_C++_条款三十四:区分接口继承和实现继承
这个条款书上内容说的篇幅比较多,但其实思想并不复杂.只要能理解三句话即可,第一句话是:纯虚函数只继承接口:第二句话是:虚函数既继承接口,也提供了一份默认实现:第三句话是:普通函数既继承接口,也强制继承 ...
- 【WPF学习】第三十四章 资源基础
WPF允许在代码中以及在标记中的各个位置定义资源(和特定的控件.窗口一起定义,或在整个应用程序中定义). 资源具有许多重要的优点,如下所述: 高效.可以通过资源定义对象,并在标记中的多个地方使用.这会 ...
- 第三十四章 Linux常规练习题(一)参考答案
一.练习题一 1.超级用户(管理员用户)提示符是___#_,普通用户提示符是___$_. 2.linux关机重启的命令有哪些 ? 关机命令 重启命令 shutdown -h now shutdown ...
- 第三十四章 metrics(2)- 搭建metrics平台
一.基本架构图 1.整个架构组件: java客户端 dropwizard-metrics:springboot.hystrix的metric体层使用了这个,所以我们需要自己封装向statsd发包的方法 ...
随机推荐
- Cordova各个插件使用介绍系列(三)—$cordovaImagePicker从手机图库选择多张图片
详情链接地址:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/cordova-3-cordovaimagepicker/ 这是能从手 ...
- MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)
1:MongoDB的官方网址:https://www.mongodb.com MongoDB的中文社区:http://www.mongoing.com/(老外也很看重中国市场啊,知道大家英语不好, ...
- Django 模型和数据库 总结
模型和数据库 模型 首先我们在创建一个model的时候,这个类都是继承自 django.db.models.Model, 各种Model Field类型 AutoField,自动增长的IntegerF ...
- web移动端布局方式整理
写H5页面一直写的有点随意,只是保证了页面在各个屏幕下显示良好,却没有保证到在各个屏幕下是等比例放大或者缩小.这些天在写一些页面,试着看看能不能写出等比例放大缩小的页面,发现不容易啊,在网上找了一些文 ...
- Akka(10): 分布式运算:集群-Cluster
Akka-Cluster可以在一部物理机或一组网络连接的服务器上搭建部署.用Akka开发同一版本的分布式程序可以在任何硬件环境中运行,这样我们就可以确定以Akka分布式程序作为标准的编程方式了. 在上 ...
- .Net上传文件大小配置
1.起因 今天同事在上传文件的时候,发现一直失败,说文件比较大.一听就明白了,肯定是上传文件大小的问题啊.然后查看web.config文件,发现设置过文件上传的大小限制.配置文件上传大小,分为2部分. ...
- 【LeetCode】91. Decode Ways
题目: A message containing letters from A-Z is being encoded to numbers using the following mapping: ' ...
- Hibernate基础知识总结
Hibernate是JDBC的轻量级的对象封装(encapsulation),它是一个独立的对象持久persistence层框架. hibernate要做的事,就是让对象投影到关系数据库中,然后实施化 ...
- winform .net2.0的程序如何运行于.net 4.x
约束 最近有一个winform项目,要求: (1)程序能够运行在winxp, win7, win8, win10中 (2)安装尽可能简单,尽量不要安装.net framework.即使要安装也要尽可以 ...
- Scrapy 爬虫实例教程(一)---简介及资源列表
Scrapy(官网 http://scrapy.org/)是一款功能强大的,用户可定制的网络爬虫软件包.其官方描述称:" Scrapy is a fast high-level screen ...