首页 > 代码库 > java-web复习阶段

java-web复习阶段

 

 

JSP中的重点知识
1、经典面试题!!!:
 <%! int a = 0;%>
<% int b= 0; %>
<%
a++;
b++;
out.write(a+"<br/>");
out.write(b+"<br/>");
%>
 第一次访问时,a,b的值分别是多少
 第二次访问时,a,b的值分别是多少
2、静态引入和动态引入的区别
3、九大隐式对象~~~
4、四个作用域~~~
page域:参考(3)
request域:一次请求响应
session域:一次会话
application域:从web项目启动之后,一直到项目关闭。

5、pageContext对象
(1)作为入口对象获取其他八个对象
(2)作为入口对象获取其他域中的数据
6、EL表达式~~~
获取数据、执行运算、获取常用的开发对象、调用java的方法
 获取数组中的数据:可以通过 ${数组名[下标]}获取数组中的内容。
 ~~~获取集合中的数据:可以通过 ${集合名[下标]}获取集合中的内容
    c:forEach items="${list}" var = "obj"
       ${obj.属性名}

 ~~~获取Map集合中的数据:可以通过 [键]  或  .键 来获取Map中数据
    c:forEach items="${map}" var="entry"
         ${entry.key.属性}   ${entry.value}
 ~~~获取javaBean对象的属性值:${对象名.属性名}
EL表达式调用javaBean中的方法~
6、JSTL
重点掌握 c  和fmt处理日期
核心标签 c
1、c:out  ~~
输出,可以指定默认值,可以设置是否转义
2、c:set  ~~
标签用于把某一个对象(基本数据类型或String)存在指定的域范围内;
或设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性值
3、c:remove~
标签用于删除各种Web域中的属性
<c:remove var="varName" [scope="{page|request|session|application}"] />
如果没有指定哪个域,则全部删除。
4、c:if~~~   if 或  if --else
test=“boolean表达式”  如果为true,显示<c:if>内容</c:if>
                   如果为false,不显示<c:if>内容</c:if>
5、<c:catch>~~
标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:
<c:catch var="e">
   <%=1/0 %>
   </c:catch>
   ${e.message}
6、<c:choose>,<c:when>和<c:otherwise>   if-else if -...-else
7、c:forEach~~~~
标签用于对一个集合对象中的元素进行循环迭代操作,
或者按指定的次数重复迭代执行标签体中的内容。  

~~~varStatus:实现单双行变色
  index,count

自定义标签的执行过程~:
  1、当jsp页面执行到自定义标签时,首先创建出自定义标签处理类对象,创建出来后
 会立即调用setJspContext方法将当前页面的PageContext传入
  2、如果当前标签有父标签,则将调用setParent()方法,将父标签传入。如果没有父标签,这该方法不执行。
  3、如果当前标签有标签体,则调用setJspBody方法,将封装了标签体信息的JspFragment jspBody传入,
如果没有标签体,则该方法不调用。
  4、如果具有属性,则调用属性的setXxx()方法将属性值传入。
  5、最后调用doTag方法执行自定义标签的处理逻辑。

6、MVC~~~             版本管理器—(SVN、CVS) EasyMall
Servlet+JSP+JavaBean(模式:Model-2,也被称为MVC设计模式)
C(Control)---Servlet:接收参数,控制跳转
V(View)---JSP:负责显示
M(Model)--JavaBean:处理业务逻辑,操作数据库
7、耦合与解耦
改造EasyMall--软件分层--耦合->解耦  
工厂类+接口+配置文件  管理不能避免的耦合。

耦合:在软件分层中我们希望各个层应该是对立的,修改替换某一个层应该不影响到其他层,
但是如果乱传递属于某一个层特有的对象,造成层与层之间关系过于紧密,当修改某一个层的时候,
不得不修改其他的关联层,这和最初的设计思想违背。这种有害的过于紧密的层与层之间的关系被
称为耦合。

解耦:解除耦合的过程
   首先要保证只属于某一个层的对象不乱传递。
   对于无法比较的耦合,可以通过“工厂类+接口+配置文件的方式”将耦合提取到配置文件中
 进行管理。

8、泛型~~~
Java5开始提供的新特性,表示不确定类型
注意:泛型是提供给编译器(javac)使用的,它用于限定集合的输入类型,让编译器在源代码级别上,
挡住向集合中加入非法数据。
  但在编译器编译完带有泛型的java程序后,生成.class文件中将不在带有泛型,使程序的运行效率不收到
影响。这个过程被称为"擦除"

自定义泛型
3.2.1、方法上的泛型~~~
泛型需要先定义再使用,方法上的泛型需要定义在方法返回值类型的前面,通常是使用一个大写的英文
字母(sun公司推荐T),也可以是任意的字符;但是不要使用java中的关键字或常用类(eg:String)
定义在方法上泛型的作用范围是当前方法的内部。
3.2.2、类上的泛型~~~
  定义在类型的泛型的作用范围是当前类的内部。
  泛型需要先定义再使用,类上泛型需要定义在类名之后,通常使用大写字母。
  类型定义的泛型,需要在创建对象/引用时需要明确指定泛型的具体类型。
如果在创建对象时,没有明确的指定泛型的具体类型,则默认为泛型的“上边界”。
  在类上定义的泛型不能在静态方法上使用;如果想在静态方法上使用,需要自己定义。

public interface List<E> extends Collection<E>
List上的泛型也是定义在类上的泛型。

8、过滤器Filter~~~
8.1、过滤器概述
 Servlet的技术规范中定义了Servlet、Filter、Listener三门技术。
 过滤器可以拦截对资源的访问,一个资源可以被多个过滤器所拦截,一个过滤器也可以拦截多个资源。

 拦截下来后控制是否允许访问资源(权限控制),
 或者在访问资源执行之前或之后做一些其他的操作(全站处理乱码、禁止jsp页面缓存、权限控制)。
8.2、过滤器的开发


9、MD5加密

10、监听器~~~

 

java-web复习阶段