常见面试题三——请简述Struts的运行流程
回答:Struts是一个基于MVC模式的框架,所以它的运行流程是从控制器开始:
第一、客户端发送请求到到ActionServlet,ActionServlet根据客户请求的地址(通常都是XXX.do),在struts-congfig.xml文件当中找到与这个地址匹配的Action,并找到与这个Action匹配的ActionForm。
第二、接受客户端发送请求当中所携带的数据,生成ActionForm对象,并调用该对象的setter方法,将这些数据设置给ActionForm对象的成员变量;
第三、如果在Action的配置当中,validate属性的值为true,则会调用ActionForm的validate方法对客户端提交的数据进行验证。如果验证的过程当中产生了错误,ActionServlet会将请求转发到input属性所指定的页面,显示错误信息。如果validate属性的值为false,则不进行验证工作;
第四、如果验证的过程当中没有产生错误,则会生成Action的对象,并调用其execute方法;
第五、ActionServlet根据Action对象的execute方法所返回的ActionForward对象,将请求转发给下一个Action,或者是其他的服务器端资源;
第六、产生视图,并发送给客户端;
5问题你常用的Struts类有哪些?哪个是Controller?
回答:最常用的Strurts类有ActionServlet,Action,ActionFrom,ActionMapping,ActionForward以及ActionErrors和ActionError等等。
1.ActionServlet主要是用来接收客户提交的请求,将请求当中所携带的数据封装到ActionForm当中,然后调用Action的execute函数,并将ActionForm对象作为参数传递到该方法当中。最后根据这个方法所返回的ActionForward对象来决定将请求转发到下一个Action或者是jsp等资源;
2.ActionForm的作用分为两个部分,第一这个对象封装了客户从表单当中所提交的数据,第二是ActionForm当中有一个validate方法,这个方法的作用是验证客户提交数据的有效性;
2.Action的主要作用是处理请求。通常的做法是在Action的execute方法当中调用业务层对象,进行业务处理,并根据业务处理的结果,返回不同的ActionForward对象;
3.ActionMapping对象代表了struts-congfig.xml文件当中的action标签的配置信息,我通常会使用这个对象得到ActionForward对象,常用的方法有findForward和getInputForward;
4.ActionForwad对象通常代表了一个Web资源,可以是JSP,Servlet或者是另外一个Action。这个对象对应的是struts-config.
xml文件当中的forward元素;
5.ActionError代表了一个错误信息,这个错误信息是一个键值对,配置在struts的资源文件当中。通常是在ActionFrom的validate方法当中验证客户从表单当中所提交的信息,如果不符合验证规则,就生成一个ActionError对象,将这个对象添加到ActionErrors对象当中。然后跳转到页面上使用ht
mlerrors标签进行显示;
在Struts框架当中,ActionServlet和Action各自承担了一部分控制器的责任,总的来说还是ActionServlet更加侧重于控制器的功能。
6问题:你是否经
常用连接池?请说明其含义、作用和
工作过程?
回答:连接池的核心思想是连接的复用。通过建立一个连接池,可以避免数据库连接对象频繁简历和销毁所带来的性能开销。连接池在刚创建时,会一次性的生成多个连接,放置在连接池当中,当应用程序需要访问数据库时,就会从连接池当中取得连接对象,而不是新生成连接对象,应用程序对数据库的访问结束时,再将连接对象返还到连接池当中,而不是将连接对象销毁。如果应用程序的并发量大,需要使用的链接对象超过了连接池刚创建时的对象个数,这时就会创建新的连接对象。但是连接池通常都会配置最大连接数,当创建的连接总数超过了达到最