JSP中的重点知识
一、经典面试题!!!:
<%! int a = 0;%>
<% int b= 0; %>
<%
a++;
b++;
out.write(a+"<br/>");
out.write(b+"<br/>");
%>
第一次访问时,a,b的值分别是多少
第二次访问时,a,b的值分别是多少
二、静态引入和动态引入的区别
三、九大隐式对象~~~
四、四个做用域~~~
page域:参考(3)
request域:一次请求响应
session域:一次会话
application域:从web项目启动以后,一直到项目关闭。java
五、pageContext对象
(1)做为入口对象获取其余八个对象
(2)做为入口对象获取其余域中的数据
六、EL表达式~~~
获取数据、执行运算、获取经常使用的开发对象、调用java的方法
获取数组中的数据:能够经过 ${数组名[下标]}获取数组中的内容。
~~~获取集合中的数据:能够经过 ${集合名[下标]}获取集合中的内容
c:forEach items="${list}" var = "obj"
${obj.属性名}web
~~~获取Map集合中的数据:能够经过 [键] 或 .键 来获取Map中数据
c:forEach items="${map}" var="entry"
${entry.key.属性} ${entry.value}
~~~获取javaBean对象的属性值:${对象名.属性名}
EL表达式调用javaBean中的方法~
六、JSTL
重点掌握 c 和fmt处理日期
核心标签 c
一、c:out ~~
输出,能够指定默认值,能够设置是否转义
二、c:set ~~
标签用于把某一个对象(基本数据类型或String)存在指定的域范围内;
或设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性值
三、c:remove~
标签用于删除各类Web域中的属性
<c:remove var="varName" [scope="{page|request|session|application}"] />
若是没有指定哪一个域,则所有删除。
四、c:if~~~ if 或 if --else
test=“boolean表达式” 若是为true,显示<c:if>内容</c:if>
若是为false,不显示<c:if>内容</c:if>
五、<c:catch>~~
标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式以下:
<c:catch var="e">
<%=1/0 %>
</c:catch>
${e.message}
六、<c:choose>,<c:when>和<c:otherwise> if-else if -...-else
七、c:forEach~~~~
标签用于对一个集合对象中的元素进行循环迭代操做,
或者按指定的次数重复迭代执行标签体中的内容。 面试
~~~varStatus:实现单双行变色
index,count数据库
自定义标签的执行过程~:
一、当jsp页面执行到自定义标签时,首先建立出自定义标签处理类对象,建立出来后
会当即调用setJspContext方法将当前页面的PageContext传入
二、若是当前标签有父标签,则将调用setParent()方法,将父标签传入。若是没有父标签,这该方法不执行。
三、若是当前标签有标签体,则调用setJspBody方法,将封装了标签体信息的JspFragment jspBody传入,
若是没有标签体,则该方法不调用。
四、若是具备属性,则调用属性的setXxx()方法将属性值传入。
五、最后调用doTag方法执行自定义标签的处理逻辑。设计模式
六、MVC~~~ 版本管理器—(SVN、CVS) EasyMall
Servlet+JSP+JavaBean(模式:Model-2,也被称为MVC设计模式)
C(Control)---Servlet:接收参数,控制跳转
V(View)---JSP:负责显示
M(Model)--JavaBean:处理业务逻辑,操做数据库
七、耦合与解耦
改造EasyMall--软件分层--耦合->解耦
工厂类+接口+配置文件 管理不能避免的耦合。数组
耦合:在软件分层中咱们但愿各个层应该是对立的,修改替换某一个层应该不影响到其余层,
可是若是乱传递属于某一个层特有的对象,形成层与层之间关系过于紧密,当修改某一个层的时候,
不得不修改其余的关联层,这和最初的设计思想违背。这种有害的过于紧密的层与层之间的关系被
称为耦合。缓存
解耦:解除耦合的过程
首先要保证只属于某一个层的对象不乱传递。
对于没法比较的耦合,能够经过“工厂类+接口+配置文件的方式”将耦合提取到配置文件中
进行管理。session
八、泛型~~~
Java5开始提供的新特性,表示不肯定类型
注意:泛型是提供给编译器(javac)使用的,它用于限定集合的输入类型,让编译器在源代码级别上,
挡住向集合中加入非法数据。
但在编译器编译完带有泛型的java程序后,生成.class文件中将不在带有泛型,使程序的运行效率不收到
影响。这个过程被称为"擦除"app
自定义泛型
3.2.一、方法上的泛型~~~
泛型须要先定义再使用,方法上的泛型须要定义在方法返回值类型的前面,一般是使用一个大写的英文
字母(sun公司推荐T),也能够是任意的字符;可是不要使用java中的关键字或经常使用类(eg:String)
定义在方法上泛型的做用范围是当前方法的内部。
3.2.二、类上的泛型~~~
定义在类型的泛型的做用范围是当前类的内部。
泛型须要先定义再使用,类上泛型须要定义在类名以后,一般使用大写字母。
类型定义的泛型,须要在建立对象/引用时须要明确指定泛型的具体类型。
若是在建立对象时,没有明确的指定泛型的具体类型,则默认为泛型的“上边界”。
在类上定义的泛型不能在静态方法上使用;若是想在静态方法上使用,须要本身定义。jsp
public interface List<E> extends Collection<E>
List上的泛型也是定义在类上的泛型。
八、过滤器Filter~~~
8.一、过滤器概述
Servlet的技术规范中定义了Servlet、Filter、Listener三门技术。
过滤器能够拦截对资源的访问,一个资源能够被多个过滤器所拦截,一个过滤器也能够拦截多个资源。
拦截下来后控制是否容许访问资源(权限控制),
或者在访问资源执行以前或以后作一些其余的操做(全站处理乱码、禁止jsp页面缓存、权限控制)。
8.二、过滤器的开发
九、MD5加密
十、监听器~~~