您的位置:首页 > Web前端 > JavaScript

servlet接口及原理解析,表达式语言解析

2015-01-29 20:05 197 查看
【学习笔记】

1.servlet生命周期(面试必考)
2.数据有效性验证
3.表达式语言与标准标签库
 
4.servlet是个单实例多线程
5.java内存模型
 
 
-------------------------------------------------------------【面试题】------------------------------------------
如果在servlet里面定义有一个私有全局变量intc,并在doget里面进行操作c++;,如果统计调用次数,这样做会有问题吗回答:有问题,java内存模型:servlet由于是多线程的,多个线程共享一个内存,当数据量一大,并发很多,就会形成冲突。
-----------------------------------------------------------------------------------------------------------
 
书籍:servlet 3.1规范 pdf文档   http权威指南
 
【回顾】:反射创建对象

Class.forName("com.tanlan.ishop.web.servlet").newinstance();
 
 
一、1.【servlet生命周期(面试必考)】
 

问题:【创建】:由谁创建,何时创建,创建几个,怎么调用

 

回答:【由谁创建】:servlet是由JSP/Servlet容器(Tomcat)通过解析web.xml得到servlet的类名,

通过反射创建servlet的实例
 

      【何时创建】:既然是通过反射实例化,可定就是调用无参构造方法,可以把无参构造方法

写出来,里面输出一句话来确定是容器启动时还是调用时实例化对象,

经过试验,当servlet第一次处理请求,该servlet会实例化
 

      【创建几个】:一个servlet只会创建一个实例

     【怎么调用】:容器自身也有一个main方法,是一个无线循环的线程,这也是web程序的入口
 
------------------------------------【servlet自动加载】-------------------
<load-on-startup>数字</load-on-startup>    在容器自动时自动加载servlet,
部署在web.xml中.就不需要映射了mapping了,里面的数字是个相对大小,如1或者2
那么1先实例化,2后实例化,容器会使用多线程的方式调用处理请求的方法
--------------------------------------------------------------------------
 

【有几个阶段?这些阶段会对应哪些方法】
 
【初始化】:init方法:做初始化工作,一般会读取web,xml配置信息,只调用一次
 
【处理请求】:service方法:处理信息
 
【销毁】:destroy方法:将程序从容器中移除,正常关闭容器

--------------------------------------------------------

正常关闭容器  点击service--tomcat---stop server
 
问题:既然说请求是由service处理的,那么doget与dopost方法是如何得到请求的
回答:模版方法
 
 
           2.servlet的类层次结构
 
二、表达式语言与标准编程库
 
1.【jsp】:只显示数据

 

【作用域:存储数据的范围

 从小到大】:page(页面作用域),request(请求作用域),session(会话作用域),application(容器作用域)

表达式语言是专门在JSP页面显示数据的,该数据来自作用域

 

【从小到大依次寻找其中的属性】,如:setAttribute("属性名",数据对象)进而得到其数据,

必要时可以使用前缀区分确定在哪个作用域里找pageScope,requestScope,

sessionScope,applicationScope。用法如页面里的a属性 ${pageScope.a}

 
 

【语法】:${exppress}        【注:注释没用,即使注释掉也会解析】

     1.如果属性对应的是个实例对象,可以直接用属性名打点调用属性名来获得数据值(利用反射:首字母大写                        前加get)
             2.如果属性对应的是个字符串,直接可以用属性名就可以显示

    

     3.集合显示:会用到标签库 下面介绍

【javaBean】规范:没有规范不能使用框架(框架利用反射时取值不能成功)
 
 
2.标签库:核心,SQL,XML,Format,Function
 

用法:第一步:引用一个指令<%@taglibprefix="c" uri="http://java.sun.com/jstl/core_rt"%>

定义的c就是标签;后面制定的链接就是标签库  用c打冒号就可以使用里面的标签
 

      第二步:<c:forEachitems="${categoryes}" var="category">调用需要的标签,

${category.id}                           利用属性打点调用数据

${category.name}

...
    </c:forEach>                                结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息