7.JSP技术
JSP和Servlet一样,都是用于开发动态web资源的技术
JSP的两个特性:1.写JSP代码就像是在写HTML代码,但JSP技术允许在页面中编写java代码(理解为一种特殊的HTML)
2.JSP中可以使用 request response等web开发常用对象,实现与浏览器的交互 (JSP也可以理解为Servlet)
通过查看JSP的源文件(服务器中的work目录下,就是一个java文件),可以清楚的知道,在JSP中,可以用到哪些web开发常用对象
工作原理:访问jsp,服务器是如何调用这个jsp的?(将JSP翻译成servlet,其实就是调用这个servlet(响应请求) /*即浏览器访问任何资源,都是通过servlet来实现*/
页面内容通过 out.write() (这里的out相当于Servlet中的PrintWriter)(除了这个,还有很多对象可以类似Servlet去使用) 写给浏览器
注:JSP最佳实践:servlet只负责响应请求产生数据 ,把数据通过 /*转发*/技术带给(一般通过request)jsp 数据的显示jsp来做
/*JSP语法*/
1.JSP模板元素 JSP页面中的HTML内容
2.JSP脚本表达式 <%= 变量或表达式 %>
3.JSP脚本片段 <% 多行java代码 %> 多个脚本片段可以相互访问 (如下面的脚本片段,访问上面的脚本片段的某个变量) (两个片段之间也可以嵌入其他元素)
4.JSP声明 <%! 多行java代码 %> 使用JSP声明, 将这多行java代码翻译到 _jspService方法的外面
5.JSP注释 <%-- 内容 --%> <!-- --> (HTML注释) 两者区别:JSP注释了的内容在浏览器的源文件中也不会出现,而HTML注释则是会原封不动的出现,
只不过浏览器能够识别,不显示到网页上 (这样会有很多数据垃圾,产生多余的网络流量),另外java代码的注释,必须使用JSP注释,因为服务器不认得HTML注释
6.JSP指令 <%@ 指令 属性名="值" %> (不产生任何可见的输出,只是告诉JSP引擎(理解为tomcat)如何输出JSP页面中的其余部分) page指令 include指令 taglib指令
7.JSP标签
8.JSP内置对象
9.如何查找JSP页面中的错误
/*page指令*/
<%@ page import="java.util.*" %>
1.language (指定嵌入的语言(脚本))
2.extends(继承哪个类,一般不修改)
3.import (会自动导入一些包)
4.session (true false) (设置false(需要自己手动获取session对象) ,默认为true,会在jsp中翻译的servlet文件中创建session对象,可以直接使用)
5.buffer (none 8KB sizekb) 设置缓冲 默认为8KB (一般不改)
6.autoFlush (true false) 默认为true 缓冲满了,自动刷新 (一般不改)
7.isThreadSafe (true false) 线程是否安全的 默认为true(不安全的) ,设置为false后 (实现SingThreadModel接口) ,(线程安全的)
8.info (通过info带信息)
9.errorPage (url (给服务器用)) (指定jsp的错误处理页面)
可以在相应的web工程的web.xml文件中使用 <error-page> 元素为整个web应用程序设置错误处理页面,
其中的<exception-type>子元素指定异常类的完全限定名 (如:404 500,java.io.Exception)
<location> 元素 指定 错误处理页面的路径 (/(给服务器用)(不带工程名))
注意:在jsp中 设置了 errorPage ,web.xml文件中也设置了<error-page>的话, /* JSP中的page指令优先级更高 */
10.isErrorPage (是否为错误处理页面) (true false) 如果是错误处理页面的话,最好设置为 true,(好处:能够传递异常对象,在后台记录)
11.contentType (告诉JSP引擎,页面的类型) ("text/html;charset=UTF-8")
12.pageEncoding ("UTF-8") /*实际在Eclipse开发中,只需要把这个定义好,就可以了*/
(设置好之后,会将jsp文件以UTF-8 编码保存,jsp翻译成的servlet,也是通过UTF-8 把数据发给ie,然后ie以UTF-8 打开,)
13.isELIgnored (是否忽略EL表达式) (默认为false)
/*include 指令*/ (保存网站公共页面)
1.静态包含 (<%@ include file = "/public/head.jsp" %>)
2.动态包含 (<% request.getRequestDispatcher("/public/head.jsp").include(request,response) %>)
注: 1.静态比动态性能更好 静态包含是在编译时包含,把包含时涉及到的jsp翻译成一个servlet
动态包含是在运行时包含,把包含时涉及的每一个jsp都翻译成一个servlet,
2.公共页面需要删除一些创建模板中固定出现的东西
/*九大隐式对象*/
1.request 2.response 3.session(page指令第2点) 4.application(ServletConext) 5.config
6.page(this) 7.exception (设置isErrorPage,jsp对应的servlet中就会创建这个对象) (page指令第10点)
8.out (类似于servlet中的 PrintWriter (区别:out带缓冲功能))
1.设置page指令的buffer属性关闭out对象的缓存功能
2.out对象的缓冲区已满 满足这三个条件中的一个,便将out对象缓冲区的内容, /*写到response对象中*/
3.整个JSP页面结束
9.pageContext (JSP中最重要的一个对象)(生命周期:JSP页面启动到整个JSP页面结束)
1.这个对象封装了对其他八大对象的引用 pageContext. /*pageContext1.jsp*/
2.自身是一个域对象,可以用来保存数据 /*pageContext2.jsp*/
3.封装了web开发中经常涉及的一些常用操作 (例如引入和跳转其他资源(forword) ,检索其他对象域中的属性等) /*pageContext2.jsp*/
注: /*${ data } 等价于 pageContext.findAttribute("data"); 依次查找各个域中是否有名字是data的属性,一旦找到,就不找了,返回它的值
查找顺序: page(pageContext(称之为page域)) -> request -> session -> application */
/*JSP标签*/ (避免在jsp中写java代码)
jsp常用标签:1. <jsp:include>标签 2.<jsp:forward>标签 3.<jsp:param>标签 ( 传递数据 )
/*映射jsp*/ (向servlet那样去映射) (<servlet-class> 改成<jsp-file>)
7.JSP技术的更多相关文章
- java的JSP技术
java的JSP技术 [toc] 1.JSP简介 Jsp技术是用来开发java web的页面显示的,所有MVC模型里面的视图层,所以视图层的开发 jsp不是编程语言,三个英文是java server ...
- Servlet,jsp,JSP技术 ,JSP编程
一.Servlet 思考 1 浏览器可以直接打开JAVA/class文件吗? 不可以 2浏览器可以打开HTML.JS 文件吗? 可以 3 JAVA程序可以生成HTML文件吗?可以的,用IO流. 4 ...
- Java Web之JSP技术
JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比htm ...
- Jsp技术总结
这节我们总结一下Jsp的相关技术. 1. 什么是JSP JSP即Java Server Pages,它和servlet技术一样,都是sun公司定义的一种用于开发动态web资源的技术.该技术的最大特点在 ...
- JSP技术
1. JSP技术简介 JSP全称是Java Server Pages,它和servlet技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.是sun公司定义的一种规范,JSP实际上就是Se ...
- JSP技术的优缺点介绍
什么是JSP?JSP可用一种简单易懂的等式表示为:HTML+Java=JSP. JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑. 网页还能通过 ...
- JavaWeb之JSP技术总结
刚接触JSP技术的时候让我想起了在大学学的Asp+VBScript,记得当时我还用aspstudy做了一个小的新闻发布系统作为期末作品,也正是在那时候在卢哥卢老师的指导下走向编程的道路,对编程越来越感 ...
- jsp技术和el表达式和jstl技术
注:本文参考黑马视频的讲义 jsp技术 1.jsp脚本 )<%java代码%> ----- 内部的java代码翻译到service方法的内部 )<%=java变量或表达式> - ...
- Servlet组件之 jsp 技术
JSP 简称java服务器页面(java server page),jsp和servlet实现了我们的开发需求.对于jsp技术我们首先需要知道他的组成 HTML+java+jsp内置对象=jsp ...
- JavaWeb:JSP技术基础
JavaWeb:JSP技术 快速开始 介绍 JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%> ...
随机推荐
- JMX简介及was上的使用
参考文章:https://www.ibm.com/developerworks/cn/websphere/library/techarticles/0908_sunyan_jmxdeploy/inde ...
- python3 @classmethod 和 @staticmethod 的区别
如果您将某个东西定义为classmethod,这可能是因为您打算从类而不是类实例中调用它. 定义类方法的几种方式: 常规方式 : 需要self隐士传递当前类 ...
- 标签 <i>
<i>的使用 效果图
- 集群架构03·MySQL初识,mysql8.0环境安装,mysql多实例
官方网址 https://dev.mysql.com/downloads/mysql/社区版本分析 MySQL5.5:默认存储引擎改为InnoDB,提高性能和可扩展性,增加半同步复制 MySQL5.6 ...
- 金士顿U盘PS2251-07东芝闪存白片量产CDROM成功教程-群联量产教程-U盘量产网
之前我们发布过金士顿DT100 G3的黑片量产工具教程,因为白片的MPALL量产工具无法量产,所有版本的Phison_MPALL都爆红,最近出了新的白片MPALL V5.03.0A版本,所以试了一下结 ...
- @ControllerAdvice和@ExceptionHandler
1. 使用 @ControllerAdvice和@ExceptionHandler处理全局异常 1. 新建异常信息实体类 非必要的类,主要用于包装异常信息. package com.test.exce ...
- Linux Shell中的变量声明和一些特殊变量
在SHELL中定义变量比较直接,无类型区别,不需要像Java那样定义好是String还是int等. 声明变量需要遵守或者注意的几点: 变量名和等号之间不能有空格. 变量名首字符必须为字母. 变量名里可 ...
- redis启动相关命令(Windows)
一.安装redis:略 二.进入redis的安装目录,使用cmd 1.安装redis服务并加入window服务:redis-server --service-install redis.windows ...
- mysql数据库的 varchar 和 char 的区别
char是存储字符(无论字母还是汉字都最多存255个) char(20)表示这个字段最多存20个字符 如果存了16个字符 那么也会占用20个字符的空间 varchar是存储字节(1个字母1个字节 ...
- Error starting daemon: error initializing graphdriver: devmapper: Device docker-thinpool is not a thin pool
Error starting daemon: error initializing graphdriver: devmapper: Device docker-thinpool is not a th ...