美文网首页java学习
NO.71 servlet小结、jsp标签和el表达式

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

作者: smallnumber | 来源:发表于2017-09-18 22:06 被阅读0次

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

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

    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接口要求的对象。

    注: 一个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文件当中描述标签。

    <body-content>的值可以是emtpy,scriptless,JSP

    empty:标签没有标签体。

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

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

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

    代码示例:

    标签java类 配置文件

    相关文章

      网友评论

        本文标题:NO.71 servlet小结、jsp标签和el表达式

        本文链接:https://www.haomeiwen.com/subject/wihisxtx.html