NO.71 servlet小结、jsp标签和el表达式

1.容器处理异常(了解)

将异常抛给容器,让容器来处理。

NO.71 servlet小结、jsp标签和el表达式_第1张图片
NO.71 servlet小结、jsp标签和el表达式_第2张图片

2.servlet小结

(1)Servlet基础

1)什么是Servlet?

2)如何开发一个Servlet?

3)什么是Servlet容器?

4)http协议(了解)

a.什么是http协议?

b.特点

c.数据包的结构

d.状态码,消息头

e.get/post请求

5)Servlet是如何运行的?

(2)Servlet核心

1)读取请求参数值

2)处理表单中文参数值乱码问题

3)Servlet输出中文乱码问题

4)转发与重定向

5)Servlet的生命周期

1)什么是Servlet的生命周期?

2)分成哪几个阶段?

a.实例化 (load-on-startup) 单例

b.初始化 (一次,overrid init方法)

c.调用/就绪 (doGet,doPost)

d.销毁

3)相关的接口与类 (Servlet,GenericServlet,HttpServlet)

6)Servlet上下文

7)线程安全问题

8)容器如何处理请求资源路径?

9)如何让一个Servlet处理多种请求?

10)路径问题

(3)状态管理

1)什么是状态管理?

2)如何进行状态管理?

3)Cookie

a.什么是Cookie?

b.工作原理 (set-cookie消息头,cookie消息头)

c.如何添加Cookie?

d.三个问题(编码问题,生存时间问题,路径问题)

e.如何读取Cookie?

f.Cookie的限制

4)Session

a.什么是Session?

b.工作原理

c.如何获得Session对象 (request.getSession)

d.绑订数据

e.Session超时

f.删除Session

(4)数据库访问

dao

(5)过滤器与监听器

1)什么是过滤器?

2)如何写一个过滤器?

3)初始化参数

4)优先级

5)优点(了解)

6)什么是监听器?

7)如何写一个监听器?

(6)案例

员工管理

登录/注册

session验证

验证码

3. jsp

(1)什么是jsp?

.jsp(html + java代码) --->Servlet

(2)如何写jsp?

1)html (css,js): 直接写

2)java代码:

a.java代码片断:  <%  %>

b.jsp表达式:  <%=  %>

c.jsp声明:  <%! 变量或者方法  %>

3)隐含对象

a.什么是隐含对象?

b.为什么可以使用这些隐含对象?

c.有哪些隐含对象?

out,request,response,session,application

pageContext(page上下文):

c1. 容器会为每一个jsp实例创建唯一的一个符合PageContext接口要求的对象。

NO.71 servlet小结、jsp标签和el表达式_第3张图片

注: 一个jsp实例对应一个pageContext,另外,只要jsp实例还在,pageContext就在。

c2. 作用

作用1:绑订数据 (setAttribute,getAttribute,removeAttribute

注:可以将pageContext看作是一个“钱包”,绑订到pageContext上面的数据,只有对应的

jsp实例才能访问。

作用2:获得其它隐含对象

exception(了解):只有当page指令的isErrorPage属性值为true时,才能使用。用来获取异常的简洁的描述。

config(了解): ServletConfig

page(不用): jsp实例本身(jsp对应的servlet实例)

4)指令

a.什么是指令?

b.指令的格式  <%@ 指令名  属性=值 %>

c.有哪些指令?

c1. page指令

import属性

pageEncoding属性

contentType属性

errorPage属性(了解):指定一个异常处理页面(专门用来处理其它jsp产生的异常)。

isErrorPage属性(了解):缺省值是false,当值为true时,表示这是一个异常处理页面。可以在该页面当中,使用exception隐含对象。

session属性(了解):缺省值是true,如果值设置为false,则不能够使用session隐含对象了。

c2. incude指令

file属性

c3. taglib指令

导入jsp标签。

5)注释

a.    如果注释的内容有java代码,会执行。

b. <%-- 注释的内容 --%>  如果注释的内容有java代码,不会执行。

(3)执行过程

step1.  jsp转换成Servlet

html-------> service方法,使用out.write输出。

<%  %> ----> service方法  ,照搬。

<%=  %> ---> service方法,使用out.print输出。

<%!  %> ---> 为Servlet增加新的属性和方法。

step2. 调用Servlet

4. jsp标签和el表达式

(1)什么是jsp标签?

jsp标签类似于html标签,用来替换jsp中的java代码。

注:因为直接在jsp文件中写java代码,不利于jsp文件的维护(比如,将包含有大量java代码的jsp交给美工去修改就很不方便),所以,sun公司制订了jsp标签技术规范。使用jsp标签代替java代码之后,jsp文件变得简洁,便于维护。而且便于代码的复用。

(2)什么是el表达式?

是一套运算规则,用于给jsp标签的属性赋值,也可以直接输出。

(3)el表达式的使用

1)访问bean的属性

方式一  ${user.name} :    容器依次从pageContext,request,session,application中查找绑订名为"user"的对象(getAttribute),找到之后,会调用该对象的"getName"方法,然后输出;如果找不到,会输出""。

注:a.依次,指的是先从pageContext上去查找,如果没有,再查找request,如果找到,则不再向下查找了。

b.如果值为null,会转换成""输出。

c.如果要指定查找范围,可以使用pageScope,requestScope,sessionScope,applicationScope。

比如:${requestScope.user.name}。

方式二  ${user['name']}    等价于${user.name}

注:a.[]可以使用绑订名。

b.[]可以使用从0开始的下标,用来读取数组中的某个元素。

2)做一些简单的运算

a. 算术运算  +,-,*,/,%

注: + 只能求和。

b. 关系运算  >,>=,<,<=,==,!=

c. 逻辑运算  && || !

d. empty运算 empty

用来判断集合是否为空,或者是否为一个空字符串。

3)读取请求参数值(了解)

${param.username}等价于request.getParameter("username");

${paramValues.city}等价于request.getParameterValues("city");

(4)jstl(java standard taglib)标签

注(了解):apache开发的一套标签,后来捐献给了sun。

1)如何使用jstl标签。

step1.导包。(jstl.jar)

step2.使用taglib指令,导入要使用的标签。

2)几个核心标签

a. if标签

注:a1. c是命名空间的前缀(别名)。

命名空间(namespace): 为了区分同名的元素而添加的一个限定。

a2. 如果test属性值为true,则执行标签体的内容。test属性可以使用el表达式来计算。

a3. var属性指定一个绑订名,scope属性指定绑订的范围("page","request","session","application")

b.choose标签

注:b1.when表示一个分支,如果test属性值为true,则执行该分支。(可以出现1次或者多次)

b2.otherwise表示例外,可以出现0次或者1次。

c.forEach标签

注:c1.用来遍历集合或者数组。

c2.items属性用来指定要遍历的集合或者数组,可以使用el表达式。

c3.var属性用来指定绑订名(绑订范围是pageContext)。

c4.varStatus属性用来指定绑订名(绑订范围是pageContext),绑订值是一个特殊的对象(由该标签创建,作用是用来获得当前遍历的状态,比如getIndex方法:获得当前被遍历的元素的下标。getCount方法用来获得当前是第几次遍历)    。

3)自定义jsp标签

编程步骤

step1. 写一个java类,继承SimpleTagSupport类。

step2. override doTag方法,在该方法里面,写处理逻辑。

step3. 在.tld文件当中描述标签。

的值可以是emtpy,scriptless,JSP

empty:标签没有标签体。

scriptless:标签可以有标签体,但是标签体的内容不能够出现java代码(<%  %>,<%= %>,<%!  %>)。

JSP:标签可以有标签体,标签体的内容可以出现java代码。但是,只有复杂标签技术才支持。

注:复杂标签技术是一种比较老的标签技术。继承自SimpleTagSupport的标签属于简单标签技术。

代码示例:

NO.71 servlet小结、jsp标签和el表达式_第4张图片
标签java类
NO.71 servlet小结、jsp标签和el表达式_第5张图片
配置文件

你可能感兴趣的:(NO.71 servlet小结、jsp标签和el表达式)