JSP30分钟搞清楚.docx
- 文档编号:7225890
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:16
- 大小:509.08KB
JSP30分钟搞清楚.docx
《JSP30分钟搞清楚.docx》由会员分享,可在线阅读,更多相关《JSP30分钟搞清楚.docx(16页珍藏版)》请在冰豆网上搜索。
JSP30分钟搞清楚
一、JSP简介
JSP全称是JavaServerPage,它和Servlet一样,也是sun公司推出的一套开发动态web资源的技术,称为JSP/Servlet规范。
其本质也是一个Servlet。
二、HTML、Servlet和JSP的关系
HTML:
只能开发静态资源,不能包含java代码,无法添加动态数据。
Servlet:
写java代码,可以输出页面内容,但是很不方便,开发效率极低。
JSP:
HTML+Servlet
三、JSP快速入门(输出当前时间)
小提示:
jsp在发布之后,每次修改后无需重新部署,服务器会自动部署。
而类文件(java文件)不行。
四、分析JSP的原理以及生命周期
写在之前:
明确JSP就是一个Servlet。
是一个特殊的Servlet。
JSP的原理:
客户端提交请求——Tomcat服务器解析请求地址——找到JSP页面——Tomcat将JSP页面翻译成Servlet的java文件——将翻译好的.java文件编译成.class文件——返回到客户浏览器上。
通过源码了解JSP,JSP存放位置如下图:
翻译好的.java文件如下图:
通过以上两图可以证明:
JSP就是一个Servlet,所以JSP的生命周期与Servlet相同。
五、JSP的语法
5.1模板元素
jsp中的模板元素指的就是jsp中的html标签,在开发过程中,先写好这些模板元素,因为它们决定了页面的外观。
5.2Java程序片段
在jsp中,可以使用java脚本代码。
形式为:
<%
在里面写java程序脚本
需要注意:
这里面的内容由tomcat负责翻译,翻译之后是service方法的成员变量
%>
5.3Java表达式
使用<%=表达式%>
翻译完后是out.print(表达式内容);
<%out.print("当前时间);%>和<%="当前时间"%>是一样的
5.4JSP声明
JSP的声明
<%!
声明可以是变量,方法,静态方法等
需要注意的是:
写在里面的内容将会被tomcat翻译成全局的属性或者类方法。
%>
5.5JSP注释
JSP中的注释:
<%--注释--%>
注意:
在Jsp中可以使用html的注释,但是只能注释html元素,不能注释java程序片段和表达式。
jsp的注释不仅可以注释java程序片段,也可以注释html元素。
小练习:
(作业)
5.6JSP指令
5.6.1简介
JSP指令是为JSP引擎服务的,它不会产生可见输出,而是告诉引擎如何处理JSP的其余部分(非指令部分)。
基本语法:
<%@指令名称属性1="值1"属性2="值2".......%>
一般把指令放在JSP页面的顶部(不是必须的)
指令的属性可以写在一个指令的中,也可以分开写:
比如:
<%@指令属性1=”值1”属性2=”值2”%>.
等价于:
<%@指令属性1=”值1”%>.
<%@指令属性2=”值2”%>.
5.6.2page指令
属性:
language:
告知引擎,脚本使用的是java,默认是java,支持java。
不写也行。
extends:
告知引擎,JSP对应的Servlet的父类是哪个,不需要写,也不需要改。
import:
告知引擎,导入哪些包(类)。
注意:
引擎会自动导入:
java.lang.*,javax.servlet.*,
javax.servlet.http.*,javax.servlet.jsp.*
导入的形式:
<%@pageimport=”java.util.Date,java.util.UUID”%>或者:
<%@pageimport=”java.util.Date”%>
<%@pageimport=”java.util.UUID”%>用Eclipse:
Alt+/自动导入
session:
告知引擎是否产生HttpSession对象,即是否在代码中调用request.getSession()。
默认是true。
buffer:
JspWriter用于输出JSP内容到页面上。
告知引擎,设定他的缓存大小。
默认8kb。
errorPage:
告知引擎,当前页面出现异常后,应该转发到哪个页面上(路径写法:
/代表当前应用)
小贴士:
当在errorpage上使用了isErrorPage=true之后,ie8有时候不能正常显示
配置全局错误页面:
web.xml
当使用了全局错误页面,就无须再写errorPage来实现转到错误页面,而是由服务器负责跳转到错误页面。
isErrorPage:
告知引擎,是否抓住异常。
如果该属性为true,页面中就可以使用exception对象,打印异常的详细信息。
默认值是false。
contentType:
告知引擎,响应正文的MIME类型。
contentType="text/html;charset=UTF-8"
相当于response.setContentTYpe("text/html;charset=UTF-8");
pageEncoding:
告知引擎,翻译jsp时(从磁盘上读取jsp文件)所用的码表。
pageEncoding="UTF-8"相当于告知引擎用UTF-8读取JSP
isELIgnored:
告知引擎,是否忽略EL表达式,默认值是false,不忽略。
总结:
属性众多,一般都用默认值。
用起来很简单。
5.6.3include指令
该指令是包含外部页面。
属性:
file,以/开头,就代表当前应用。
5.6.4taglib指令
该指令用于引入外部标签
uri:
外部标签的URI地址,类似名称空间。
prefix:
前缀。
六、JSP的转发和包含
6.1转发
语法:
forwardpage="/forwarddemo.jsp">
forward>是jsp的内置标签
该方式等价于:
参数:
paramname="message"value="transfer"/> 获取参数: 注意: 在使用forward带参数时,不能在中间添加除空格和换行之外的内容。 否则报错。 6.2包含 静态包含: 只有一种,<%@includefile=%>,又称为include指令。 特点是将两个页面合成一个。 在包含者中可以使用被包含者的属性。 动态包含: 除了include指令外,其余全是动态包含。 jsp的动态包含语法: includepage=""/> 又称为include动作。 动态包含的特点是,各编译各的,会产生多个java和class文件。 只是合并输出结果。 七、JSP的九大隐式对象(面试经常问) 隐式对象名称 类型 备注 request javax.servlet.http.HttpServletRequest response javax.servlet.http.HttpServletResponse session javax.servlet.http.HttpSession Page指令可以控制开关 application javax.servlet.ServletContext page Java.lang.Object 当前jsp对应的servlet引用实例 config javax.servlet.ServletConfig exceotion java.lang.Throwable 配置指令有开关 out javax.servlet.jsp.JspWriter 字符输出流,相当于printwriter pageContext javax.servlet.jsp.PageContext 很重要 八、JSP中异常处理 解决办法: 去看翻译好的Java源码,找到错误的位置,修改正确。 解决办法: 找对应的JSP页面,修改语法。 九、PageContext抽象类(很重要) 9.1PageContext抽象类概述 它是JSP独有的对象,Servlet中没有这个对象。 本身也是一个域(作用范围)对象,但是它可以操作其他3个域对象中的属性。 9.2PageContext生命周期 它是一个局部变量,所以它的生命周期随着JSP的创建而诞生,随着JSP的结束而消失。 每个JSP页面都有一个独立的PageContext。 9.3PageContext常用方法 页面范围的方法: voidsetAttribute(Stringname,Objectvalue); voidremoveAttribute(Stringname); ObjectgetAttribute(Stringname); 操作其他域属性的方法: 比上面的三个方法多了一个参数intscope。 voidsetAttribute(Stringname,Objectvalue,intscope); voidremoveAttribute(Stringname,intscope); ObjectgetAttribute(Stringname,intscope); intscope: 它本身是一个常量,有四个值,分别对应四个范围。 APPLICATION_SCOPE应用级 SESSION_SCOPE会话级 REQUEST_SCOPE请求级 PAGE_SCOPE页面级 在四个范围内根据名称查找对象的方法: ObjectfindAttribute(Stringname); 查找顺序是: PAGE——>REQUEST——>SESSION——>APPLICATION。 只要在一个范围内找到就不再继续查找。 获取其他八个隐式对象的方法: (自定义标签时用) pageContext.getRequest(); pageContext.getResponse(); pageContext.getSession(); pageContext.getServletConfig(); pageContext.getServletContext(); pageContext.getException(); pageContext.getPage(); pageContext.getOut();(此方法是其父类JspContext提供) 提供转发和包含的简易方法: 十、四大域对象 实际开发中用于存放数据的。 域对象名称 范围 级别 备注 PageContext 页面范围 最小 因范围太小,开发中用的很少 ServletRequest 请求范围 比page大,比session小 不同的资源,只有转发用 HttpSession 会话范围 比request大,比application小 多次请求共享数据,但不同的客户端不能共享 ServletContext 应用范围 最大 尽量少用,如果对数据有修改需要做同步处理 十一、JSP开发的最佳实践 Servlet: 擅长处理业务逻辑,不擅长输出显示界面。 在web开发中多用于控制程序逻辑(流程)。 所以我们称之为: 控制器。 JSP: 擅长显示界面,不擅长处理程序逻辑。 在web开发中多用于展示动态界面。 所以我们称之为: 视图。 例如: 十二、JavaBean概念 12.1什么是JavaBean JavaBean是一种简单Java对象,只包含私有属性和公有get和set方法来给属性赋值和取值。 JavaBean又称之为POJO(PlainOldJavaObject)、VO(ValueObject)、DO(DataObject)。 12.2JavaBean书写规范 1必须是public的 2提供默认的构造方法 3属性都是私有的private 4提供公有的get和set方法 注意: boolean类型的getxxx方法可以用isxxx方法替代。 5一般需要实现java.io.Serializable接口 关于实现序列化接口: 当使用多台服务器做集群(负载均衡)时,多个服务器间使用到会话复制时,就会用到。 12.3JavaBean的作用 JavaBean在JavaEE开发中,主要作用是维护需要封装的数据。 十三、JSP中使用JavaBean 13.1导入JavaBean 用Page指令的import属性导入 13.2声明JavaBean 13.3属性操作 获取属性: 如果属性的值是null,那么界面显示就是null。 设置属性: 注意: 类型转换的问题。 如果是int,float,double等基本数据类型,jsp标签会自动转换。 但是像复杂类型(例如Date)就不行了。 使用请求参数设置JavaBean属性: 13.4JavaBean存活范围 在声明JavaBean时,指定scope属性。 默认值是page,当前页面范围。 可选值: page|request|session|application 13.5开发模型 JSP+JavaBean是Model1(模型1),现在已经不用了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSP30 分钟 搞清楚
![提示](https://static.bdocx.com/images/bang_tan.gif)