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 * from a $name$ ,则在传入参数可以queryForList(
"users ", "where name= ‘张三 ‘ ");
用##则是预编译处理,传入的是什么类型就是什么类型,如下列映射:
select * from a where a.name=#name# ,
你在传入参数时可以queryForList( "users ", "张三 ");则生成的sql语句是select * from
a where a.name= ‘张三 ‘。
#表示参数的方式传入类似于jdbc语句里的?,$就是简单的字符串替换,用相应的值替换$$里的内容。由此我们可以发现,使用$$是一件很危险的事情,有导致sql注入漏洞的风险。
25、sql更新多列的操作
UPDATE Person SET Address = ‘Zhongshan 23‘, City =
‘Nanjing‘WHERE LastName = ‘Wilson‘
26、将oracle查询记录导出到文件
spool
d:\output.txt;
select * from employees;
spool
off;
这样就可以将查询结果保存到D盘的output.txt文件中了。
27、不能运行tomcat里面的startup.bat文件解决办法
出现这个问题是因为在配置JAVA_HOME的时候出了点问题,如果JDK装在D盘,应该配置成:D:\jdk1.6.0_22\
最后是一个斜杠,而不是分号。
28、js里面遇到要用到某个函数的时候怎样判断加不加括号
搞清楚就知道一点不乱了:
函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。
不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。
29、Ext
renderer参数相关
renderer:function(value, cellmeta, record, rowIndex,
columnIndex, store){
.....
}
value是当前单元格的值
cellmeta里保存的是cellId单元格id,id不知道是干啥的,似乎是列号,css是这个单元格的css样式。
record是这行的所有数据,你想要什么,record.data["id"]这样就获得了。
rowIndex是行号,不是从头往下数的意思,而是计算了分页以后的结果。
columnIndex列号太简单了。
store,这个厉害,实际上这个是你构造表格时候传递的ds,也就是说表格里所有的数据,你都可以随便调用,唉,太厉害了。
30、javascript实现网页局部打印
方式一:
function Printpart(id_str)//id-str 内容中的id
{
var
el = document.getElementById(id_str);
var iframe =
document.createElement(‘IFRAME‘);
var doc =
null;
iframe.setAttribute(‘style‘,
‘position:absolute;width:0px;height:0px;left:-500px;top:-500px;‘);
document.body.appendChild(iframe);
doc
= iframe.contentWindow.document;
doc.write(‘‘ + el.innerHTML +
‘‘);
doc.close();
iframe.contentWindow.focus();
iframe.contentWindow.print();
if
(navigator.userAgent.indexOf("MSIE") >
0)
{
document.body.removeChild(iframe);
}
}
将要想打印局部内容,将包含内容的标签ID
当参数放入函数就可以了。
方式二:
JS 弹出新窗口实现打印功能(支持FIREFOX)
function doPrint()
{
bdhtml=window.document.body.innerHTML;
sprnstr="";
eprnstr="";
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
OpenWindow =
window.open("");
OpenWindow.document.write("");
OpenWindow.document.write("");
OpenWindow.document.write("");
OpenWindow.document.write("PrintPage");
// 这里写你的CSS地址
OpenWindow.document.write("");
OpenWindow.document.write("");
OpenWindow.document.write("");
OpenWindow.document.write("");
OpenWindow.document.write("");
OpenWindow.document.write("");
OpenWindow.document.write("");
OpenWindow.document.getElementById("p").innerHTML=prnhtml;
OpenWindow.document.close();
OpenWindow.print();
}
HTML调用:
xxxxxxxxxxx
31、oracle创建用户,sequences相关
create user nange identified by
nange;
grant resource,dba,connect to
nange;
//查询数据库中所有的sequence
select SEQUENCE_NAME from
user_sequences
//查询下一条
select SEQ_DEPOSIT_SCH.nextval from
dual
//查询当前条
select SEQ_DEPOSIT_SCH.currval from
dual
32、将JSON格式字符串转变为JSON对象
var jsonStr =
‘{"name":"jack","age":"18"}‘;
var jsonObj = eval(‘(‘+jsonStr
+‘)‘)
alert(jsonObj.name);//输出jack
可以写成一个方法:
function
parseToJSONData(object){
return eval("(" + object +
")");
}
33、javascript获取浏览器实际宽度和高度
宽度:document.documentElement.clientWidth
高度:document.documentElement.clientHeight
34、当Tomcat启动时出现下面的错误
[ERROR] org.apache.catalina.session.ManagerBase - IOException
while loading persisted sessions: java.io.EOFException
或者
严重:
IOException while loading persisted sessions: java.io.EOFException
严重:
Exception loading sessions from persistent storage
原因是:
是因为保存在硬盘上的session数据读取失败,问题似乎不大,但是如果不处理一下,每次启动都会出现这个问题,处理方法如下:
将work(例如:tomcat5.5.20\work\Catalina\localhost\_下面的文件清空,主要是*.ser文件,或者只是删除掉session.ser亦可。
根据上面所说,我把我的\work\Catalina\下的内容全部删除,问题成功解决。在此感谢,要不然有时候启动tom大傻猫的时候就会见到这个异常
很烦的!
35、ibatis自动生成的类的含义
int updateByPrimaryKey(User record) thorws
SQLException:按主键更新
int updateByPrimaryKeySelective(User record) thorws
SQLException:按主键更新值不为null的字段
updateByPrimaryKey应该是根据record里面的ID,然后更新record改变的值。这里是更新所有的字段
而updateByPrimaryKeySelective只是根据主键更新不为空的字段
36、Servlet设置编码问题
request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值
response.setContentType("text/html;charset=gb2312")是设置页面中为中文编码
前者是设置动态文字(参数,数据库),后者设置页面静态文字
response.setContentType指定 HTTP
响应的编码,同时指定了浏览器显示的编码.
response.setCharacterEncoding设置HTTP
响应的编码,如果之前使用response.setContentType设置了编码格式,则使用response.setCharacterEncoding指定的编码格式覆盖之前的设置.与response.setContentType相同的是,调用此方法,必须在getWriter执行之前或者response被提交之前.
37、使用javascript获取下拉列表框中的文本值
近日碰到一个问题,就是需要将用户点击下拉列表当中某个选项后,将其所选的内容保存起来,例如下面的HTML代码:
北京
上海
广州
也就是说当用户选择“上海”这一列时,需要将“上海”这个名称保存起来。其实方法很简单。看下面javascript代码:
function
isSelected(value) {
var cityName;
var city =
document.getElementById("city");
//获取选中的城市名称
for(i=0;iReferenceError错误。不过,从代码的规范性考虑,最好还是对第二行加上
var:
if(!window.myObj) {
var myObj={
};
}
或者写成这样:
if(!window.myObj) {
window.myObj={
};
}
上面这种写法的缺点在于,在某些运行环境中(比如V8、Rhino),window未必是顶层对象。所以,考虑改写成:
if(!this.myObj)
{
this.myObj={
};
}
在全局变量的层面中,this关键字总是指向顶层变量,所以就可以独立于不同的运行环境。
③还可以使用typeof运算符,判断myObj是否有定义。
if(typeof(myObj)=="undefined")
{
var myObj={
};
}
这是目前使用最广泛的判断javascript对象是否存在的方法。
推荐使用第三种。
40、Ext判断浏览器
var ua = navigator.userAgent.toLowerCase(),
02
check = function(r){
03 return r.test(ua);
04
},
05 isOpera = check(/opera/),
06 isChrome =
check(/chrome/),
07 isWebKit = check(/webkit/),
08
isSafari = !isChrome && check(/safari/),
09 isSafari3 =
isSafari && check(/version\/3/),
10 isSafari4 = isSafari
&& check(/version\/4/),
11 isIE = !isOpera &&
check(/msie/),
12 isIE7 = isIE && check(/msie 7/),
13
isIE8 = isIE && check(/msie 8/),
14 isIE6 = isIE
&& !isIE7 && !isIE8,
15 isGecko = !isWebKit
&& check(/gecko/),
16 isGecko3 = isGecko &&
check(/rv:1\.9/),
17 isBorderBox = isIE &&
!isStrict,
18 isWindows = check(/windows|win32/),
19
isMac = check(/macintosh|mac os x/),
20 isAir =
check(/adobeair/),
21 isLinux = check(/linux/);