您的位置:首页 > 职场人生

java程序员第十二课 -JSP技术、JavaBean知识和EL表达式(重点)

2015-11-17 17:06 357 查看
课程内容:JSP技术、JavaBean知识和EL表达式(重点)

JSP的概述

1.JSP:Java Server Pages :Java 服务器端的网页们

2.动态的WEB资源,包含Servlet/JSP

3.Servlet程序编写HTML代码的比较麻烦。Servlet需要配置,JSP不需要配置。

4.JSP的执行原理:JSP程序 – 先翻译成Servlet程序(xxx.java) – 编译成.class文件 – 执行了。

* JSP编写HTML的代码,展示给用户看的。翻译成Servlet,需要把HTML的标签输出到客户端上。

* 可以在Tomcat/work/找到JSP翻译后的源代码。

JSP的脚本元素

1.JSP的代码编写:HTML+Java+EL+JSP

2.编写Java代码需要使用脚本元素

* <%! %> :编写变量(不常用)

* <%= %> :输出的语句。不能有分号。

* <% %> :变量(局部变量)

JSP的注释

1.编写哪些注释

* 可以编写HTML的注释

* 可以编写Java代码注释(三种)

* 写JSP的本身的注释 <%– –%>

修改JSP文件的编码的问题

1.点击window – 选择选项 – 搜索JSP – 选择JSP – 选择UTF-8的编码。

JSP的基本语法

JSP的指令元素

1.设置JSP的页面的属性

2.决定JSP的怎么执行的。

3.JSP的指令需要怎么来编写呢?

* JSP指令元素的语法

* <%@ 指令元素 属性名称=属性值 %>

* JSP哪些指令元素?有三个

* page指令,用于设置页面的属性

* include指令,用于页面的包含。

* taglib指令,用于引入标签库

page指令

1.page指令设置页面的属性

2.page指令的属性

* language – 固定的值,值就是java。JSP的程序翻译成.java的文件。

* extends – 继承。JSP翻译成.java文件,默认去继承。修改默认继承的类。

* session – 决定JSP文件中session是否可以直接使用。默认值是true。

* import – JSP文件中可以编写Java代码。导入包。import可以使用多次。

* buffer – 设置JSP缓存区的大小。默认是8kb

* autoflush – 设置JSP缓冲区默认刷新。默认值是true

* errerpage – 通过指令值,发生异常了,指定跳转的路径。

* isErrorpage – 如果程序抛出异常,指定跳转的页面,输出异常的信息,设置该属性值为true。使用exception。

* isELIgnored – 是否忽略EL表达式,默认值是false,不忽略。

* pageEncoding – 设置JSP页面的编码。

* contentType – 浏览器打开文件时所有采用的编码。

* 注意:pageEncoding和contentType属性之间暧昧的关系。设置其中一个编码,另一个和它相同。

设置全局错误处理页面(开发经常使用)

1.需要在web.xml中进行配置全局错误页面

404

/error/404.jsp

500

/error/500.jsp

inclde指令:页面的包含

1.语法:<%@ include file=”指定要包含的页面” %>

2.作用:把一些不变的页面包含进来,一起对外展示。

3.静态包含原理:访问body.jsp文件,翻译成body_jsp.java文件之前,把包含的文件全部复制到一起,一起翻译,一起编译。最后执行。

taglib指令:引入标签库文件

JSP的内置对象

1.JSP的内置对象:JSP文件翻译成.java文件,在service方法的内容,提供一些对象。直接使用这些对象。

JSP的内置对象 真实对象 常用的方法

request HttpServletRequest …

response HttpServletResponse …

session HttpSession 域对象

application ServletContext 域对象

config ServletConfig 和配置文件相关的对象

out JspWriter 输出

pageContext PageContext 域对象

page Object(忘了)

exception Throwable 获取异常的信息,注意:isErrorPage设置成true

out对象(JspWriter)输出

1.response对象,向客户端做出响应。response.getWriter(),返回PrintWriter对象。和JspWriter之间有什么关系呢?

2.编写JSP文件中的代码

<%= “HELLO” %>

<% out.print(“AAAA”); %>

<% response.getWriter().print(“BBBB”); %>

<% out.print(“CCCC”); %>

3.输出结果:BBBB HELLO AAAA CCCC

4.结论:JspWriter会把缓冲区的内容先输出到PrintWriter的缓存区,然后统一的向外输出。

PageContext对象

1.pageContext对象代表页面的上下文对象。通过该对象获取到页面的一些信息。

2.一个pageContext对象顶上面9个对象。pageContext对象可以获取到另外的8个。

* getXXX() 获取其他的8个内置对象

getException方法返回exception隐式对象

getPage方法返回page隐式对象

getRequest方法返回request隐式对象

getResponse方法返回response隐式对象

getServletConfig方法返回config隐式对象

getServletContext方法返回application隐式对象

getSession方法返回session隐式对象

getOut方法返回out隐式对象

3.pageContext对象也是一个域对象,域的范围有点小。范围代表当前的页面。

* void setAttribute(String name, Object value)

* Object getAttribute(String name)

* removeAttribute(String name)

4.pageContext对象可以向其他的域对象中存取值。

* void setAttribute(String name, Object value, int scope)

* Object getAttribute(String name, int scope)

* void removeAttribute(String name, int scope)

5.Object findAttribute(String name) 全域查找,可以从4个域中来查询值先从最小范围的域中查找,如果找不到,向上一个域中查找

4个域对象

1.pageContext – 代表当前的页面(自定义标签)

2.request – 代表一次请求(需要从服务器后台获取数据(从数据库中获取数据),存入到request域中,通过转发到指定的JSP页面,可以在JSP的页面中获取到数据。例子:查询所有的用户数据,发送一个消息。)

3.session – 代表一次会话(session域对象,一般的情况保存都是和用户相关的数据,例子:登陆成功了,需要把用户的信息保存到session中。)

4.application – 代表整个WEB应用(ServletContext域对象,保存全局的一些,都是共享的。)

JSP的动作标签

1.JSP的动态标签和HTML的标签区分开。

2.JSP的常用的标签

* – 动态包含(和静态包含效果的一样的,原理不同)

* 动态包含会产生4个翻译后的.java文件。

* 原理:总结:访问body.jsp的文件,body.jsp的文件自己翻译成.java的文件,编译成.class的文件。执行该文件。执行的过程中,遇到动态包含的语句,动态包含的文件就会自己翻译成.java的文件,编译成.class的文件,执行。把执行的结果复制到一起。一起展示。

* <jsp:forward>             -- 转发
* page属性:要转发的页面

* <jsp:param>           -- 你在转发的时候,通过该标签传递一些参数
* 传递参数,注意:<jsp:param>需要使用在其他的标签的中间。
* name属性:参数的名称
* value属性:参数的值


JavaBean的概述

1.JavaBean就是一个普通的Java类,但是符合一定的规范。

2.JavaBean的一些规范

* Java类必须具有无参数的构造方法

* 属性必须是private

* 私有化的属性必须通过public 的get或者set方法。

3.JavaBean的作用:封装数据。

4.JavaBean属性是怎么规定的呢?

* 它是由get或者set方法来决定。

– 创建User的对象

– 执行User对象中的setXXX方法

– 执行User对象中的getXXX方法

使用JavaBean进行数据的封装

1.在JSP中使用JavaBean来完成数据的封装。

内省的技术完成数据的封装

1.先使用内省的技术来完成简单数据的封装。

2.目的:引出了BeanUtils的工具类,因为该工具类的底层就是使用的内省的技术。

3.内省的技术:可以操作JavaBean中的set或者get方法。能不能获取到setUsername的方法?

public void populate(User user, Map
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: