Struts2面试题
1)Struts2如何启动
Struts2是通过web.xml中的过滤器StrutsPrepareAndExecuteFilter启动的,Tomcat服务器启动的时候,会执行一次StrutsPrepareAndExecuteFilter里面的init方法,加载struts.xml 配置文件,将配置文件的内容封装为javabean存放在内存中,以后用户请求将会读取内存,读取数据,而不用每次都在struts.xml中读取。
2)Struts2的核心控制器StrutsPrepareAndExecuteFilter的作用StrutsPrepareAndExecuteFilter 主要负责拦截url请求,可以在web.xml中配置拦截的url,<url-pattern>/*</url-pattern>代表拦截所有的请求,执行doFilter方法默认情况下,如果用户请求的路径不带后缀或者后缀以.action结尾,这时请求将被转入struts2框架处理,否则struts2框架将略过该请求的处理。
3)struts2配置文件的加载顺序?
struts.xml ——> struts.properties常量可以在struts.xml或struts.properties中配置,如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值. struts.xml文件的作用:通知Struts2框架加载对应的Action资源
4)struts2是如何管理action的?这种管理方式有什么好处?
struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的。
主要用于管理一组业务功能相关的action。
在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。
5)struts2中的默认包struts-default有什么作用?
1.struts-default包是由struts内置的,它定义了struts2内部的众多拦截器和Result类型,而Struts2很多核心的功能都是通过这些内置的拦截器实现,如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。
当包继承了struts-default包才能使用struts2为我们提供的这些功能。
2.struts-default包是在struts-default.xml中定义,struts-default.xml也是Struts2默认配置文件。
Struts2每次都会自动加载struts-default.xml文件。
3.通常每个包都应该继承struts-default包。
6)struts2的action的URL访问路径由什么构成?
由两部分组成:包的命名空间+action的名称[ + action的后缀],/crud1/userAdd.action,crud1是命名空间,userAdd是struts.xml中配置的action的名称。
7)在struts.xml中可以不为action指定class属性吗?struts2中有哪些默认的属性?
可以,如果没有为action指定class,默认是com.opensymphony.xwork2.ActionSupport
默认属性:
如果没有为action指定class ActionSupport
如果没有为action指定method execute() 注意:ActionSupport的execute方法里面就一句话return "success";
如果没有指定result的name success
如果没有指定result的type dispatcher
action中默认都有一个拦截器的引用,即:<interceptor-ref name="defaultStack">;
注意:
1.一旦我们为该包中的某个action显式指定了某个拦截器,则默认拦截器不会起作用,所以此时要显式的引进默认的拦截器;
2.每个包只能指定一个默认拦截器,每个默认拦截器只针对当前包下有效。
8)struts2如何对指定的方法进行验证?
1.validate()方法会校验action中所有与execute方法签名相同的方法;
2.要校验指定的方法通过重写validateXxx()方法实现,validateXxx()只会校验action中方法名为Xxx的方法。
其中Xxx的第一个字母要大写;
3.当某个数据校验失败时,调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport),如果系统的fieldErrors 包含失败信息,struts2会将请求转发到名为input的result;
4.在input视图中可以通过<s:fielderror/>显示失败信息。
5.先执行validateXxxx()->validate()->如果出错了,会转发<result name="input"/>所指定的页面,如果不出错,会直接进行Action::execute()方法.
9)拦截器的作用?拦截器与过滤器的区别?
1)拦截器是对调用的Action起作用,它提供了一种机制可以使开发者可以定义在一个action 执行的前后执行的代码。
拦截器只能拦截Action,说明白点拦截器其实是Action的功能块,只在Action前后执行。
拦截器可以抽象出一部分代码可以用来完善原来的action。
同时可以减轻代码冗余,提高重用率。
2) 过滤器是拦截用户请求的,范围明显比拦截器大的多。
10)struts2如何完成从html表单到action的类型转换?
1.在struts2 中, 把请求参数映射到action 属性的工作由Params拦截器负责, 它是默认的defaultStack 拦截器中的一员. Params拦截器可以自动完成字符串和基本数据类型之间转换.
2.在web应用中,提交的数据基本都是字符串。
3. 对于引用类型的数据(除String、Collection)转换,需要自定义类型转换器;
4.自定义类型转化器必须实现TypeConverter 接口或对这个接口的某种具体实现做扩展,如:StrutsTypeConverter,重写convertToString和convertFromString方法;
5.两种自定义类型的转换器:
>> 局部:
创建一个属性文件: ActionClassName-conversion.properties, 该文件需和相对应的动作类(Action)放在同一个目录下, ActionClassName是Action的类名,后面的-conversion.properties 是固定写法。
在properties文件中的内容为:属性名称=类型转换器的全类名
>> 全局:
在WEB-INF/classes/ 目录下创建xwork-conversion.properties 文件. 在properties 文件中的内容为:待转换的类型=类型转换器的全类名
注意:对于转换的是属性,只需要写属性名,如果是对应的是类型,则需要写全类名
11).struts2如何防止用户表单重复提交?
第一步:在表单中加入<s:token />
第二步,使用token栏截器,定义invalid.token结果集
要使用<s:token /> 必须要在struts.xml的action中引用token的预定义拦截器。
<interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/>
当然还可以使用tokenSession
<interceptor name="tokenSession" class="org.apache.struts2.interceptor.TokenSessionStoreInterceptor"/>
12).struts2如何完成文件的上传?
1、JSP页面:
JSP页面的上传文件的组件:<s: file name=”upload”/>,如果需要一次上传多个文件, 就必须使用多个file 标签, 但它们的名字必须是相同的,即:name=“xxx”的值必须一样;
2. 必须把表单的enctype属性设置为:multipart/form-data;
3.表单的方法必须为post,因为post提交的数据在消息体中,而无大小限制。
对应的action:
4.在Action 中新添加3 个和文件上传相关的属性
5.如果是上传单个文件, uploadImage属性的类型就是java.io.File, 它代表被上传的文件, 第二个和第三个属性的类型是String, 它们分别代表上传文件的文件名和文件类型,定义方式是分别是:jsp页面file组件的名称+ContentType, jsp页面file组件的名称+FileName 6如果上上传多个文件, 可以使用数组或List。
JAVAWEB面试题(含答案)
1、jsp和servlet的区别、共同点、各自应用的范围??JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。
JSP编译后是“类servlet”。
Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑。
在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.2、cookie和session的作用、区别、应用范围,session的工作原理Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。
存储的数据量大,安全性高。
占用服务端的内存资源。
3、jstl是什么?优点有哪些??JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml和sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。
优点有:最大程序地提高了WEB应用在各应用服务器在应用程序服务器之间提供了一致的接口,最大程序地提高了1、在应用程序服务器之间提供了一致的接口,之间的移植。
2、简化了JSP和WEB应用程序的开发。
3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet 代码的程序。
在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。
4、允许JSP设计工具与WEB应用程序开发的进一步集成。
相信不久就会有支持JSTL的IDE 开发工具出现。
4、j2ee的优越性主要表现在哪些方面?MVC模式a、J2EE基于JAVA技术,与平台无关b、J2EE拥有开放标准,许多大型公司实现了对该规范支持的应用服务器。
卓望团队JAVA招聘面试题090708(金蝶外包专用)
1 基础知识:请将答案写在答题卡上1、熟悉Struts 中的一些关键类吗?写出Struts 1 , Struts 2 的工作流程。
2、写一个函数如下要求:有一个整型参数,有一个整型返回类型,给一个数字6789(整型),返回9876(整型)?(注意整数为0,和负数的情况,反转后超过整数最大值的情况)3、Java 类中的变量访问修饰符有哪几种?它们有什么区别?4、JA V A中的排序,系统内置的哪个类提供了排序的方法,排序可以实现哪个接口?5、不用new关键词创建类的实例,你有那些方式可实现。
6、简单描述AJAX技术原理;7、请描述HashMap如何实现;8、String 和StringBuilder 有什么区别?为什么StringBuilder 的性能更高一些?请从两者存储数据的方式上回答。
;2 数据库:1、Oracle中有什么建表方式,及在建表过程中要注意一些什么问题?2、表结构是(姓名,年级,课程,分数),如何查询(姓名,年级,课程,最大分数)3、使用嵌套语句查询和外连接查询,哪个速度更快?请自定义表结构并写出这两种SQL语句。
4、怎样建索引及索引的分类,索引有什么好处,要注意一些什么问题,如会不会影响其他表?5、SQL 语句中有哪几种连接方式?这几种连接方式有什么区别?给出两张表,写出这几种连接后数据的行数是多少?6、请尽自己能力写几条能代表你自己SQL水平的复杂SQL语句。
7、在开发过程中遇到过数据库锁吗?怎样解锁?8、将老数据库中的数据移植到新的数据库中,应该考虑哪些问题?9、delete from table 与truncate table的区别?10某表中有千万条数据记录,此表在软件开发过程中,有哪些重要的注意事项。
3 其他:1、请画出自己做过的一个项目的系统架构,并作必要的说明。
2、请简要描述你对面向对象编程的理解。
3、项目质量保证有哪些措施。
1.简述逻辑操作与条件操作的区别.区别主要答两点: a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型b.逻辑操作不会产生短路2.java中实现多态的机制是什么?方法的重写和重载3.作用域public,private,protected以及不写时的区别?4.extends与implements有什么不同?5.简述struts的工作流程6. 抽象类和接口的区别7.说一下servlet的生命周期8.HttpServletResponse.sendRedirect 方法和RequestDispatcher.forward方法有什么区别Class.forName作用是?有什么作用?Socket如何获得本地的IP地址Scoket中有哪几种连接方式,区别是??编写一种排序11.文件和目录(I/O)操作,如何列出某个目录下的所有文件。
江苏省电信子公司鸿信公司笔试 面试题
2013年江苏鸿信面试题1.Android中Handler基本概念和使用:在Android中进行与UI通信的开发时,经常会使用Handler对象来控制UI程序的界面,它的作用可以理解为与其他线程协同工作,接收其他线程的消息并通过接收到的消息更新UI界面。
当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉。
Handler就是把这些功能放到一个单独的线程里执行,与Activity互不影响。
Handler在android里负责发送和处理消息。
它的主要用途有:1)按计划发送消息或执行某个Runnanble(使用POST方法);2)把其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程)需要注意的是,在UI线程中启动Handler对象时,Handler与调用者Activity处于同一线程,也就是通常所说的UI线程。
每个Handler实例都会绑定到创建它的线程中(一般是位于主线程)。
2.实现多线程时,有两种方法,实现Thread类和Runnable接口,但是他们的区别在哪呢? 答案:抽象类和接口的区别如下:①在类来继承抽象类时,只需实现部分具体方法和全部抽象方法,而实现接口则要实现里面的全部方法。
②在接口中无成员变量,而抽象类中可有成员变量。
在Java中引进接口主要是为了解决多继承的问题。
3.struts2的工作流程?请求在Struts2框架中的处理大概分为以下几个步骤:1 客户端发送一个请求;2 这个请求经过一系列的过滤器(Filter),询问ActionMapper来决定这个请求是否需要调用某个Action3 如果ActionMapper决定需要调用某个Action,过滤器把请求的处理交给代理(ActionProxy)4 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action 类5.一旦Action执行完毕,在struts.xml中的配置找到对应的返回结果。
java技术综合面试题目(含参考答案)
目录1 Struts框架 (2)2 Spring框架 (8)3 AJAX技术 (14)4 Hibernate框架 (17)5 框架综合运用 (24)6 J2EE初级题目 (27)7 J2SE初级题目 (34)1Struts框架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对象中。
Struts2面试题分析_尚硅谷_佟刚_
Struts2 面试题分析1. 简述 Struts2 的工作流程:①. 请求发送给 StrutsPrepareAndExecuteFilter②. StrutsPrepareAndExecuteFilter 判定该请求是否是一个 Struts2 请求③. 若该请求是一个 Struts2 请求,则 StrutsPrepareAndExecuteFilter 把请求的处理交给 ActionProxy④. ActionProxy 创建一个 ActionInvocation 的实例,并进行初始化⑤. ActionInvocation 实例在调用 Action 的过程前后,涉及到相关拦截器(Intercepter)的调用。
⑥. Action 执行完毕,ActionInvocation 负责根据 struts.xml 中的配置找到对应的返回结果。
调用结果的 execute 方法,渲染结果。
⑦. 执行各个拦截器 invocation.invoke() 之后的代码⑧. 把结果发送到客户端2. Struts2 拦截器 和 过滤器 的区别:①、过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器。
②、Struts2 拦截器只能对 Action 请求起作用,而过滤器则可以对几乎所有请求起作用。
③、拦截器可以访问 Action 上下文(ActionContext)、值栈里的对象(ValueStack),而过滤器不能.④、在 Action 的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。
3. 为什么要使用 Struts2 & Struts2 的优点:①. 基于 MVC 架构,框架结构清晰。
②. 使用 OGNL: OGNL 可以快捷的访问值栈中的数据、调用值栈中对象的方法③. 拦截器: Struts2 的拦截器是一个 Action 级别的 AOP, Struts2 中的许多特性都是通过拦截器来实现的, 例如异常处理,文件上传,验证等。
struts2常见面试题
struts2常见面试题Introduction:Struts2是一种用于开发Java Web应用程序的开源Web应用框架。
在软件工程领域,Struts2常常是面试中的热门话题。
本文将介绍一些常见的Struts2面试题,并提供详细解答和示例。
Question 1: 什么是Struts2框架?它的主要特点是什么?Struts2是一个基于MVC设计模式的Web应用框架。
它通过集成多个核心组件(如拦截器、过滤器、表单验证等)提供了一套丰富的功能,用于简化开发和管理Java Web应用程序。
Struts2的主要特点包括:1. 松耦合:Struts2使用基于配置的方式来管理组件之间的依赖关系,降低了模块之间的耦合。
2. 灵活性:开发人员可以根据自己的需求进行扩展和定制,以适应不同的项目需求。
3. 可测试性:Struts2的组件松耦合特点使得单元测试变得容易,并且可以方便地模拟用户请求进行测试。
Question 2: Struts2的核心组件有哪些?Struts2的核心组件包括:1. Action:处理用户请求的核心组件,负责接收请求并执行相应的业务逻辑。
2. Interceptor:用于对请求进行预处理和后处理的拦截器组件。
3. Result:负责生成响应结果,可以是页面视图或其他格式的数据(如JSON、XML等)。
4. FilterDispatcher:负责将请求分发给合适的Action处理。
5. ValueStack:用于存储Action处理的结果数据,支持OGNL表达式以便于数据的访问和操作。
Question 3: 如何定义一个Struts2的Action?在Struts2中,可以通过以下几种方式来定义一个Action:1. 实现Action接口:通过实现Action接口,并提供相应的业务方法来处理请求。
2. 继承ActionSupport类:ActionSupport是一个提供了一些方便方法的抽象类,可以直接继承并实现自己的业务逻辑。
struts2面试题
struts2面试题Struts2是一个基于Java开发的Web应用程序框架,被广泛应用于企业级Java应用开发中。
在面试中,面试官可能会提出一些关于Struts2的问题,以评估应聘者的技术水平。
下面是一些常见的Struts2面试题及其详细答案,希望对你在面试中有所帮助。
1. 什么是Struts2?Struts2是一个轻量级的、基于MVC模式的Web应用程序框架。
它采用Java Servlet API和JavaServer Pages (JSP)技术,并提供了一种简单易用的方式来开发可维护和可扩展的Web应用程序。
2. Struts2的主要特性是什么?Struts2的主要特性包括:- MVC架构:将应用程序分为模型、视图和控制器,使开发更容易管理和扩展。
- 拦截器:通过拦截器可以在请求处理的各个阶段添加自定义的逻辑。
- 标签库:提供了丰富的标签库,简化了页面开发。
- 表单验证:提供了灵活且强大的表单验证机制,可以验证用户输入的数据。
- 国际化支持:支持多语言和本地化。
- 配置简单:通过配置文件来管理应用程序的行为。
3. Struts2的工作原理是什么?Struts2的工作原理如下:1) 客户端发送HTTP请求到服务器。
2) 服务器将请求交给Struts2的过滤器(Filter)。
3) 过滤器通过配置文件找到对应的Action,并调用相应的方法。
4) Action处理请求,并返回一个结果页面的名称或一个结果对象。
5) 结果页面的名称通过配置文件进行映射,服务器将其发送给客户端。
4. 什么是Struts2中的Action类?Action类是Struts2框架中的核心组件,用于处理Web请求。
一个Action类对应一个业务功能,其包含了要执行的方法和数据。
它负责接收请求、处理业务逻辑、将结果返回给前端页面。
5. Struts2中的拦截器是什么?有哪些内置的拦截器?拦截器是Struts2中的组件,用于在请求处理的各个阶段添加自定义的逻辑。
软件开发框架Struts2标签库习题与答案
一、多选题1.Struts 框架提供了哪几种标签库()。
A.HTML 标签库B.Bean 标签库C.Logic 标签库D.Template 标签库E.Nested 标签库2.下列哪个Strtus 标签能生成HTML 超链接<a> 元素()。
A.<html:html> 标签B.<html:base> 标签C.<html:img> 标签D.<html:link> 标签E.<html:rewrite> 标签3.以下哪些Struts 标签()能生成与HTML 表单相关的元素。
A.<html:link> 标签B.<html:text> 标签C.<html:radio> 标签D.<html:multibox> 标签E.<html:select> 标签4.下面哪些标签()能创建HTML 表单复选框控件。
A.<html:checkbox> 标签B.<html:radio> 标签C.<html:multibox> 标签D.<html:select> 标签E.<html:cancel> 标签5.使用下列哪个标签()能在页面输出在验证表单时发生的错误。
A.<html:multibox> 标签B.<html:errors> 标签C.<html:messages> 标签D.<html:error> 标签E.<html:cancel> 标签6.Struts Bean 标签库能提供下列哪些服务()。
A.访问HTTP 请求报头信息B.访问JSP 隐含对象C. 访问 Web 应用资源D. 定义 JavaBeanE. 输出 JavaBean7. 下列哪个标签()能访问 JSP 隐含对象。
STRUTS常见面试题_java常见面试题
STRUTS常见面试题_java常见面试题struts常见面试题篇11.简述struts框架的初始化流程。
答案:对于使用struts框架的web应用领域,在web应用领域启动时就可以读取并初始化控制器actionservletactionservlet从struts-config.xml文件中读取配置信息,把它们存放到actionmappings对象中。
在strutsframework中,controller主要就是actionservlet,但是对于业务逻辑的操作方式则主要由action、actionmapping、actionforward这几个组件协同顺利完成(也许这几个组件,必须分割至模型中的业务逻辑一块)。
其中,action扮演了真正的控制逻辑的实现者,而actionmapping和actionforward 则指定了不同业务逻辑或流程的运行方向。
2.详述struts框架积极响应客户命令的工作流程1.检索和用户请求匹配的actionmapping实例,如果不存在,就返回用户请求路径无效的信息。
2.如果actionform实例不存有,就建立一个actionform对象,把客户递交的表单数据留存至actionform对象中。
3.根据配置信息决定是否需要表单验证。
如果需要验证,就调用actionform的validate()方法。
4.如果actionform的validate()方法回到null或回到一个不涵盖actionmessge的actionerrors对象,就则表示表单检验顺利。
5.actionservlet根据ationmapping实例包含的映射信息决定将请求转发给哪个action。
如果应的action实例不存在,就先创建这个实例,然后调用action的execute()方法。
6.action的execute()方法回到一个actionforward对象,actionservlet再把客户命令发送到actionforward对象指向的jsp组件。
Struts2考试题分析
题目1以下不属于Struts2中result的type属性()A.actionB.redirectC.redirectActionD.dispatcher题目2下列有关拦截器说法错误的是?A。
struts通过拦截器完成执行action请求处理方法前一系列操作。
例如:数据封装、文件上传、数据校验等B。
在struts中,直接访问jsp页面,struts将使用默认拦截器栈处理当前请求。
C。
在执行action时,struts将执行若干拦截器1、2、3,执行action完成后,将继续执行拦截器3、2、1D。
默认情况,在一个action没有配置拦截器的引用,说明当前action将不使用拦截器题目3以下哪些是Action接口提供的返回值?A。
successB.noneC。
errorD.input题目4如果要实现struts2的数据检验功能A普通的Action类可以实现B继承自Action接口的可以实现C继承自ActionSupport类可以实现D继承自ActionValidate类可以实现题目5struts2默认的处理结果类型是:A。
dispatcherB。
redirectC.chainD.forward题目6在值栈的上下文Context中,存在一些固定的key表示不同的对象,以下描述正确的是?A。
request,表示request作用域的数据B。
session,表示session作用域的数据C.application,表示application作用域的数据D。
parameters,表示请求参数的所有数据题目7以下属于struts2配置文件中的配置元素是:()多选)A.〈package〉B.<action〉C.<form—beans〉D.〈action—mappings>题目8有关值栈 context Map栈数据操作描述正确的是?A.ActionContext.getContext()。
put(key,value)直接对context进行操作B。
