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的更多相关文章

  1. “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  2. “全栈2019”Java第三十四章:可变参数列表

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. Gradle 1.12用户指南翻译——第三十四章. JaCoCo 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  4. 视觉slam学习之路(一)看高翔十四讲所遇到的问题

      目前实验室做机器人,主要分三个方向,定位导航,建图,图像识别,之前做的也是做了下Qt上位机,后面又弄红外识别,因为这学期上课也没怎么花时间在项目,然后导师让我们确定一个方向来,便于以后发论文什么. ...

  5. 我的学习之路_第三十章_servlet

    servlet:小服务程序 servlet是JavaWeb体系中的三大核心(servlet/Filter/Listener)之一,而且是最主要的那个. 作用:接受请求,处理请求,做出响应 继承体系:s ...

  6. 读书笔记_Effective_C++_条款三十四:区分接口继承和实现继承

    这个条款书上内容说的篇幅比较多,但其实思想并不复杂.只要能理解三句话即可,第一句话是:纯虚函数只继承接口:第二句话是:虚函数既继承接口,也提供了一份默认实现:第三句话是:普通函数既继承接口,也强制继承 ...

  7. 【WPF学习】第三十四章 资源基础

    WPF允许在代码中以及在标记中的各个位置定义资源(和特定的控件.窗口一起定义,或在整个应用程序中定义). 资源具有许多重要的优点,如下所述: 高效.可以通过资源定义对象,并在标记中的多个地方使用.这会 ...

  8. 第三十四章 Linux常规练习题(一)参考答案

    一.练习题一 1.超级用户(管理员用户)提示符是___#_,普通用户提示符是___$_. 2.linux关机重启的命令有哪些 ? 关机命令 重启命令 shutdown -h now shutdown ...

  9. 第三十四章 metrics(2)- 搭建metrics平台

    一.基本架构图 1.整个架构组件: java客户端 dropwizard-metrics:springboot.hystrix的metric体层使用了这个,所以我们需要自己封装向statsd发包的方法 ...

随机推荐

  1. 【LCA求最近公共祖先+vector构图】Distance Queries

    Distance Queries 时间限制: 1 Sec  内存限制: 128 MB 题目描述 约翰的奶牛们拒绝跑他的马拉松,因为她们悠闲的生活不能承受他选择的长长的赛道.因此他决心找一条更合理的赛道 ...

  2. word和.txt文件转html 及pdf文件, 使用poi jsoup itext心得

    word和.txt文件转html 及pdf文件, 使用poi jsoup  itext心得本人第一次写博客,有上面不足的或者需要改正的希望大家指出来,一起学习交流讨论.由于在项目中遇到了这一个问题,在 ...

  3. php中比较两个变量是否相等的最高效写法

    <?php //php中比较两个变量是否相等的最高效写法 function isEqual($a,$b){ return $a==$b; } var_dump(isEqual(3,3));//t ...

  4. js脚本中try与cache捕获异常处理

    <script type="text/javascript"> function add_reason(elm){ try{ var pp=$('.pp').val() ...

  5. Spring两种代理区别

    Spring的两种代理JDK和CGLIB的区别浅谈: Java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用invokeHandler类来处理: 而cglib动态代理是利用a ...

  6. 表连接查询(2-n)

    一 概述 1 背景 理论上将全部数据放到同一张表中很难实现,实际上即使实现了,表也很庞大,很冗杂,不便于查询与维护,因此将不同的数据存放到不同的表中,需要时连接各表进行查询. 2 执行过程 两张表进行 ...

  7. bootstrap-datepicker的bug:有日期输入的地方在下个月页面选择当天日期会以当天日期减少一个月显示

    Bug复现详细描述:先选择今日日期,然后点击下个月的某个日期,注意,是直接点击下个月的某个日期,不能通过日期显示tab的下个月箭头进入下个月再来点击某个日期,然后再直接点击本月的今日日期.然后bug会 ...

  8. [leetcode-592-Fraction Addition and Subtraction]

    Given a string representing an expression of fraction addition and subtraction, you need to return t ...

  9. python2和python3中的类

    经典类与新式类 例如: A B C D 四个类 D 包含 BC :   B和C分别包含A py2 在经典类中是按深度优先来继承 例如: D中查找B,B没有从A中查找 新式类中是按广度优先来查找继承的 ...

  10. English - Titanium Bike

    The silver-gold triathlon bike was sitting in Kris's dining room next to the door. It had no kicksta ...