我的学习之路_第三十四章_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发包的方法 ...
随机推荐
- ByteBuffer源码分析
在进行数据传输的时候,往往需要使用到缓冲区,常用的缓冲区就是JDK NIO类库中提供的java.nio.Buffer,实现类如下: 在使用NIO编程时,最常用的是其中的ByteBuffer,本篇分析B ...
- 使用linux sort给一个文件里的内容按规则排序
任务:report.txt文件里有以下内容:记录了一些方法的执行时间,要求按执行时间降序排列. void com.dustpan.zeus.core.service.MergeService.star ...
- java自带uuid生成
java自带uuid生成UUID.randomUUID().toString()
- 使用PHP二维码生成类库PHP QR Code生成二维码
<?php include 'phpqrcode.php'; $value = 'http://www.helloweba.com'; //二维码内容 $errorCorrectionLevel ...
- 利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包
因为业务需要,项目中需要把asp.netmvc项目打包成exe安装程序给客户,让客户直接可以点下一步下一步安装部署web程序,并且同时要将IIS服务和mysql一同安装到服务器上,因为客户的电脑可能是 ...
- java网络编程之socket
网络编程是什么 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据. ...
- jquery.validata.js 插件
一.Validate插件描述 Validate是基于jQuery的一款轻量级验证插件,内置丰富的验证规则,还有灵活的自定义规则接口,HTML.CSS与JS之间的低耦合能让您自由布局和丰富样式,支持in ...
- JavaWeb 后端 <八> 之 JDBC基礎(全)
一.JDBC简介 1.JDBC是SUN公司为了简化操作数据推出一套规范.数据库厂商的驱动就是对JDBC的实现. 2.Java Data Base Connectivity(java数据库连接),它主要 ...
- MySQL实现自动使用uuid作为主键以及解决不能调用触发器的一点思路
这里使用触发程序实现此功能. 触发程序语法如下: Create trigger <tri_name> {before|after} {insert|update|delete} On &l ...
- js获取鼠标点击的对象,点击另一个按钮删除该对象
作为js的一名新手,对于所谓的event的了解并不是太多,仅仅根据视频教学中的例子模仿着,写了诸如: function funcname(e) { e=window.event||event };的函 ...