【总结】Java EE知识点(持续更新)
【总结】Java EE知识点(持续更新)
2011年08月16日
1、配置struts步骤:
①拷贝struts lib目录下的所有jar文件WEB-INF/lib下
②修改web.xml文件,配置ActionServlet
③提供struts-config.xml文件
2、struts知识点:
*ActionForm是做数据收集的,ActionForm中的属性必须和表单输入域的名称一致(也就是和表单中的name名称一致)。
*ActionForm会自动收集来自客户端的表单数据,然后传给Action,Action可以直接使用ActionForm对象。然后就可以得到相应的数据了。
3、jsp两种跳转的区别(标签跳转和response.sendRedirect()跳转)
*属于服务器端跳转,跳转之后的地址栏的信息不会有任何的改变;而response.sendRedirect()属于客户端跳转,跳转之后地址栏是会改变的,变为跳转之后的页面地址。
*在使用request属性范围时,只有是服务器端跳转才能够将request属性保存到跳转页;而如果是客户端跳转,则不行。
*如果使用的是服务器端跳转,则执行到跳转语句时会立刻进行跳转;如果使用的是客户端跳转,则是在整个页面执行完之后才执行跳转。
4、MVC设计模式:
M:即model,模型,主要是业务逻辑,即javabean。
V:即view,视图,在web中通常对应于jsp。
C:即Controler,控制器,在web中对应于Servlet,主要是接收参数,调用模型层,转向的功能。
5、hibernate知识点:
hibernate是一个对象关系框架,它可以让我们面向对象的编程方式来操作数据库,它提供了Java类到数据表的映射,这样可以大大减少操作数据库的工作量。
原理过程:
*配置好hibernate的配置文件和与类对应的配置文件后,启动服务器
*服务器通过实例化Configeration对象,读取hibernate.cfg.xml文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系 *通过实例化的Configeration对象就可以建立sessionFactory实例,进一步,通过sessionFactory实例可以创建session对象 *得到session之后,便可以对数据库进行增删改查操作了,除了比较复杂的全文搜索外,简单的操作都可以通过hibernate封装好的session内置方法来实现 *此外,还可以通过事物管理,表的关联来实现较为复杂的数据库设计 优点:①避免了大量的SQL语句,我们只需要操作对象,使开发更对象化了,提高了效率 ②数据库移植性很好 ③框架无侵入性,是一个轻量级的框架。我们在保存一个类对象时,此类不需要继承Hibernate中的任何类和实现任何接口。 缺点:不适合批量的操作。不适合对象间关系太复杂的映射。 hibernate中处理延迟加载的问题:
通过HQL语句,join feth的方法,把所有需要的列都找到。
6、spring知识点:
*spring框架最核心的就是依赖注射。
*Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),通过依赖注射,用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向切面的编程)的实现(其本质上就是一种动态代理设计模式)。使用这种方式,我们可以更多的去关注核心业务操作,而不用把太多的心思花在事务处理,资源的打开和关闭等方面了。而且spring提供了对已有的优秀框架的支持,比如struts、hibernate等框架都可以放到spring里面进行整合。
7、jsp页面传值的方法
*通过form表单传值。(request.getParameter()得到)
*通过隐藏域传值,取得方法同上。
*通过url传值,在jsp后面加上?id=aaa&name=bbb 取得方法同上
8、Servlet和Struts的Action中的跳转
在Servlet的doGet()或者是doPost()方法中,可以用request.getRequestDispatcher(url).forward(request, response) ;
在Action中,则是mapping.findForward(url) ;
9、让一个表单实现多个action
一个表单,本质是是只能有一个action的,但是我们又想实现多个action,怎么办呢?我们就可以先不填表单的action,使用javascript来动态填写action,这样就实现了表面上的多action。
示例代码:
function serarch(){
fname.action="findEmp";
document.fname.submit();
}
function add(){
fname.action="addEmp";
document.fname.submit();
}
function update(){
fname.action="updateEmp";
document.fname.submit();
}
10、Http报文结构
起始行、头部信息、Body
Get和Post的区别:Get没有Body部分,不能上传文件等大数据量操作
11、Java EE分层
表现层、业务层、持久层
12、Html元素
调用外部CSS:
调用外部javascript:
13、两个div对齐问题
打开firebug,调整边距
14、下拉菜单
JQuery
filedIn filedOut
sliedUp sliedDown
15、限定IP访问
通过过滤器,检查允许IP地址中是否有此链接的IP,没有就通过过滤器返回
16、表合并
Oracle:merge()
存储过程:insert + update
17、Ioc(控制反转),DI(依赖注射)
其实就是一样的:Ioc(控制反转),纯理论;DI(依赖注射):实际实现
18、什么是AOP
面向切面编程,拦截器
19、URL-Pattern映射的两种方式
路径映射和后缀名映射
20、如何让Filter转发请求
FilterChain chain
chain.doFilter(request, response) ;
21、ibatis实现模糊查询
mysql: select * from stu where name like concat('%',#name #,'%')
oracle: select * from stu where name like '%'||#name #||'%'
SQL Server:select * from stu where name like '%'+#name #+'%
22、div、span、lable的区别
div是块级别标签
label标签主要用于绑定一个表单元素, 当点击label标签的时候, 被绑定的表单元素就会获得输入焦点
span则是行级别对普通的文本的一种容器
23、外部导入CSS、JavaScript
CSS:
JavaScript:
24、ibatis的sqlmap中,#和$的区别
用$$ 有点宏替换的意思,如下列映射:
select *