Struts1面试题
国外的一些struts面试题(4)

国外的一些struts面试题(4)问题:国外的一些struts面试题(4)回答:Question: Can I setup Apache Struts to use multiple configuration filesAnswer: Yes Struts can use multiple configuration files. Here is the configuration example:bankingorg.apache.struts.action.ActionServletconfig/WEB-INF/struts-config.xml,/WEB-INF/struts-authentication.xml,/WEB-INF/struts-help.xml1Question: What are the disadvantages of StrutsAnswer: Struts is very robust framework and is being used extensively in the industry. But there are some disadvantages of the Struts:a) High Learning CurveStruts requires lot of efforts to learn and master it. For any small project less experience developers could spend moretime on learning the Struts.b) Harder to learnStruts are harder to learn, benchmark and optimize.Question: What is Struts FlowAnswer: Struts Flow is a port of Cocoon s Control Flow to Struts to allow complex workflow, like multi-form wizards, to be easily implemented using continuations-capable JavaScript. It provides the ability to describe the order of Web pages that have to be sent to the client, at any given point in time in an application. The code is based on a proof-of-concept Dave Johnson put together to show how the Control Flow could be extracted from Cocoon. (Ref: /struts-flow/index.html ) Question: What are the difference between andAnswer: : This tag is used to output locale-specific text (from the properties files) from a MessageResources bundle.: This tag is used to output property values from a bean. is a commonly used tag which enables the programmers to easily present the data.Question: What is LookupDispatchActionAnswer: An abstract Action that dispatches to the subclass mapped execute method. This is useful in cases where anHTML form has multiple submit buttons with the same name. The button name is specified by the parameter property of the corresponding ActionMapping. (Ref. /1.2.7/api/org/apache/struts/actions/L ookupDispatchAction.html).Question: What are the components of StrutsAnswer: Struts is based on the MVC design pattern. Struts components can be categories into Model, View and Controller.Model: Components like business logic / business processes and data are the part of Model.View: JSP, HTML etc. are part of ViewController: Action Servlet of Struts is part of Controller components which works as front controller to handle all the requests.Question: What are Tag Libraries provided with StrutsAnswer: Struts provides a number of tag libraries that helps to create view components easily. These tag libraries are:a) Bean Tags: Bean Tags are used to access the beans and their properties.b) HTML T ags: HTML Tags provides tags for creating the view components like forms, buttons, etc..c) Logic Tags: Logic Tags provides presentation logics that eliminate the need for scriptlets.d) Nested Tags: Nested Tags helps to work with the nested context.Question: What are the core classes of the Struts FrameworkAnswer: Core classes of Struts Framework are ActionForm, Action, ActionMapping, ActionForward, ActionServlet etc.Question: What are difference between ActionErrors and ActionMessageAnswer: ActionMessage: A class that encapsulates messages. Messages can be either global or they are specific to a particular bean property.Each individual message is described by an ActionMessage object, which contains a message key (to be looked up in an appropriate message resources database), and up to four placeholder arguments used for parametric substitution in the resulting message.ActionErrors: A class that encapsulates the error messages being reported by the validate() method of an ActionForm. Validation errors are either global to the entire ActionForm bean they are associated with, or they are specific to aparticular bean property (and, therefore, a particular input field on the corresponding form).Question: How you will handle exceptions in StrutsAnswer: In Struts you can handle the exceptions in two ways:a) Declarative Exception Handling: You can either define global exception handling tags in your struts-config.xml or define the exception handling tags within .. tag.Example:key= database.error.duplicatepath= /UserExists.jsptype= mybank.account.DuplicateUserException />b) Programmatic Exception Handling: Here you can use try catch block to handle the exception.。
Struts面试题

Struts2面试题一.工作原理一个请求在Struts2框架中的处理大概分为以下几个步骤1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。
在表示的过程中可以使用Struts2 框架中继承的标签。
在这个过程中需要涉及到ActionMapper基本简要流程如下:1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被FilterDispatcher接收。
3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC 方式,将值注入给Aciton。
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
java常见面试题及答案第一套

为什么每次请求都要创建一个Action对象?
答:Struts2每次请求的时候都会创建一个action实例,这样会保证线程的安全。
Struts1只是在第一次请求的时候创建一个action实例,以后每次相同的请求都直接从内存中去读取,它是单例模式,安全性较差。
Struts2是如何实现MVC模式的?
答:在Struts2里面是将每次页面的请求进行处理,然后将请求需要输出的数据转发到需要做数据显示的页面。
Struts2只是起到一个数据接收和转接的功能,就是Controller控制器,而传来数据的页面叫view显示层,Struts2将数据提交给进行处理的类叫Model模型层,专门进行数据处理和数据库的连接。
heap和stack有什么区别?
答:栈是一种线形集合,其添加和删除元素的操作应在同一段完成,栈按照后进先出的方式进行处理。
堆是栈的一个组成元素。
EJB和JavaBean的区别?
答:EJB不是一般的JavaBean,EJB是企业级的JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean。
书写EJB要遵循一定的规范,另外要运行EJB,你需要有相应的EJB 容器,比如WebLogic、jboss等,而JavaBean不需要,只需要安装Tomcat就可以了。
EJB 用于服务端的应用开发,而JavaBean用于客户端应用开发。
触发器?
答:触发器是一种特殊的存储过程,主要通过事件来触发而被执行。
一组Struts的选择测试题附答案(1)

一组Struts的选择测试题附答案(1)问题:一组Struts的选择测试题附答案(1)回答:(1)在Struts应用的视图中包含哪些组件(多选)选项:(A) JSP(B) Servlet(C) ActionServlet(D) Action(E) 代表业务逻辑或业务数据的JavaBean(F) EJB(G) 客户化标签(2)在Struts应用的控制器中包含哪些组件(多选)选项:(A) JSP(B) Servlet(C) ActionServlet(D) Action(E)代表业务逻辑或业务数据的JavaBean(F) EJB(G) 客户化标签(3)在Struts应用的模型中包含哪些组件(多选)选项:(A) JSP(B) Servlet(C) ActionServlet(D) Action(E)代表业务逻辑或业务数据的JavaBean(F) EJB(G) 客户化标签(4)以下代码定义了一个变量,如何输出这个变量的值(多选)选项:(A)(B)(C)(D)(String)pageContext.getAttribute(“stringBean”,PageCon text.PAGE_SCOPE);%>(5)把静态文本放在Resource Bundle中,而不是直接在JSP文件中包含这些静态文本,有什么优点(多选)A)提高可维护性B)提高可重用性C)支持国际化D)提高运行速度(6)以下哪些说法是正确的(单选)选项:(A)每个HTTP请求对应一个单独的ActionServlet实例(B)对于每个请求访问HelloAction的HTTP请求,Struts框架会创建一个单独的HelloAction实例。
(C)每个子应用对应一个单独的RequestProcessor实例(D)每个子应用对应一个单独的web.xml文件(7)下面哪些任务是RequestProcessor完成的(多选)选项:(A)把Struts配置文件信息加载到内存中(B)把资源文件信息读入到内存中(C)如果需要的话,创建ActionForm实例,组装数据,并进行表单验证(D)找到匹配的Action实例,调用其execute()方法(E)把请求转发到Action的execute()方法返回的ActionForward代表的组件。
SSH框架面试题(自己+别人的试题)

(问答题+选择题(在55页))Java工程师(程序员)面题Struts,Spring,Hibernate三大框架1.Hibernate工作原理及为什么要用?原理:1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transation 5.持久化操作6.提交事务7.关闭Session 8.关闭SesstionFactory为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。
他很大程度的简化DAO层的编码工作3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。
映射的灵活性很出色。
它支持各种关系数据库,从一对一到多对多的各种复杂关系。
2.Hibernate是如何延迟加载?1. Hibernate2延迟加载实现:a)实体对象b)集合(Collection)2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。
3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都是对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many4.Struts1流程:1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被ActionServlet接收。
3、根据struts-config.xml配置,ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action 进行处理。
Java经典面试题(struts2+hibernate+spring)

Java工程师(程序员)面试题Struts,Spring,Hibernate三大框架的面试1.Hibernate工作原理及为什么要用?原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transation 5.持久化操作6.提交事务7.关闭Session 8.关闭SesstionFactory为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。
他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。
映射的灵活性很出色。
它支持各种关系数据库,从一对一到多对多的各种复杂关系。
2.Hibernate是如何延迟加载?1. Hibernate2延迟加载实现:a)实体对象b)集合(Collection)2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。
3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many4.Struts1流程:1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被ActionServlet接收。
3、根据struts-config.xml配置,ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action 进行处理。
Strutc Spring Hibernate常见面试题
Strutc Spring Hibernate常见面试题Action是不是线程安全的如果不是有什么方式可以保证Action的线程安全如果是,说明原因2.MVC,分析一下struts是如何实现MVC的3.struts中的几个关键对象的作用(说说几个关键对象的作用)4.spring说说AOP和IOC的概念以及在spring中是如何应用的5.Hibernate有哪几种查询数据的方式6.load()和get()的区别1. Struts的工作原理在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。
每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。
2. Struts优点与缺点Struts是开源软件,使开发者能更深入的了解其内部实现机制。
Struts 优点:业界标准(很多成功案例),学习资源丰富。
Struts的优点主要集中体现在两个方面:Taglib和页面导航。
a、利用Struts提供的taglib可以大大节约开发时间。
b、维护扩展比较方便。
通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。
c、表现与逻辑分离d、表单验证解决了请求数据的验证问题,增强了系统健壮性。
e、便于团队开发Struts缺点:a、大量的使用标签,对于初学者难度较大。
b、ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成)3. Struts提供了几个标签库都是什么标签库Struts提供了五个标签库,即:HTML、Bean、Logic、Template 和Nested。
Java框架面试题总结
目录................................................................................................................ Struts 篇41. Struts的工作流程 (4)2. Struts的工作流程分解 (4)3. Struts控制器组件的组成. 和控制器的主要功能 (4)4. Struts中的几个关键对象的作用(说说几个关键对象的作用) (4)5. Struts工作流程图(用例图) (5)6. 说说MVC设计模式和它的优点 (5)7. 说说struts是如何实现MVC的? (6)8. Struts优点与缺点 (6)9 . strust的Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安 (6)10. Tiles框架是什么? (6)11. struts1.x 和struts 2 的区别 (6)12 . Struts 的常用标签库及用法 (8)Struts html标签库 (8)Struts bean标签库 (12)Struts Logic标签库 (13)13、JSP中动态INCLUDE与静态INCLUDE的区别? (15)151. ............................................................................................................. a jax是什么152. .................................................................................................... ajax实现的原理163. ............................................................................................. ajax框架的基本流程164. .................................................................................................... dwr的实现原理. 165. ...................................................................................................... ajax 开发步骤. 16 ............................................................................................................... Spring 篇16一. .............................................................................................................. 基础知识161. ........................................................................................................ 对IOC的理解. 162. ..................................................................................... 依赖注入的三种实现形式? 173. ............................................................................ Setter注入和构造方法注入比较184. ............................................... 对AOP的理解,以及AOP在项目中是如何使用的? 18196. .................................................................................. S pring中有五中不同的通知: 197. ....................................................................................... Spring bean的生命周期: 198. ....................................................................................................... Bean的作用域199. ..................................................................................................... Spring自动代理20 10.................................................................................................... Spring 事务特点20 11......................................................................................... 谈谈Spring 事务的理解2012. ................................................................... 编程式事务和声明式事务如何选择?21二. .......................................................................................................... Spring应用2113. ...................... spring中的BeanFactory与ApplicationContext的作用和区别?2114..................... S pring里面applicationContext.xml文件能不能改成其他文件名?2215. ................................................................ s pring中commons-logging.jar的作用2216........................................... spring中读取xml配置文件、获取bean的几种方式2217. ......... Spring 启动参数contextConfigLocation 和ContextLoaderListener 理解2318. ................................................................ Spring框架在web容器是如何启动的? 25 ......................................................................................................... Hibernate 篇25 1. ............................................................................................. H ibernate优缺点?25 2.................................................................... Hibernate工作原理及为什么要用?26 3................................................................................. Hibernate是如何延迟加载? 264. ................. Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 27 5.................................................................................. 说下Hibernate的缓存机制27 6. ................................................................. 什么样的数据适合放到二级缓存中?27 7.......................................................................................... Hibernate的查询方式28 8.......................................................................................... 如何优化Hibernate?289. ................................. 说说Hibernate中的update()和saveOrUpdate()的区别2810. ................................... 说说Hibernate中的session的load()和get()的区别。
JAVAWEB面试题(含答案)
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)组成。
优点有:1、在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移植。
2、简化了JSP和WEB应用程序的开发。
3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet 代码的程序。
在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。
4、允许JSP设计工具与WEB应用程序开发的进一步集成。
相信不久就会有支持JSTL的IDE 开发工具出现。
4、j2ee的优越性主要表现在哪些方面?MVC模式a、J2EE基于JAVA技术,与平台无关b、J2EE拥有开放标准,许多大型公司实现了对该规范支持的应用服务器。
一组Struts的选择测试题附答案0001
一组Struts的选择测试题附答案(2)问题:一组Struts的选择测试题附答案(2)回答:(1)假设在helloapp应用中有一个hello.jsp,它的文件路径如下:%CATALINA_HOME%/webapps/helloapp/hello/hello.jsp那么在浏览器端访问hello.jsp的URL是什么(单选) 选项:(A)http://localhost:8080/hello.jsp(B)http://localhost:8080/helloapp/hello.jsp(C)http://localhost:8080/helloapp/hello/hello.jsp(2)假设在helloapp 应用中有一个HelloServlet 类,它位于org.javathinker 包下,那么这个类的class文件应该放在什么目录下(单选)选项:(A)helloapp/HelloServlet.class(B)helloapp/WEB-INF/HelloServlet.class(C)helloapp/WEB-INF/classes/HelloServlet.class(D)helloapp/WEB-INF/classes/org/javathi nker/HelloServlet.class(3)假设在helloapp 应用中有一个HelloServlet 类,它在web.xml文件中的配置如下HelloServletorg.javathi nker.HelloServletHelloServlet/hello那么在浏览器端访问HelloServlet的URL是什么(单选) 选项:(A)http://localhost:8080/HelloServlet(B)http://localhost:8080/helloapp/HelloServlet(C)http://localhost:8080/helloapp/org/javathi nker/hello(D)http://localhost:8080/helloapp/hello(4)客户请求访问HTML页面与访问Servlet有什么异同(多选) 选项:(A)相同:都使用HTTP协议(B)区别:前者Web服务器直接返回HTML页面,后者Web服务器调用Servlet的方法,由Servlet动态生成HTML页面(C)相同:前者Web服务器直接返回HTML页面,后者Web服务器直接返回Servlet的源代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1,struts1 它解决了什么问题?
它解决了jsp页面代码混乱和多个Servlet的问题
2,struts1的框架的结构实是什么?
jsp + servlet + tiles
3,struts1工作原理
在Struts中,用户的请求一般以*.do作为服务名,所有的*.do请求均被指向
ActionServlet
ActionServlet根据Struts—config.xml中的配置信息,将用户请求封装成一个指定名称的
FromBean
并将此FromBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作。
(每一个*.do均有对应的FromBean名称和ActionBean名称,这些在Struts-config.xml中
配置)
4 struts1 7大组件
ActionServlet 核心控制器
Action 业务类 包含业务逻辑
ActionForm 0显示数据 1 封装页面数据 2校验
ActionMapping 帮助ActionServlet控制器将请求映射到业务类操作
ActionForward 导航器,进行jsp页面转发
ActionError与Actionmessage 用来存储和回收错误
Struts标记库 可以减轻开发显示层次的工作
5 struts1请求处理流程
1 读取配置
2 发送请求
3 填充form
4 校验form
5 派发请求
6 处理业务
7 返回响应
8 处理返回响应
6 乱码问题解决
struts1在把页面上的数据封装到到ActionForm的时候已经把乱码扔进去了
因为现在大家的页面上的编码是UTF-8,而tomcat的默认编码是ISO8859_1
1 userName= new String(userName.getBytes("ISO-8859-1"),"GBK");用string构造
函数进行转码
2 request.setCharacterEncoding("GBK");
3 用过滤器解决
4 继承struts1的核心控制器 重写process方法 或者其他方法(在填充form方法之
前的执行的方法均可)
7,struts1数据拷贝的两种方式
BeanUtils发现两个JavaBean的同名属性为不同类型时,提供类型转换功能(自动转换)
propertyUtils不支持这个功能,但是速度会更快一些
8, 国际化实现原理
1 在服务器启动的时候 初始化资源文件 必须加上
表示在服务器驱启动的时候必须进行加载ActionServlet,执行初始化方法
2 初始化完成后 资源文件的配置信息放进一个map中,并把这个map放在servlei上下
文中
3 读取国际化信息
9,我们为什么要使用DynaActionform (动态form)
很显然随着应用程序的变大,数百个ActionForm 这样不仅编程起来麻烦,以后维护起
来也麻烦,比如:
某个属性变化了,则需要修改源代码,然后重新编译,但是如果使用DynaActionform
则只需要修改
struts-config.xml配置文件就行了。这样提高了应用程序的开发效率与应用程序的可
维护性
10,Struts1 优点与缺点
优点:
1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.
2. 有丰富的tag可以用 ,能大大提高开发效率。
3. 页面导航.使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部
分之间联系起来,
这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种
优势体现得更加明显。
4. 提供Exception处理机制 .
5. 支持I18N
缺点:
1.struts1的配置和结构过于复杂
2.因为actionServlet依赖与web容器,所以单元测试不太方便
3.struts1的Action类是单例模式,必须设计成线程安全的
11,Struts1提供了几个标签库?分别是什么标签库?
struts提供了五个标签库,即:HTML,Bean, Logic,Template 和Nested。
HTMl 标签 用来创建能够和Struts框架和其他相应的HTML标签 标签交互的HTML
输入表单
Bean 标签 在访问JavaBeans及其属性,以及定义一个新的bean时使用
Logic标签 管理条件产生的输出和对象集产生的循环
Template标签 随着Tiles框架包的出现,此标记已开始减少使用
Nested标签 增强对其他的Struts标签的嵌套使用能力
12,Tiles框架是什么?
Tiles框架为创建Web页面提供了一种模版机制,它能将网页的布局和内容分离
13,在struts1中我们如何解决表单重复提交问题?
产生原因是以内转发机制造成的
解决方案:
1 采用重定向的方式 将值保存到session作用域里 但是一个项目里不能有过多的
session存在 非完美的解决方案
2 session的标识变量法
①我们在访问add方法之前给sesioon设置一个初始值 (比如在acition里多加一
个方法goAdd(),在该方法里设置初始值)
②在访问add方法时,把我们sesion中的变量与初始值做比较,
如果相同,表明是正常提交,正常提交后,我们改变session变量的初始值
③当用户企图通过刷新或者后退重新提交,当再次与初始值比较的时候,值不相同,
这时我们认为是重复提交,
④那么为什么我们第一次两个值会相同。第二次之后不相同,因为第一次我们时候
从goadd方法进。
而刷新就不进入goadd方法了,刷新是直接进入add方法
3 struts1的做法 采用令牌机制 必须用它的form标签
①在进入add方法之前 this.saveToken(request); 保存session的初始值
②在进入add方法后 看我们刚刚保存的token(令牌)是否有效,如果两次的session
值不一样,表明是重复提交
③this.resetToken(request); 修改session值
14,struts1应用组件
1.控制器组件
2.模型组件
3.视图组件
15,struts1在进行数据封装到actionform的时候 对int类型的处理方式
1 如果页面上的表单数据输入数据格式错误 struts1不会报类型转换错误
(系统的struts1器默认采用有参数的构造器创建IntegerConverter类型转换器),而
是封转成默认值
2 如果你想让struts1报类型转换错误 采用无参构造器创建IntegerConverter类型转
换器