struts题库
1.使用strust,写出处理中文乱码的方法
2.在strust中,村签与标签有什么分别?
3.Hibernate中标签如何实现乐观并发控制的?
4.简要说明Hibernate中,Hibernate.jdbc.fetch.seze和Hibernate.jdbc.batch.seze有什么用途?
5.简要说明在B/S架构中,如何实现刷新动态更新页面数据的方法与相关技术?
答案如下:
问题提得比较实用:
1、struts处理中文乱码,比较好的方式是在struts-config.xml中配置controller
: 而他的processorClass是一个servlet,这个servlet覆盖init方法,在其中保留super.init();然后引入中文编码,即request.setCharacterEncoding(“gbk”)
2、在strust中,村签与标签有什么分别:
标签扩展了包括标签,当然也扩展了和标签;他们的重要区别在于提供了“嵌套支持”。(嵌套就不详细说明了)
3、Hibernate中标签如何实现乐观并发控制的:即所谓的乐观锁机制,他有好几种实现方式,是其中一种:通过为数据增加一个版本标志即version,读取数据时一同读出该数据的版本,更新数据时对数据的版本加1,在提交数据时与数据库中的相应数据进行比较,若版本号大于数据库中的版本号则认为是新数据,更新数据库中的数据;如果小于数据库中的号则认为是过期数据。(这一部分建议楼主详细看下hibernate的锁机制)
4、应该是Hibernate.jdbc.fetch.size 和 Hibernate.jdbc.batch.size的用途:fetch.size 是设定JDBC的Statement每次从数据库中读取数据时候取出的记录条数。(这个设置将影响hibernate的性能,要结合多方面考虑,一般建议在50到100之间)。batch.size设置对数据库进行批量操作时的记录大小,如批量插入记录、批量删除记录。(size设置越大,向数据库发送的SQL命令就越少,速度就越快;建议一般设置为30~60之间)。
5、B/S架构中,如何实现刷新动态更新页面数据的方法与相关技术:
最直接方法便是,设置页面的定时刷新,但是用户体验起来很糟糕。另一种就是:所谓的推送技术。结合javascript和java
applet实现:
结合javascript帧间通信和一个管理网络通信的Java Applet,我们能够用推送技术解决这个问题。在这样一个系统中,Java Applet的任务是连接服务器并监听内容更新。一旦接收到了新的内容,Applet就构造出显示这些新内容的HTML代码,调用一个JavaScript函数并把包含新内容的HTML传递给JavaScript函数。JavaScript函数运用DHTML和DOM技术,把页面中一个
标记的内容用参数中传入的新内容替换。 另外现在最为流行的局部刷新技术:ajax 这是页面的部分刷新,不过这个基于用户操作的。
实现一个简单的拦截器 登陆以后存一个参数ssid(用户ID) 到
session里
拦截器里面的”noid” 你只要在struts.xml中设置一个全局的转发错误的页面或者返回到登陆页面就好了:
如:(
<global-results>
<!– 逻辑名为login的结果,映射到/login.jsp页面 –>
<result name=”noid” type=”redirect”>/noid.jsp</result>
</global-results>
)
拦截器代码:
package com.jihe.interceptor;
import java.util.Map;
import
com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class MyInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
Map session = invocation.getInvocationContext().getSession();
if (null != session.get(“ssid”)) {
return invocation.invoke();
} else {
return “noid”;
}
}
}
然后在sturt.xml中配置拦截器(我设置的是全局的,如果你用可能会出现问题,因为你设置这个拦截器以后在登陆时的ssid肯定是null,所以要把不需要拦截器验证的action放到别的package里如: <package name=”struts2.1″ extends=”struts-default”> )
<package name=”struts2″ extends=”struts-default” >
<interceptors>
<!– 定义权限控制拦截器 –>
<interceptor name=”authority”
class=”com.jihe.interceptor.MyInterceptor” />
<!– 定义一个包含权限控制的拦截器栈 –>
<interceptor-stack name=”mydefault”>
<interceptor-ref name=”defaultStack” />
<interceptor-ref name=”authority” />
</interceptor-stack>
</interceptors>
<!– 定义默认拦截器 –>
<default-interceptor-ref name=”mydefault” />
</package>
interceptor-stack跟interceptor-ref的区别是什麽?
interceptor-stack是一堆拦截器组成的一个拦截器栈。也可以当拦截器使用。
interceptor-ref是指定某个action使用哪一个拦截器,可以是一个interceptor,也可以是一个interceptor-stack。
将上述拦截器设定为默认拦截器:
<default-interceptor-ref name=”mydefault”/>
1 说说Struts的优点、缺点
Struts是开源软件,使开发者能更深入的了解其内部实现机制。
Struts 优点:
业界”标准”(很多成功案例),学习资源丰富。
Struts的优点主要集中体现在两个方面:Taglib和页面导航。
a、利用Struts提供的taglib可以大大节约开发时间。
b、维护扩展比较方便。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。
c、表现与逻辑分离
d、表单验证解决了请求数据的验证问题,增强了系统健壮性。
e、便于团队开发
Struts缺点:
a、大量的使用标签,对于初学者难度较大。
b、ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成)
Struts提供了几个标签库?都是什么标签库?
Struts提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。
HTML 标签 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单
Bean 标签 在访问JavaBeans 及其属性,以及定义一个新的bean 时使用
Logic 标签 管理条件产生的输出和对象集产生的循环
Template 标签 随着Tiles框架包的出现,此标记已开始减少使用
Nested 标签 增强对其他的Struts 标签的嵌套使用的能力
2 分析一下struts是如何实现MVC的。
Struts采用jsp作为MVC的视图,由ActionServlet具体指定的action动作类作为控制器即MVC中的C,负责视图与模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的JAVA类以进行相应的处理,控制器还指定下一个视图的位置。Struts中的模型主要指的就是javabean,它是模型的代表,主要封装数据和业务逻辑。
3 说说Struts的处理流程:
控制器进行初始化工作,读取配置文件,为不同的Struts模块初始化相应的ModuleConfig对象。控制器接收Http请求,并从ActionConfig中找出对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面,否则控制器将请求分发至具体的Action类进行处理。
在控制器调用具体的Action的Execute方法之前,ActionForm对象将利用Http请求中的参数来填充自已。还可以在 ActionForm类中调用Validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的ActionErrors对象。
执行具体的的Execute的方法,它负责执行相应的业务逻辑。执行完后,返回一个ActionForward对象,控制器通过该 ActionForward对象来进行转发工作。也可以把Action要处理的业务逻辑封装在JavaBean中,如果系统中还有EJB,那么通过 JavaBean调用EJB以完成业务处理;如果没有EJB,那么就直接在JavaBean中连接数据库,进行数据库相关的操作。
4 说说Struts几个关键对象的作用:Action、ActionServlet、ActionForm
1. Struts体系结构实现了MVC设计模式的概念,那么它将以下选项中给出的什么分别映射为web应用中的组件?( )
A View
B Model
C ActionServlet
D Action
E ActionMapping
F Controller
参考答案:ABF
2. 在Struts体系结构中,以下哪个由代表系统状态和商业逻辑的Action来构建?( )
A View
B Model
C Action
D Controller
参考答案:B
3. 在Struts中,以下选项哪一个是负责Struts体系中的流程控制?( )
A Controller
B Model
C ActionServlet
D Action
参考答案:C
4. ActionServlet由什么来实现?( )
A View
B Model
C ActionMapping
D Controller
参考答案:CD
5. 在Struts框架中ActionForm对象的主要作用是什么?()
A 封装对象
B 流程控制
C 构建业务逻辑
D 返回结果
参考答案:A
6. 在负责显示的JSP页面我们需要在action标签中,我们需要添加<action ______ input=”/login.jsp”>,在横线处添什么属性来负责验证?
A validate()
B validate=”true”
C validate=”false”
D html:errors
参考答案:B
7. 在Struts框架中适用资源文件都要以什么编码来编写?( )
A ISO8859-1
B GBK
C UTF-8
D GB2312
参考答案:C
8. 以下哪些是Action的子类?( )
A DispatchAction
B MappingDispatchAction
C DynaActionForm
D DynaValidatorActionForm
参考答案:AB
9. 在Struts中动态的ActionForm是什么?()
A DispatchAction
B MappingDispatchAction
C DynaActionForm
D DynaValidatorActionForm
参考答案:C
10. 如何在Struts中如果我们要使用Validation作验证?( )
A 需要使用DynaValidatorActionForm类
B 同时我们要把validation.jar和jakarta-ora.jar两个文件配置到WEB应用的lib下
C 还要保证validator-rules.xml和validation.xml两个配置文件放到WEB应用下
D 还要把json.jar配置到WEB应用的lib下
参考答案:ABC
11. struts框架中,关于FormBean,下列说法正确的是:( )
A FormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给Action
B 在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证
C 用户每次提交表单,都会产生一个新的FormBean实例
D 动态FormBean不能进行验证操作
参考答案:A
12. struts框架中,在一个Action的配置信息中,name属性指的是什么?
A 当前action实例的名字
B 当前action所在的类的名字
C 该Action中调用的FormBean的实例的名字
D 该Action中调用的FormBean的类的所在包名
参考答案:C
13. 在Struts中,以下哪些说法是正确的?( )
A 每个HTTP请求对应一个单独的ActionServlet实例
B 对于每个请求访问HelloAction的HTTP请求,Struts框架会创建一个单独的HelloAction实例。
C 每个子应用对应一个单独的RequestProcessor实例
D 每个子应用对应一个单独的web.xml文件
参考答案:C
1. 请回答:什么是MVC模式?
参考答案:MVC是Module,View,Controller三个单词的缩写。Module表示数据层JavaBean,Controller表示控制流程调度,view表示JSP负责显示逻辑。jsp+javabean是MVC的第一个实现版本。MVC把显示逻辑jsp和业务逻辑javabean分开,只改动一个单独的Servlet(Controller),比第一种模式多了一个集中控制点。
2. 在MVC模式中的各个部分都有那些技术来实现,如何实现的?
参考答案: MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
3. Struts的三大核心是什么?
参考答案:Struts的三大核心是调度器,接口和配置文件。调度器一般由Servlet实现,接口由JavaBean实现,配置文件用于配置ServletPath与JavaBean的对应关系。
4. 什么是struts的框架
参考答案:Struts框架是采用了Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。Struts有如下的主要功能:1).包含一个controller servlet,能将用户的请求发送到相应的Action。2).JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发人员创建交互式表单应用。3).提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBean属性、国际化的提示和消息。
二、Struts应用
1.以下说法正确的是?( )
A DispatchAction解决多个页面使用相同的表单时,将多个请求功能合并到一个Action对象中,前提条件:合并的请求要使用相同的ActionForm。
B DispatchAction类可以将多个请求合并成一个Action去处理,Action一样但是servletpath不一样。
C LookupDispatchAction类可以解决客户端在同一个表单中所有的按钮名字都要相同,服务器端要通过名字得到值,解决一个form多个提交按钮的情况。
D MappingDispatchAction类可以将多个请求合并成一个Action去处理,Action一样但是servletpath不一样。
参考答案:ACD
2. 在Struts框架中如果要使用Validation作验证的话,需要使用以下哪个Form?( )
A ActionForm
B ValidatorActionForm
C ValidatorForm
D DynaValidatorActionForm
参考答案:D
3. 在LookupDispatchAction中我们需要覆盖什么方法来解决按钮和方法的对应关系?()
A getKeyMethodMap()
B execute()
C unspecified()
参考答案:A
4. 关于struts框架,下面那些说法是正确的?( )
A Struts中无法完成上传功能
B Struts框架基于MVC模式
C Struts框架容易引起流程复杂、结构不清晰等问题
D Struts可以有效地降低项目的类文件数目
参考答案:B
5. 关于struts项目中的类与MVC模式的对应关系,说法错误的是?()
A Jsp文件实现视图View的功能
B ActionServlet这一个类是整个struts项目的控制器
C ActionForm、Action都属于Model部分
D 一个struts项目只能有一个Servlet
参考答案:D
6. 下面哪些任务不是RequestProcessor完成的?( )
A 把Struts配置文件信息加载到内存中
B 如果需要的话,创建ActionForm实例,组装数据,并进行表单验证
C 找到匹配的Action实例,调用其execute()方法
D 把请求转发到Action的execute()方法返回的ActionForward代表的组件
参考答案:A
7. 对于以下代码,HelloAction希望把请求转发给hello.jsp,在HelloAction的execute()方法中如何实现?( )
<action path = / "/HelloWorld/"
type = /"hello.HelloAction/"
name = /"HelloForm/"
scope = /"request/"
validate = /"true/"
input = /"/hello.jsp/"
>
<forward name=/"SayHello/" path=/"/hello.jsp/"/>
</action>
A return (mapping.forward(“SayHello”);
B return (new ActionForward(mapping.getInput()));
C return (mapping.findForward(“SayHello”));
D return (mapping.findForward(“hello.jsp”));
E return (new ActionForward(“SayHello”));
参考答案:BC
8. 对于以下这段配置ActionServlet的代码,哪些说法是错误的?()
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/myconfig.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
A Servlet容器在启动Struts应用时,会初始化这个ActionServlet
B 对于所有URL中以”.do”结尾的HTTP请求,都由ActionServlet处理
C 这段代码位于struts-config.xml中
D 这段代码位于web.xml中
参考答案:C
9. 在Struts中如果需要使用资源文件,需要在struts-confg.xml中进行配置,配置的标签是:()
A <html:errors>
B <bean:error>
C < message-resources parameter >
D < bean:message parameter>
参考答案:C
10. 在JSP页面中我们要使用Struts的标签库,需要引入那两个标签,请问在下面横线处应分别添什么
<%@taglib uri=”http://struts.apache.org/tags-html” prefix=”____”%>
<%@taglib uri=”http://struts.apache.org/tags-html” prefix=”____”%>
A html
B c
C bean
D JSTL
参考答案:AC
11. 向某个作用域内设置属性的JSTL标签是什么?( )
A bean:message
B c:set
C c:choose
D bean:equal
参考答案:B
1. 请简要的描述Struts中,ActionServlet,ActionClass,ActionForm,ActionMapping,ActionForward,ActionErrors,Tag标签,这几个组件的主要用途?
参考答案:ActionServlet 和ActionClass主要处理业务逻辑,ActionForm创建对象,ActionMapping 映射ActionForward 跳转到不同页面 ActionErrors 抛出异常信息,Tag标签 页面处理标签。
2. 请描述以下Struts的应用是什么样的?
参考答案:Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能:一.包含一个controller servlet,能将用户的请求发送到相应的Action对象。 二.JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。 三.提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。
浙公网安备 33010602011771号