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

课程内容: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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章