我的学习之路_第三十四章_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发包的方法 ...
随机推荐
- Perl正则表达式例子
Perl正则表达式 一.介绍 正则表达式各语言都有自己的规范,但是基本都差不多,都是由元字符的组合来进行匹配:由于Nmap内嵌的服务与版本探测是使用的Perl正则规范,因此此篇博客记录一下Perl正则 ...
- post和get方式区别
Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别.1. get是把参数数据队列加到提交表单的ACTI ...
- VisualSVN 5.1.7破译License Key
前面手敲一些简要的软件说明:visualSVN server大家都不陌生,服务器上的版本控制系统,一般配套Tortoisesvn(小乌龟)使用.本次介绍的这个visualsvn属于VisualStud ...
- 利用Jsoup包爬取网站内容
一 Jsoup包 下载链接:http://download.csdn.net/detail/u014000832/7994245 二 爬取搜狐新闻网站标题等内容 package com.test1; ...
- Java 基础 break和continue关键字的使用
break&continue关键字的使用 break:使用在switch...case语句或者循环结构语句中,表示结束当前循环. 示例代码: public class TestBreak { ...
- 关于DOM中的model(将元素转成对象进行操作)
DOM document (html, xml) object 将文档中的HTML元素转成js的对象 通过ID找到文档的元素转成js对象 var obj = document.getElementBy ...
- CSS样式之选择器
一.CSS选择器构成 CSS选择器是你想要改变样式的html元素,通俗的说,选择器可以改变html文件中标签的属性,这些属性可以是颜色,背景图,字体等.每个选择器有一条或多条声明,可以同时改变某个标签 ...
- 第一个spark+scala程序
import org.apache.spark._import SparkContext._import java.util.{Calendar,Properties,Date,Locale}impo ...
- MySQL--当mysqldump --single-transaction遇到alter table(2)
在上篇<MySQL--当mysqldump --single-transaction遇到alter table>中测试发现,在MySQL 5.6版本中,如果在mysqldump期间修改表, ...
- springmvc+mybatis 做分页sql 语句
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-// ...