知识点题纲

Filter(过滤器)与servlet的区别:

1、 Filter实现Filter接口,Servlet实现Servlet接口;

2、 Filter是当Servlet容器启动后就会初始化,Servlet是当Servlet类被调用之后才初始化;

3、 Filter层次调用doFilter()方法中FilterChain.doFilter()(过滤链)之前的内容,然后调用servlet中的service方法,再调用doFilter()方法中FilterChain.doFilter()(过滤链)之后的内容;按配置顺序和条件调用满足条件的Servlet,调用之前事先调用满足条件的Filter;

4、 Filter服务器停止后销毁,晚于Servlet销毁之后,Servlet在服务器停止之后销毁;

5、 Filter在请求到达Servlet之前拦截请求,根据条件对请求进行处理,Servlet主要是处理客户端请求并将结果返回给客户端。

二、jsp的九大内置对象:

1、request

HttpServletRequest类的实例,request对象具有请求域,完成客户端请求之前该对象一直有效。

2、response

HttpServletResponse类的实例,response对象具有页面作用域,在页面内该对象只能对这次访问有效。

3、session

HttpSession类的实例,Session对象具有一次会话的作用域,一次会话就是客户端连接到服务器直到客户端与服务器断开连接

4、out

JSPWriter类的实例,out是向客户端输出内容时常用到的对象。

5、page

 Java.lang.Object类的实例,page对象就是指当前jsp页面本身。

6、application

ServletContext类的实例,application对象实现了用户间数据的共享,可以存放全局变量。它开始于服务器的启动一直到服务器关闭,在此期间该对象一直存在。

7、exception

Java.lang.Throwable类的实例,exception对象是一个例外对象,当一个页面在运行的过程中发生了例外,就会产生这个对象。如果一个页面要用这个对象,就必须把isErrorPage设为true,负责无法编译。

8、pageContext

PegeContext类的实例,pageContext对象提供了对jsp页面内所有对象以及名字空间的访问。

9、config

config对象是在一个Servlet初始化时,jsp引擎向它传递信息用的,此信息包括Servlet初始化时需要用到的参数以及服务器的有关信息。

 

 

三、jQuery选择器:

详见下面链接:

http://www.cnblogs.com/kissdodog/archive/2012/11/05/2755103.html

 

1、 基本选择器:

1、#id 根据id匹配一个元素;

2、.class 根据给定的class匹配元素;

3、element 根据元素名匹配元素;

4、* 匹配所有元素。

2、层次选择器:

1、 ancestor descendant 根据祖先匹配所有的后代元素;

2、 parent>child 根据父元素匹配所有的子元素,直接后代;

3、 prev+next 匹配下一个兄弟元素;

4、 prev~siblings 匹配后面的兄弟元素。

3、简单过滤选择器:

4、内容过滤选择器:

5、可见性过滤选择器:

6、属性过滤选择器:

7、子元素过滤选择器:

8、表单对象属性过滤选择器:

9、表单选择器:

四、Mysql常用函数:

详见下面链接:

http://www.jb51.net/article/40179.htm

 

1、 数学函数:

1、 abs(x) 返回x的绝对值;

2、 ceiling(x) 返回大于x的最小整数;

3、 floor(x) 返回小于x的最大整数;

4、 mod(x,y) 返回x%y的模数;

5、 pi() 返回π(圆周率);

6、 round(x,y) 返回参数x四舍五入有y位小数的值;

7、 truncate(x,y) 返回参数x截短为有y位小数的值;

8、 ……等等。

2、聚合函数:

1、 avg(column) 返回指定列的平均值;

2、 count(column) 返回指定列中非null值的个数;

3、 min(column) 返回指定列的最小值;

4、 max(column) 返回指定列的最大值;

5、 sum(column) 返回指定列的所有值的和;

6、 group_concat(column) 返回由属于一组的列值连接组合而成的结果。

3、字符串函数:

1、 concat(s1,s2,……)将s1,s2,……连接成字符串;

2、 Concat_ws(sep,s1,s2,……)将s1,s2,……连接成字符串,并用sep字符间隔;

3、 insert(str,x,y,instr)将字符串str从x位置开始,y个字符长的子串替换为字符串instr,返回结果;

4、 trim(str)去除字符串首尾所有的空格;

5、 ……等等。

4、日期和时间函数:

1、 curdate() 返回当前的日期;

2、 curtime() 返回当前的时间;

3、 hour(time) 返回time的小时值(0~23);

4、 now() 返回当前的日期和时间;

5、 year(date) 返回日期date的年份(1000~9999);

6、 ……等等。

5、加密函数:

6、控制流函数:

7、格式化函数:

8、类型转化函数:

9、系统信息函数:

五、Hibernate与Mybatis的区别:

1、 Hibernate是一个完全的ORM框架,维护的是对象与表之间的映射,Mybatis不是一个完全的ORM框架,维护的是sql结果集合;

2、 Mybatis没有提供事务,其事务管理用的是JDBC的,Hibernate3和Hibernate4提供了事务管理;

3、 Hibernate的ORM映射能力强,数据库无关性强,数据库可移植性自然就强;

4、 Hibernate自动生成sql语句,sql不可控,Mybatis需要程序员编写sql,sql可控性强。

六、Struts2与SpringMVC的区别:

1、 Struts2的核心控制器是一个过滤器:DispatchFilter在StrutsPrepareAndExcuteFilter的init()方法中加载struts.xml文件,SpringMVC的核心控制器是一个Servlet:DispatchServlet,application.xml文件在该servlet的init()方法中加载;

2、 Struts2基于类,接受前台传递参数是通过属性驱动和模型驱动给全局变量赋值,多个方法可以共享,SpringMVC是基于方法,接受前台传值是通过方法传参得到的,多个方法之间不可以共享。

七、Spring和SpringMVC的常用注解:

1、 Spring的常用注解:

使用注解之前需要开启注解,和加上包扫描。

1、@Configuration:把一个类作为IOC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean;

2、@Scope:用于指定scope的作用域(用在类上);

3、@Lazy(true):表示延迟初始化;

4、@Service:用于标注业务层组件;

5、@Controller:用于标注控制层组件;

6、@Repository:用于标注数据访问组件,即DAO层;

7、@Component:泛指组件,当组件不好归类时,使用此注解;

8、@PostConstruct:用于指定初始化方法(用在方法上);

9、@PreDestory:用于指定销毁方法(用在方法上);

10、@AutoWired:默认按类型自动装配;

11、@Resource:默认按名称装配,如果找不到与名称匹配的Bean才会按照类型装配。

2、SpringMVC的常用注解:

1、@Controller:负责注册一个Bean到Spring上下文中,Bean的ID默认为类名首字母小写,也可以由程序员自定义;

2、@RequestMapping:用来定义访问的URL(用在类上和每个方法上);

3、@PathVariable:用于方法中的参数,表示方法参数绑定到URL上;

4、@RequestParam:从Request域当中读取参数,类似于request.getParameter(“name”)。

八、final和static总结:

final表示最终的,无法改变的;static表示全局的,静态的。

1、修饰变量:

1、 final修饰的变量只能赋值一次,赋值后值不再改变。

2、 static修饰的变量称为类变量,在内存中只分配一次空间,在加载类的时候就会分配,可以用类名直接访问。

2、修饰方法:

1、 final修饰的方法不能被子类的方法覆盖,但可以被继承。

2、 static修饰的方法叫静态方法:

①、可以用类名直接调用;

②、静态方法中不能有this和supper关键字;

③、不能在静态方法中直接访问该类非静态的变量和方法;

④、静态方法独立于任何实例,因此静态方法必须被实现,不能是抽象的abstract。

3、修饰类:

1、 final修饰的类不能被继承,不能被扩展,没有子类,该类中的方法默认是final的。

2、 static不能修饰普通类,但可以修饰内部类,被static修饰的内部类可以作为一个普通类来使用,不需要实例一个外部类。

4、静态块:

static{静态代码体}:称为静态块,不再任何方法体中,是独立的语句块。

①、JVM加载类时会执行静态块,每个静态块只被执行一次;

②、一个类中可以有多个静态块,顺序可以任意放;

③、执行时按照静态块在类中出现的先后顺序依次执行。

九、Set、List、Map:

1、区别以及使用场景:

①、List和Set都是继承自Collection接口,而Map不是;

②、List的特点:元素有放入顺序,元素可以重复,可以用下标来取元素;

Set的特点:元素无放入顺序,元素不可重复,重复元素会被覆盖。

③、Set和List对比:

Set:检索元素效率低,删除和插入效率高,删除和插入不会影响元素位置;

List:和数组类似,List可以动态增长,查找元素效率高,删除和插入元素效率低,因为会引起其它元素位置变化。

④、Map适合存储键值对数据。

⑤、多线程同步问题:

HashSet、TreeSet线程不同步;

ArrayList、LinkedList线程不同步;

Vector线程同步;

HashMap线程不同步;

Hashtable线程同步。

2、ArrayList与LinkedList:

①、优点:

ArrayList:基于动态数组的数据结构,地址连续,一旦存储好,查询效率高;

LinkedList:基于链表的数据结构,地址任意,增删操作效率高。

②、缺点:

ArrayList:地址连续,增删需要移动数据效率低;

LinkedList:地址任意,要移动指针,查询效率低。

③、适用场景:

ArrayList:适用于对数据多次查询和访问时;

LinkedList:适用于对数据需要多次增删操作时。

3、ArrayList与Vector:

①、底层都是数组,多线程安全问题不同:

ArrayList:线程不同步,效率高;

Vector:线程同步,多线程访问不会产生不确定结果,执行效率低。

②、使用场景:

需要线程安全时使用Vector;

如果不考虑线程安全因素时使用ArrayList。

4、HashSet与TreeSet:

①、底层实现:

HashSet:哈希表实现,数据无序,可以放null但只能存放一个,值不重复;

TreeSet:二叉树实现,数据自动排序,不允许有null值。

②、使用场景:

HashSet基于哈希算法实现,其性能优于TreeSet;

一般不需要排序时都用HashSet;

如果需要排序就要选择TreeSet。

5、HashMap、TreeMap与Hashtable:

①、线程安全问题:

HashMap、TreeMap线程不安全;

Hashtable线程安全。

②、使用场景:

HashMap适用于增删元素和定位元素;

TreeMap适用于按自然顺序遍历键(key)。

十、Struts2

1、struts2的工作流程:

①、客户端初始化一个指向servlet容器的请求;

②、这个请求经过一系列过滤(Filter);

③、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

④、如果ActionMapper决定需要调用某个Action,FilterDispatcher就把请求的处理交给ActionProxy;

⑤、ActionProxy通过Configuration Manager(配置管理器)询问框架的配置文件,找到需要调用的Action类;

⑥、ActionProxy创建一个ActionInvocation(Action的调用者,在Action的执行过程中,负责Interceptor、Action、Result等一系列元素的调用)的实例;

⑦、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(intercepter)的调用;

⑧、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(也不完全是,也可能是一个Action链)一个需要被展示的jsp页面。

2、struts2的优点:

①、struts2的应用可以不依赖与Servlet API和Struts API,struts2属于无侵入式设计,而struts1属于侵入式设计;

②、struts2提供了拦截器,利用拦截器可以进行AOP(面向切面编程)编程,实现如权限拦截等功能;

③、struts2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型;

④、struts2提供多种表现层技术;

⑤、struts2的输入校验可以对指定方法进行校验。

⑥、struts2框架更加简单的将jsp页面与Action进行融合;

⑦、struts2框架集成了很多MVC的常用功能,如:校验、国际化、拦截器等;

⑧、Action的代码充分与底层的Servlet解耦,不需要引入Servlet的相关对象。

十一、Hibernate

1、Hibernate简介:

Hibernate是一个完全基于Java面向对象的ORM持久层框架,Hibernate完全对Java对象进行操作,使用Hibernate框架提供的API来进行数据库的操作,完全的ORM映射,能够把数据库中的表和java类中的所有信息进行映射。

2、Hibernate的优点:

①、完全面向对象,对数据库的操作大部分都是通过对Java类对象的操作来实现的,看不到SQL,看不到底层的JDBC;

②、ORM(对象关系映射)映射,实现了数据库与Java类之间的映射,更大的支持面向对象,让程序对对象的操作映射到了数据库的层面;

③、支持跨数据库平台,方便数据库的迁移;

④、关系映射能够满足很多业务场景(一对一、一对多、多对多等);

⑤、支持一些高级功能,包括一级缓存、二级缓存、延迟加载等。

3、Hibernate的缺点:

①、数据量大时会影响Hibernate的性能,做数据量大的项目比较吃力;

②、SQL相关的程序不可控,无法直接的对SQL进行优化,都需要通过Hibernate来生成SQL。

4、Hibernate的主键生成策略:

①、Increment(Hibernate生成):

 

说明由Hibernate来生成主键,Hibernate会在插入数据之前下一条SQL语句(select  max(主键列名) from 表名)来查询表中的最大主键,将其加1作为要插入数据的主键,并且set给对象。

②、Identity(数据库生成):

主键由数据库生成,如果数据库没有生成就会报错,一般情况会将主键设为自增。

③、UUID(Hibernate生成):

Hibernate生成一个128-bit的字符串作为标识,保证每次生成都是唯一的。

④、Assigned(程序员编写):

程序员在save之前对对象的id进行赋值。

5、Hibernate的工作流程:

①、读取并解析配置文件;

②、读取并解析映射文件,创建SessionFactory;

③、打开Session;

④、创建事务Transation;

⑤、持久化操作;

⑥、提交事务;

⑦、关闭Session;

⑧、关闭SessionFactory。

6、Hibernate中Bean的三种状态:

①、瞬时态:new出来或者被实例化时,在Java的内存中,但还没有与Hibernate进行对象的关联,没有进入Session缓存,此时的对象必须经过Session的方法才能进入缓存变成持久状态;

②、持久态:通过Hibernate从数据库里取出来的数据都是持久态,对象发生变化之后,直接提交事务就能同步到数据库,进而变成游离态;

③、游离态:Hibernate将事务提交,对象通过持久态变成游离态,完成与数据库的同步。

十二、Spring

1、Spring简介:

Spring是轻量级的JavaEE框架,集成了Java企业级开发当中大部分的功能与组件,同时可以集成很多第三方框架。

2、Spring概要:

、控制反转(IOC):

传统方式对象的实例化由程序来控制,IOC指的就是将控制权反转,不由程序来控制实例化对象,而由IOC容器来做,就是由IOC容器来统一管理对象的实例化。

②、依赖注入(DI):

DI是将依赖关系放入IOC容器中,由容器来管理依赖,我们通过容器只需要拿到实例即可。

③、解耦:

在代码中可以充分的降低类与类之间的耦合度,这种耦合的关系交给容器来处理。

、面向切面编程(AOP):

把相同的功能抽取出来共同处理。

 

posted @ 2017-06-22 10:25  鱼笑笑  阅读(171)  评论(0编辑  收藏  举报