您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > JAVA技术综合面试题目(含参考答案)
1/37目录1Struts框架..............................................................22Spring框架..............................................................83AJAX技术...............................................................144Hibernate框架..........................................................175框架综合运用............................................................246J2EE初级题目...........................................................277J2SE初级题目...........................................................332/371Struts框架1.Struts框架的整体运行流程在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象,例如:Action的映射信息存放在ActionMapping对象中.当ActionServlet接收到一个客户请求时,将执行如下流程.A.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;B.如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;C.根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;D.如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象,就表示表单验证成功;E.ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;F.Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件;G.ActionForward对象指向JSP组件生成动态网页,返回给客户2.ActionServlet在Struts框架中的总体作用功能是什么A.在web应用启动时ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象,例如:Action的映射信息存放在ActionMapping对象中。B.ActionServlet是整个struts框架的骨干,也是主要的控制部件,它能够处理客户request并且决定由哪个Action处理客户request。它象一个Action工厂,创建基于客户request请求的Action类的对象3/373.Struts框架的后缀名一般为.do,后缀后能不能更改,如果能更改的话,如何进行更改后缀名可以更改,在web.xml中把servlet-mappingservlet-nameaction/servlet-nameurl-pattern*.do/url-pattern/servlet-mapping中的url-pattern值改成你想要的后缀名就可以了。4.如何在Struts-config.xml中配置数据源以及获取数据源data-sourcesdata-sourcekey=SQLtype=org.apache.commons.dbcp.BasicDataSourceset-propertyproperty=driverClassNamevalue=相应的驱动名/set-propertyproperty=urlvalue=相应数据库的url/set-propertyproperty=usernamevalue=用户名/set-propertyproperty=passwordvalue=密码//data-source/data-sourcesKey绑定在ServletContext上的DataSource实例的索引键,若不设定则缺省为Action.DATA_SOURCE_KEY,如果在应用程序中有多于一个的DataSource,则必须设置Key的值。DriverClassName所用的JDBC驱动类(必须的)如:com.microsoft.jdbc.sqlserver.SQLServerDriverurl所用的JDBC的URL(必须的)如:jdbc:microsoft:sqlserver://xg088:1433MaxCount同时打开的最大连结数,缺省值为2(可选的)MinCount同时打开的最小连结数,缺省值为1(可选的)User连结到数据库的用户名(必须的)Password连结到数据库的密码(必须的)Description关于DataSource的描述信息(可选的)ReadOnly如果设为true,则表示该连结是只读的,缺省为false。(可选的)LoginTimeout创建连结的最大允许时间,以秒为单位。(可选的)AutoCommit如果为true,则每次execute之后会强制回滚。缺省为true。(可选的)4/37在action中只要继承了org.apache.struts.actions.Action及子类,即可通过getDataSource方法获得数据源,代码如下://多个数据源DataSourcedatasource=this.getDataSource(httpServletRequest,key值);//单个数据源DataSourcedatasource=this.getDataSource(httpServletRequest);5.Struts-config.xml文件action配置中的attribute属性和name属性有什么区别name:用来表示Actionform的名称,attribute:表示ActionFrom的实例放到作用域中的名称.6.Struts中的Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安全?如果是,说明原因不是线程安全的。在Struts的生命周期中,只会为每个Action类创建一个实例,所有的客户请求共享这个实例。因此,必须保证在多线程环境中,Action也能正常工作。因此在Action类中要谨慎使用实例变量。如果在Action类中定义了实例变量,那么在Action实例的整个生命周期中,这个实例变量被所有请求的线程共享。因此不能在Action类,特别是execute方法中定义代表特定客户状态的实例变量。如果要采用实例变量,需要采用Java的线程同步机制。7.Action的Execute方法有几个参数,这几个参数的具体作用是什么一共有4个参数ActionMappingmapping获取映射ActionFormform获取表单HttpServletRequestrequest获得请求HttpServletResponseresponse获得响应8.Action的Execute方法的返回值是什么类型,有几种方式可以返回此类型Action的Execute方法的返回值的类型是ActionForward,返回此类型的方法有三种:1、通过new一个ActionForward,传入它要去的页面的路径;2、通过mapping.findForward()的方法,通过action配置中的forward属性来找到相应跳转的页面;3、通过mapping.getInputForward()的方法,根据action配置中的input属性来5/37查找。9.ActionFrom中对于错误消息的存取是如何存取的,页面上面是如何显示ActionFrom中存放的出错消息ActionForm中的错误消息是通过ActionForm中的validate方法来进行验证的,validate()方法会传回ActionErrors对象,ActionErrors可以储存ActionError的讯息,这时ActionServlet就不会继续进行接下来的工作,而是导回structs-config.xml所设定的位置,并forward至input属性所设定的位置。页面上是通过struts提供的html:errors标签来显示出错消息的。10.普通的Action对于消息的存取是如何实现的,页面上面是如何显示Action中存放的消息Action对于消息的存取是通过ActionMessages来实现的,ActionMessages以一个HashMap存储ActionMessage.Map中的key是一个标识,其对应的value是一个List对象,所有的ActionMessage存储在List中.也就是说key标识了一组ActionMessage.页面上是通过struts的html:messages/的标签来显示的。11.普通的ActionForm和动态的ActionForm有什么区别,在动态的ActionForm中如何设定一个日期类型的属性1.动态的ActionForm,由actionform继承而来,之所以有这个东西是因为,它特点是不需要FormBean,而是在struts-config.xml中通过form-property来设置form的表单字段属性.优势是减少在大型开发过程中formbean的增加而显得程序臃肿,给维护和升级带来极大的不便.2.需要注意的是:在JSP或Action中访问动态ActionForm时与标准的ActionFrom有所不同,标准ActionForm为每个属性均提供了一对getXXX()/setXXX()方法,通过调用getxxx()/setxxx()方法即可读取或设置ActionForm某个属性.而DynaActionForm则把所有的属性保存在一个Map类对象中,只能通过get()和put()来存取其属性值.如,从动态表单实例中读取会员的注册信息:Stringusername=form.get(username).toString();Stringpassword=form.get(password').toString();Stringphone=form.get(phone).toString();在动态的ActionForm中,要设置一个日期类型的属性,有两种方式:6/371.直接将数据类型设置为java.sql.Date,但是在页面上必须输入yyyy-mm-dd格式的日期才能行。2.将类型设置为java.lang.String,不过后台需要转换。12.动态ActionForm是以什么方式存取表单控件的值的。要使用动态ActionForm取得一个控件的值是如何取得动态ActionForm是通过在配置文件中设置相应的表单控件的名称的属性来实现表单控件值的存取。取得动态ActionForm的控件的值的方法有两种,一是通过request.getParameter()的方法来获得,二是使用动态的ActionForm来获取值,只要调用相应的动态ActionForm的get()方法,如:testDynamicActionForm.get(控件名称)。13.普通的Action与DispatchAction的区别是什么普通Action通常只能完成一种业务操作.DispatchAction可以处理多个业务请求,只不过再配置Action的时候需
本文标题:JAVA技术综合面试题目(含参考答案)
链接地址:https://www.777doc.com/doc-2878697 .html