css和div 开发的优势?
A、显示和内容实现分离
B、有利于搜索引擎搜索
C、有利于维护和程序的扩展
2. 谈谈页面间的参数传递有哪些方式 ?
A、通过作用域对象session、request 的setAttribute()和getAttribute()方法进行参数传递。
B、<jsp:forward>
<jsp:param name= value=>
</jsp:forward>
C、request.gerRequestDispatcher(“1.jsp?name=XX”).forward(request,response);
D、<jsp:useBean id= class= scope=request/session>
java servlet api中forward() 与redirect()的区别?
1.forward客户端请求服务器一次,redirect请求服务器两次,所以forward方式可以获得request作用域的信息,而redirect方式不能获得。
2.forward由request对象发出,而redirect由response对象发起
3.redirect()可以跨越不同的工程之间。而forward()只能在一个工程中使用
cookie被禁止后怎样使用session?
URL重写,对所有页面涉及的连接都使用url重写方式。从而将JsessionID以参数的方式链接到URL后面。保证每次页面提交时服务器都能获得sessionID,从而维持和客户端的状态
25. 说说preparedStatement和Statement的区别
1) 效率:预编译会话比普通会话对象,数据库系统不会对相同的sql语句不会再次编译
2) 安全性,可以有效的避免sql注入攻击!sql注入攻击就是从客户端输入一些非法的特殊字符,而使服务器端在构造sql语句的时候仍然能够正确构造,从而收集程序和服务器的信息和数据。
Servlet编写后需要在WEB应用的web.xml进行注册,从而能让WEB容器识别用户编码的Servlet。但JSP由容器来管理,所以无需注册。
解决Servlet线程安全问题方法有三种
1)编写Servlet类的时候,实现SingleThreadModel接口,将Servlet变成单线程机制。
2)涉及对共享资源访问的时候,使用synchronized同步加锁,实现共享资源的保护。
3)尽量不在Servlet中定义成员变量,使用局部变量。
44. session对象是什么时候产生的,什么时候销毁的?
当用户访问web容器,而容器调用了request.getSession()方法后,产生Session对象。用以保存客户端在服务器上的信息。同时给这个Session分配一个唯一的标识ID。并产生一个set-cookies的响应头,以JsessionID作为键,标识ID作为值向客户端的cookie中写入内容,当客户端下次再发出请求时,就会将这个JsessionID以请求头的方式向服务器进行发送。而容器读取了JsessionID请求头后,就会根据这个ID找到相对应的Session对象,从而维持服务器和客户端的状态。
销毁session方法有三种
1)session超时
2)调用session对象的invalidate()方法
3)web容器关闭或崩溃
程序能控制是前二种。
46. session和cookie有什么区别。
1) session保存在服务器,客户端不知道它的信息;而cookie保存在客户端,服务器知道其中的信息。
2) session中 保存的是对象,而cookie中保存的是字符串
3) session是不能区分路径的,同一个客户在访问web服务器之间,在任何地方都能够访问得到session中保存的信息的。而cookie如果设置了路径参数,同一个网站下的不同路径的cookie互相是访问不到的。
4) session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到sessionid=KWJHUG6JJM65HS2K6之类的字符串。
51. 请求转发和重定向的区别。
1) 内部转发客户端向服务器发起一次请求,重定向客户端向服务器发出两次请求
2) 内部转发由request对象发起,重定向是response发起的
3) 内部转发不会引起地址栏的变化,而重定向会导致地址栏变化
52. JSP中动态包含和静态包含的区别。
1) 静态包含在转换成为java文件的时候将要包含的文件包含进来,作为一个整体编译。动态包含是各个包含文件分别转换,分别编译。
2) 静态包含在两个文件中不能有相同的变量,动态包含允许
3) 静态包含只能包含文件,动态包含还可以包含servlet输出的结果
4) 静态包含不能使用变量作为文件名,动态包含可以使用变量作为文件名
5) 动态包含文件发生变化,包含文件会感知变化。
66. 请谈谈请求转发的原理?
请求转发是针对同一工程下资源的转发。客户端在这个过程中,只请求服务器一次,请求转发由request.getRequestDispather(“”).forward(request,response).
67. 请说明重定向的原理?
重定向由response发起。当用户请求服务器时,由服务器向客户端发送一个302的状态码,并产生一个Location的响应头。当客户端接受到这样的状态码时,会马上读取Location响应头,并将地址栏改为Location里的内容。然后再向服务器发出请求。这个过程中客户端发出了两次请求。并可向不同的服务器发送请求。
96. session如何过期?项目中该怎么应用?
setMaxInternalTime(); session.invalide();….
在web.xml中加入
<session-config>
<session-timeout>30</session-timeout>
</session-config>
8. request.getAttribute() 和 request.getParameter() 有何区别?
getParameter得到的都是String类型的。或者是http://a.jsp?id=123中的123,或者是某个表单提交过去的数据。
getAttribute则可以是对象。getParameter()是获取POST/GET传递的参数值;
getAttribute()是获取对象容器中的数据值request.getParameter()是接受从浏览器上发出的请求,返回的一定是一个String。
request.getAttribute()一般是取从Servlet上setAttribute()的对象,返回可以是各种形式(Object)
12. JSP中动态INCLUDE与静态INCLUDE的区别?
答:动态INCLUDE用jsp:include动作实现
<jsp:include page=included.jspflush=true />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file=included.htm %>
13、页面间对象传递的方法
request,session,application,cookie等