param/>
10.javaservletapi中forward()与redirect()的区别?
1)forward内部转发,客户端向服务器发送一次请求,redirect()是客户端向服务器发送了2次请求。
2)forward是request发起的。
Redirect()是response对象发起的。
Rediect()方法可以跨越不同的工程之间。
Forward只能在一个工程中使用。
3)forward不会导致地址栏改变内容。
Rediect()会导致地址栏改变。
11.class.forName的作用?
为什么要用?
1)Class.forName()表示加载一个类。
使用这种方式用于反射方式创建对象。
2)Objeco=Class.forName().newInstance();
12.在oracle大数据量下的分页解决方法?
1)SELECT*FROM
(
SELECTA.*,ROWNUMRN
FROM(SELECT*FROMTABLE_NAME)A
WHEREROWNUM<=40
)
WHERERN>=21
mySQl的分页是怎么实现的?
Selectf_id,f_namefromt_userlimit5,10
13.cookie被禁止后怎样使用session?
1)如果客户端允许cookie,那么服务器使用cookie来维持会话
2)如果客户端不允许cookie,那么服务器使用url重写来维持会话。
Response.encodeURL(“2.jsp”);
14.项目开发经历了哪几个阶段?
15.谈谈项目的体系统架构:
客户层,表示层,业务层,数据层?
16.J2EE规范中的组件技术在项目中用到了哪些?
1)servlet
2)jsp
3)jdbc
4)xml
5)jndi
17.TCP/IP通讯和UDP通迅的区别?
1)tcp通讯面向连接,经历3次握手,udp面向无连接
2)tcp是可靠的,udp不可靠
3)tcp使用的流套接字,upd使用的自寻址套接字。
Udp发送的信息都需要封装成为一个个的数据报文。
18.浏览器和WEB服务器是用什么协议通迅的?
HTTP:
这是应用层,用于将在浏览器中输入的请求数据封装成为web服务器能够理解的格式,以便于底层tcp传输。
TCP:
底层是使用TCP建立与web服务器之间的连接。
19.网络通讯中,端口有什么含义。
端口的取值范围?
端口用于区分基于TCP/IP通讯进程(通讯应用程序)。
每个基于TCP/IP应用程序都会向操作系统申请注册一个服务,这个服务用端口来表示。
本质上来说,端口就是一段内存中的缓冲区。
我们用户程序使用的端口号:
1024---65535这个范围,0—1023是系统保留。
20.说出3个常见协议的默认端口。
http----80,ftp---21pop3:
110smtp---25
21.socket是什么,它有什么作用?
Socket是通讯的端点,它屏蔽了底层的通信细节。
我们只需要面对socket就可以实现客户端和服务器之间的通信。
至于底层如何实现信息的传送,我们无需关系。
一种基于流的套接字:
tcp通讯(Socekt,ServerSocket)
一种基于数据报文的套接字(自寻址):
UDP通讯。
(DatagramSocket,DatagramPacket)
22.TCP/IP通讯的基本步骤是什么?
服务器:
1)向操作系统注服务,绑定一个端口。
这个端口代表这个服务。
ServerSocketsserverSocket=newServerSocket(9000);
2)等待客户端的连接。
serverSocket.accept();取出一个客户端的连接socket来处理
3)从socket对象中取出outputstream,inputsteram和客户端进行交互。
客户端:
1)创建一个socket对象。
Socketsocket=newSocket(host,port);创建成功,表示与服务器建立了连接。
(经过了3次握手!
)
2)通过socket对象,取出outputstream,inputstream输入输出流来和服务器进行信息的交互。
23.UDP通讯的基本步骤是什么?
服务器端:
1)创建一个DatagramSocket对象,然后讲这个对象和一个端口绑定。
DatagramSocketsocket=newDatagramSocket(port);
2)创建一个数据报对象DatagrampPacketp=newDatagramPacket(buffer,bufferSize);
3)将数据以数据报的形式接收:
socket.receiver(p);如果客户端没有数据报文发送过来,那么服务器会一直阻塞在这个语句位置。
但是一旦收到数据报文,那么程序会往下执行。
因此,如果要接收很多数据报文,我们讲使用循环。
客户端:
1)创建一个DatagramSocket对象,无需和具体的端口绑定
2)发送数据的时候,将数据封装在数据报文对象中,因此,我要先创建一个DatagramPacket对象。
而且还应该封装ip,port端口。
3)通过datagramSocket对象发送数据:
socket.send(p);
24.JDBC访问数据库的基本步骤是什么?
1)加载驱动Class.forName(“com.mysql.jdbc.Driver”);
2)通过驱动程序管理器DriverManager获取connection对象
3)通过连接对象connection对象获取会话。
4)通过会话执行查询或者增删改差
5)关闭资源。
25.说说preparedStatement和Statement的区别
1)preparedStatement是一个预编译会话,不再需要编译相同的sql语句,所以可以提高处理速度。
2)可以防范sql注入攻击。
26.说说事务的概念,在JDBC编程中处理事务的步骤。
事务是数据库不可分割的一系列原子属性操作,是一组不可分割的单元。
事务具有原子性,一致性,隔离性,持久性。
27.数据库连接池的原理。
为什么要使用连接池。
预先获取一定数量的连接对象,放在一个数据结构中(List,Map,Array)保存起来,当需要连接对象的时候,就从数据结构中取出一个连接对象;当使用完毕后,将连接对象放回。
这样达到了连接对象的复用效果,也提高了访问数据库的效率和性能!
28.谈谈DAO模式的原理的作用。
Dao是一种设计模式。
包括3个部分:
1)dao接口
2)dao接口的实现类,也就是数据访问对象dataaccessobject
3)po对象,也就是持久化对象,它和数据表相对应。
使用Dao设计模式实现了持久层和业务逻辑的分离。
有利于维护和程序扩展。
29.servlet和jsp有什么关系?
1)servlet,jsp是服务器的组件。
Servlet和jsp都是j2ee规范中定义的。
Jsp规范后于servlet规范。
2)jsp是html文本中嵌入了java代码,成为一种脚本。
必须经过jsp引擎转换和编译后才能成为一个servlet类。
但本质上来说,jsp就是servlet。
3)在mvc的架构中,jsp只充当了数据的显示和客户数据的输入;而servlet充当了控制器的作用。
4)客户端访问一个jsp文件资源的时候,我们无需在web.xml部署描述文件中配置,web容器直接查找对应路径下jsp文件。
然后转换和编译执行。
但是如果客户端访问一个servlet资源的时候,需要在web.xml中配置这个资源。
30.jsp是如何被容器调用和执行的?
1)当客户端第一次请求一个jsp资源的时候,jsp引擎会查找这个jsp文件并且讲它转换成为一个java文件,然后编译成为一个servlet类
2)Web容器实例化这个servlet
3)Web容器调用init()方法。
在这个init方法中,调用针对jsp的JspInit()方法。
4)Web容器调用service()方法。
在service()方法中,调用_jspService()方法。
31.编写一个servlet的步骤。
1)新写一个类,然后继承HttpServlet.
2)重写doGet()或者doPost()方法。
3)在web.xml部署描述文件中定义servlet类名称以及映射路径。
32.doGet和doPost方法各有什么作用?
1)当客户端以get方式提交的时候,service()方法调用doGet()方法处理
2)当客户端以post方式提交的时候,service()方法调用doPost()方法处理
33.为什么要为servlet配置URL映射?
1)为servlet配置URL映射,就把servlet的真正的物理路径隐藏了起来,这样客户端看到的是servlet的逻辑路径,这增强了安全性。
2)如果servlet发生了物理位置上的变化,那么客户端不会发生代码上变化,我们只需要改变web.xml就行了,这增强了程序的可维护性。
3)Web容器根据逻辑路径找到物理路径。
request.getRequestURi();
34.解释web.xml中怎样配置一个servlet?
35.servlet的类架构是什么样的。
putlicinterfaceServlet
publicabstractclassGenericServletimplementsServlet
publicabstractclassHttpServerlextendsGenericServlet
36.谈谈servlet的生命周期?
1)当第一次请求到来的时候,web容器实例化一个servlet对象
2)Web容器调用servlet对象init()方法。
3)Web容器创建或者分配一个线程,然后将servlet对象以及request,response对象传入这个线程中。
4)Web容器调用对象的service()方法。
然后根据客户端不同的请求方式,调用doGet(),doPost()方法。
5)当web容器关闭的时候,web容器会调用servlet对象的destroy()方法。
37.servlet是线程安全的吗?
为什么?
不是,因为servlet是一个多线程机制。
多线程就会涉及对共享资源的访问。
也就涉及了安全。
38.你是如何处理servlet线程安全问题的?
解决线程安全的问题,可以有3种方法:
1)在编写servlet的时候,实现SingleThreadModel这个接口。
Servlet变成了单线程机制。
2)在涉及对共享资源访问的时候,使用synchronized同步加锁,实现对共享资源的访问。
3)尽量不在servlet中定义成员变量,而使用局部变量。
这3个方法中,我们最好使用第三种方法。
这样线程安全并且性能最高。
39.如何得到客户端的请求参数?
request.getParameter(“email”);====String
request.getParameterValues(“loves”);===String[]
request.getParameterMap();====返回所有的键值对。
40.request.getParameter和request.getParameterValues的区别,它们的返回值是什么类型?
request.getParameter(“email”);====String
request.getParameterValues(“loves”);===String[]
41.response对象的作用?
1)从response对象中可以获取输出流对象,从而我们可以向客户端输出信息。
2)可以使用它来实现重定向。
response.sendRedirect();
3)可以设置响应头信息。
告诉浏览器相关的内容,比如cookie,内容类型,缓存。
。
。
。
。
。
4)可以使用response对象实现url重写。
42.request对象的作用范围是什么?
作用鱼范围是一次请求响应完成,也可以说只要服务器向客户端输出内容,request对象就会被销毁。
43.session对象的作用范围是什么
存在于一次会话之间。
表象上说,就是打开一个浏览器窗口,也就意味着开始了一次会话。
当关闭浏览器的时候,也就意味着关闭了会话。
实际上,只有会话超时,那么服务器才会销毁session对象。
一次会话可以跨越多个请求。
44.application对象的作用范围是什么。
一个工程或者叫做项目启动以后,application对象就会一直存在。
当web容器关闭的时候,application才会被销毁。
45.session对象是什么时候产生的,什么时候销毁的?
a)从表面现象来说,我们打开一个浏览器窗口,就开始了一次新的会话。
b)我请求静态页面,不能开始一次会话。
c)我请求一个servlet的资源的时候呢?
会话能否产生?
对于servlet来说,必须通过request.getSession()或者request.getSession(true)的方式显示创建。
对于服务器来说:
request.getSession(),后面做了哪些工作呢:
1.服务器产生一个唯一的sessionId:
2.服务器创建一个cookie,并讲JSESSIONID作为键和值放置在cookie中。
3.服务器将cookie放置在响应头中,随着其他的响应一起发往客户端。
这个会话cookie保存在浏览器的内存中。
4.客户端通过同一个浏览器再次向服务器发起请求的时候,会将保存在浏览器内存中的会话cookie和请求参数一起发往服务器。
d)对于请求的是jsp文件来说呢?
会话自动创建。
e)从表面现象来说,我关闭一个浏览器就是关闭了一次会话。
但是从本质山过来说,关闭浏览器并没有真正销毁会话。
会话被销毁的几种方式:
1)会话超时:
httpSession.setMaxInactiveInternal(30);这里的30表示s
2)手工方式让会话失效:
httpSession.invalidate();
f)服务器通过唯一的jsessionid来标示同一个会话的。
它是通过cookie和url重写来维持会话的。
46.session的实现原理是什么?
因为http协议是一个无状态的协议,所以为了维护和保存客户端的状态,使用session来完成这个任务。
在客户端允许cookie请求下,通过cookie来装载sessionid,并通过cookie在客户端和服务器端传递。
在客户端不允许cookie的情况下,通过url重写来传递sessionid,从而维持会话.会话cookie保存在浏览器内存中。
47.项目中用到了session对象吗,在哪里用到的?
48.session和cookie有什么区别。
1)session是在服务器上。
Cookie保存在客户端。
会话cookie保存在客户端浏览器上。
2)session作为容器使用,可以保存数据。
但是,当会话结束的时候,session中保存的数据会一同销毁。
Cookie也可以保存数据,如果设置了保存的最大时间,那么数据可以保存在客户端硬盘上。
3)session依赖于cookie维护会话。
(当客户端允许cookie的时候)
49..Http协议是无状态的,服务器是用什么方式为一个客户端保存状态的?
服务器通过session来为客户端保存状态的。
50.servlet或jsp能同时响应多个客户端的请求吗?
是通过什么方式做到的?
可以,因为servlet和jsp允许在多线程中。
每次客户端请求到来的时候,web服务器都会创建或者分配一个线程来处理这个请求。
并将servlet或者jsp对象,request,response对象传入线程中。
51.请简述servlet多线程的实现方式?
每次客户端请求到来,web容器都会创建或者分配一个线程来处理这个请求,这样就实现了servlet的多线程机制。
52.在servlet中定义成员变量(全局变量),有线程安全问题吗?
如何处理?
有线程安全,尽量使用局部变量。
53.请求转发和重定向的区别。
1)请求转发客户端只向服务器发出了一次请求。
而重定向客户端向服务器发出了2次请求。
2)请求转发是request对象发起的。
重定向是response对象发起的。
3)请求转发是在一个工程或者项目之中,而重定向可以在不同的工程之间和不同的机器之间。
54.JSP中动态包含和静态包含的区别。
1)静态包含是在转换成为java文件时候,把被包含文件包含进来,然后统一编译。
动态包含是包含文件,被包含文件分别编译。
在执行的时候调用.
2)静态包含的文件名称不可以是变量。
动态包含的文件名称可以是变量。
3)静态包含的文件不能够包含html,body…,动态包含可以的。
55.谈谈MVC设计模式的概念,使用MVC的好处。
1)v是视图层,由jsp或者其他的视图来完成,接收用户的输入,并显示业务数据。
2)c作为控制去,由servlet来完成,接收客户端传递的参数,封装对象,调用模式层完成业务逻辑,然后根据业务逻辑的结果,实现转发。
3)m是模式层,也就是我们的业务层。
这里实现的是业务逻辑。
4)使用mvc最大的好处是,实现了显示和业务逻辑的分离。
56.模式1和模式2和区别。
模式1:
jsp+javabean来实现的。
在javabean中包含太多的业务逻辑。
和jsp页面完全耦合。
这个javabean是广义的javabean.而不是标准的javabean.
模式2:
现在的mvc模式。
57.过滤器的原理,在项目中哪些地方用到了过滤器。
过滤器是请求到达servlet之前筑起的一道防火墙,能够过滤请求中信息并进行拦截。
同事能够对返回的流信息进行压缩,编码,改变流中信息。
对权限的处理,字符编码格式的处理都会用到过滤器。
58.为什么要使用ajax技术?
使用ajax技术,可以局部刷新页面,而不是全部刷新页面,给用户带来了更好的体验。
因为它使用的是异步请求方式。
59.ajax的基本原理是什么。
Aynchoronized异步,javascript+xml。
使用XMLHTTPREQUEST对象来向服务器异步发起请求的。
请求的结果也通过这个对象接收。
60.使用自定义标记的好处?
代替jsp页面上嵌入的java代码。
使用了类似html的标记来代替。
有利于程序的维护。
61.编写自定义标记有哪几个步骤。
1)编写一个类,继承TagSupport或者BodyTagSupport类。
2)编写标签库描述文件tld。
并且把这个tld后缀的文件放置在web-inf下。
3)在jsp文件中使用taglib指令引入标签库。
4)在jsp文件中使用自定义标签。
62.自定义标记中,tld文件的作用是什么?
在tld文件中定义了标签处理类的名称,标签体的取值,属性的取值。
还定义了标签库的uri位置。
这样,在web容器加载tld文件后,就可以通过uri找到相应的标签库以及标签库中的标签处理类。
63.如何在jsp中使用自定义标记?
1)使用taglib指令引入自定义标签库,并定义前缀
2)在页面中通过前缀使用标签。
64.jsp和javascript的区别?
1)jsp运行在服务器端,javascript运行在客户端浏览器。
2)jsp的载体是web容器。
Javascript的载体是浏览器。
3)jsp脚本中可以嵌入javascript代码。
65.你的项目中建有多少张表,字段最多的表是哪一张?
每张表里都有些什么字段?
66.说说你项目开发的流程?
67.说说你所开发模块的业务流程,业务是什么?
68.谈谈监听器的原理、配置