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 这是页面的部分刷新,不过这个基于用户操作的。

 

struts2如何进行权限控制

实现一个简单的拦截器 登陆以后存一个参数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属性、国际化的提示和消息。

posted on 2012-08-24 21:37  pony1223  阅读(376)  评论(0)    收藏  举报

导航