设置超时:采用HTTPclient访问远程地址并提交数据的过程如下:1建立Socket连接2通过GET/POST方法提交数据3等待对方服务器应答,接收返回数据因此从上述过程看,超时会涉及1和3,也就是说超时的原因主要有二:一是建立网络连接慢,二是虽然成功建立连接但是对方页面处理过慢,返回数据超时。而这两个过程是互不覆盖的。因此,超时就得针对这两个过程设置:client.getHttpConnectionManager().getParams().setConnectionTimeout(30000);//针对连接建立时间client.getHttpConnectionManager().getParams().setSoTimeout(3);//针对页面返回数据时间Servlet对于servlet的认识,对于forward和redirect概念Servlet运行在servlet容器中,其生命周期由容器来管理。他的生命周期通过servlet接口中的init()、service()、destory()方法1.从地址栏显示Forward:是容器控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个地址的URL的响应内容读取过来,发送给浏览器,浏览器不知道服务器发送的内容是从哪里来的,所以它的地址栏中还是原来的地址Redirect就是服务器根据逻辑啊,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,并且可以看到跳转后的链接地址。Forward更加高效,并且有助于隐藏实际链接2.从数据共享来说forward:转发页面和转发到的页面可以共享request里面的数据.redirect:不能共享数据.jsp和servlet的区别jsp是servlet技术的扩展,本质上是servlet的简易方式,更强调应用的外表表达。Jsp编译后就是“类servlet”。他们最主要的不同是servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离出来。而JSP的情况是Java和HTML可以组合成一个扩展名为。Jsp的文件。JSP侧重于视图,servlet主要用于控制逻辑Jsp编译过程Web容器处理JSP文件请求的执行过程主要包括以下4个部分:1.客户端发出Request请求2.JSPContainer将JSP转译成Servlet的源代码3.将产生的Servlet源代码经过编译后,并加载到内存执行4.把结果Response(响应)至客户端我先以tomcat中的jsp编译过程为例,tomcat先将整个jsp页面的代码读取出来,写到一个新的Java文件中。(在读取jsp文件时,会获取他的编码格式,先读取pageencoding,如果pageencoding没有指定,他会读取contenttype的编码格式,如果contenttype也没有指定,就会使用默认的ISO-8859-1编码格式)Tomcat读取完jsp文件后,会将这些内容写到一个新文件中(默认UTF-8)格式,然后编译当jsp文件显示时,会使用contenttype中指定的MIME类型和charset.如果charset没有指定,就使用pageEncoding中指定的编码,如果pageEncoding也没有指定,就使用默认的ISO-8859-1编码。Jsp和servler的执行性能只在第一次有差别,因为jsp在执行一次过后,会被编译成servlet的类文件,即。Class,当再重复调用执行时,就直接执行第一次所产生的servlet。因此除了第一次,之后的jsp和servlet执行执行速度几乎相同。servlet的生命周期Servlet运行在servlet容器中,其生命周期由容器来管理。他的生命周期通过servlet接口中的init()、service()、destory()方法Servlet的生命周期又包含了4个阶段:1加载和实例化:servlet容器启动时,或者在容器检测到需要这个servlet来响应第一个请求时,创建servlet实例。2初始化,初始化就是servlet会调用提供init(),对于每一个servlet实例,init只被调用一次。3请求处理,Servlet容器调用Servlet的service()方法对请求进行处理4服务终止:当容器检测到一个Servlet实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久存储设备中。UMLUML类图怎么画?类与类图之间的关系。UML类图用rose画的比较多,或者是微软的visio也可以。1.关联关系:直线。关联是一种结构化的关系,指一种对象和另一种对象有联系。给定有关联的两个类,可以从一个类的对象得到另一个类的对象。关联有两元关系和多元关系。两元关系是指一种一对一的关系,多元关系是一对多或多对一的关系。一般用实线连接有关联的同一个类或不同的两个类。当你想要表示结构化关系时使用关联。2.依赖关系:带箭头的虚线。依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一个事物使用另一个事物时使用。3.继承/泛化:带三角箭头的实线。泛化是父类和子类之间的关系,子类继承父类的所有结构和行为。在子类中可以增加新的结构和行为,也可以覆写父类的行为。4.实现:带三角箭头的虚线5.聚合:带空心菱形的虚线6.组合:带是新菱形的虚线设计模式设计模式,画出prototype设计模式老板说:“给我盖一座大楼。”工程师说:“盖什么样的大楼呢?”老板指着身后的一座楼说:“和那个一模一样的从老板的角度来讲,他采用的就是,Prototype模式,即原型模式。否则,他需要再花费一些时间和工程师一点一点的探讨关于大楼的一些设计问题。prototype模式(原型模式),是一个使得新对象不用使用构造器来创建对象的模式*试想如果你要创建一个新对象,实际上这个对象已经创建过了,我不想再调用它的构造器来创建*那我能不能从这个已创建的对象身上“克隆”新的对象呢?呵呵,这就是PROTOTYPE模式,这个*已创建的对象就称为原型。在一个图形编辑器中,每一个图形元素,如线、圆、文字等都应该支持拷贝操作,即点中图形,按下Ctrl+C,再按下Ctrl+V后就会复制一个新的图形。显然这是一种clone操作。所以在每个从Graphic派生出的图形子类都应运用Prototype模式,加上Clone操作16.对设计模式的理解,工厂模式的描述.举例说明XX模式在项目中的实现过程。每个模式都描述了一个我们在实际中不断出现的问题,然后描述该问题的解决方案的核心,通过这种方式你可以无数次使用那些已有的解决方案,无需重复相同的工作。主要用到了MVC的设计模式用来开发JSP/SERVLER的j2ee的相关应用。还有简单工厂模式单例模式:单例模式作用是保证Java程序中,一个类class只有一个实例的存在SPRINGSpringmvc是否是线程安全的Spring的controller是singleton的,每个request过来,系统都会用原有的instance去处理,这样导致了两个结果:我们不用每次创建controller,减少了对象创建和垃圾回收的时间。由于只有一个controller的instance,当多个线程调用它的时候,它里面的instance变量不是线程安全的。Spring相关IOC:Spring的控制反转IOC降低了业务逻辑中各个类的依赖关系、作用域:singleton(bean被标识为singleton时候,spring的IOC容器中只会存在一个该bean。),prototype,每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都会产生一个新的bean实例,相当一个new的操作request,request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTPrequest内有效。sessionsession作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTPsession内有效,applicationspring里的AOP:AOP:面向切面编程。AOP优势:1允许开发者使用声明式企业服务,比如事务服务器、安全性服务;EJB开发者都知道,EJB组件能够使用J2EE容器提供的声明式服务,但是这些服务要借助于EJB容器,而SPRINGAOP却不需要EJB容器,借助于SPRING的事务抽象框架就可以这些服务。2开着可以开发满足业务需求的自定义切面。3.开发springaopadvice很方便。因为这些aopadvice只是pojo类,借助SPRING提供的proxyFactoryBean,能够快速的搭建springAOPAdvice.通知(Advice):用于告知系统将有哪些新的行为。切入点(Pointcut):定义了通知应该在应用到那些连接点。目标对象(Target):被通知的对象。代理(Proxy):将通知应用到目标对象后创建的对象。spring里面怎么配置单例bean,以及Bean的注入方式spring可以对定义的bean设置scope属性,配置单例就是把scope设置为singletonbean的注入方式:1通过构造器注入2通过setter注入3通过接口注入String2.stringbuffer和stringbuiler区别StringBuffer的长度是可变的,如果经常对字符串进行操作的话,使用StringBuffer,他是线程安全的。StringBuilder一般应该优先使用stringbuilder累,因为他支持stringbuffer所有的操作,还由于他不执行同步,所以速度更快3.stringbuffer是怎么实现的c.equal用法,复杂对象equal是怎么用的答:(是覆盖object对象的equal没有覆盖就按object的equal来比的object的equal是==来判断的也就是指向同一个内存区域的就相等)equals是比较二个对象的属性值是否相等,==用于比较基本类型数值是否相等,及地址是否相等,可以这样回答复杂OBJECT中的EQUAL方法,通过多态来实现扩展自已所需要的需求equalsequals方法对于普通的类是比较引用是否相等,和==效果一样equals方法对于基础数据类型的包装类来说,他是比较的值,对于基本数据类型的包装类来说,使用“==”才是比较的引用String这个类的equals方法比较特殊,它先比较引用,如果引用相等,那么返回值就是true,如果引用不相等,那么再比较值,如果值相等,那么返回值也是true,只有当引用和值都不相等的情况下,返回的才是false23.final关键字----例如:final关键字在java的用法,finally和finalize、Final:是修饰符;如果一个类被声明为final,意味着他不再派生出新的子类,不能作为父类被继承,因此一个类不能即被声明为abstract,又被声明为final。将变量和方法声明为final,可以保证他们在使用过程中不会发生改变。被声明的final变量必须在声明时,付初始值,在以后的引用过程中,只能被读取,不能被修改;被final声明的方法也是只能被使用,不能重载Finally:是异常处理语句中进行清理操作。在异常处理的最后执行Finalize:方法名。是在垃圾回收器前将对象从内存中清理出去之前,做一些清理工作STRUTS15.struts1和struts2的区别?1)action方面:1的action必须继承抽象基类,而2不需要。2)线程方面:1的action必须是单利而且必须是线程安全的,因为一个action实例就要处理所有请求,而2的action为每个请求创建一个实例所以不存在线程安全的问题3)formbean,获取数据:1的formbean必须继承抽象基类,而且与JavaBean重复造成了一些重复