jsp 面试题

 

 

说一下你对struts框架的理解

答:Struts是在jspModel2基础上实现的MVC框架。Struts框架结合了jsp,servlet,javabean,taglib的技术,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由ActionServlet和Action来实现,视图由一组JSP文件组成。 Struts的配置文件是struts-config.xml,其中保存着描述用户请求路径和Action映射关系的配置信息。

2.struts的主要内容

答:Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。由jsp充当view层,jsp中大量运用tag来控制页面逻辑;ActionServlet负责控制层,通过ActionForm来接收用户输入,一般在struts-config.xml文件中配置form bean,action以及转发等。Model层主要是一些javabean,具体处理用户对象。

3.Struts框架是自己搭建的吗?

答:是。

4.除了Struts框架还用过什么框架?

答:Hibernate框架和spring框架。

5.errors在页面上怎么表现出来?

答:配置文件里有错误对应的各种消息,从ActionMessages里读出来,显示在页面上。可以用<html:error >标签来显示错误。

6.view层都有什么?

答:jsp,html。

7.struts标签具体用过什么?Logic标签呢,要实现循环打印用什么标签

答:用过HTML、Bean、Logic、Tiles、Nested标签。要实现循环打印用<logic:iterate>标签。

8.用过Tiles吗?

答:用过。

9.Tiles是什么?怎样引入?在web.xml中怎样配置?

答:Tiles是一个模板机制,让配置框架与版面分离,提供版面管理。

引入:

<%@ include file="/common/taglibs.jsp"%>
<tiles:insert definition="setting.projectInfo" flush="true" />
插入setting.projectInfo标记的一页
taglibs.jsp里包括这么一句话:
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>

在web.xml里面配置tiles对应的taglib的配置如下:

<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>
</taglib>

10.实现功能时有前台校验吗?怎么实现的?

答:有。用javaScript实现。

11.JSP中动态INCLUDE与静态INCLUDE的区别?

答:动态INCLUDE 用jsp:include动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

静态INCLUDE 用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>

12.页面基本操作用到那些控件?

答:Textbox、Textarea、Password 、Label 、Button、Checkbox

13.页面的跳转有几种方法,具体有哪些方法?

答:页面跳转有两种方式,

一个是重定向,通过response.sendRedirect()实现;

一个是请求转发,通过RequestDispatch的forward()方法实现;

14.页面跳转的配置除了在Struts-config.xml中配置外,还可以在哪配?

答:还可以直接在页面里用sendRedirect(),以及forward方法跳转。

15.jsp与FormBean的关系

答:FormBean是对页面请求的封装,即把HttpRequest封装在一个对象中,多个HttpRequest可以共用一个FormBean。 jsp中的form和FormBean由<action-mappings>的name属性对应。

16.FormBean如何写,写什么?

答:FormBean必须继承于ActionForm,里要有与其对应的jsp的属性,以及属性的get,set方法。如果需要验证还有validate方法。还可以写重置方法。

17.jsp、action、formBean的关系,在struts中怎么配置对应的关系

答:jsp负责前台显示,接受用户输入,action负责调用formBean的方法,更新其状态,然后将结果返回给控制器,生成合适的jsp。

18.Servlet的配置!页面跳转是经过Servlet的什么来跳转的?

答:RequestDispatcher 的forward()方法。

19.“struts-config.xml“,配制文件的作用?前后台的数据,怎么交换?
答: struts-config.xml文件中配置formbeans 和 对应的action以及转发url。前台的数据封装到ActionForm中,再根据相应的ActionMapping来查找对应的action。

20.MVC都具体代表什么?有那些内容?Servlet对应什么?在哪里进行配置?

答:model-view-controller(模型-视图-控制器,简称MVC)

Model(模型)是负责保持状态的应用组件。

View(视图)是负责显示用户界面的组件。

Controller(控制器)是处理用户交互,操作模型和最终选择用哪个视图来显示UI的组件。

Servlet对应的是controller,控制器 在web.xml中配置。

21.Validator配置文件如何配置

答:在validator.xml中配置ActionForm的验证规则。

在struts-config.xml文件中添加

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">

 <set-property property="pathnames"

                value="/WEB-INF/validator-rules.xml,

 /WEB-INF/validation.xml"/>

</plug-in> 来启动校验机制

validation.xml确定哪个验证例行程序应用到哪个Form Bean。文件中的定义使用struts-config.xml文件给出的Form Bean的逻辑名称以及validator-rules.xml文件给出的验证例行程序的逻辑名称,以便把二者关联起来。

validation.xml配置如下

<formset>

    <form name="logonForm">//是struts-config.xml中formBean的名字。

      <field property="username" //username是formBean的属性

            depends="required">// 验证条件

        <arg0 key="prompt.username"/>

      </field>

    </form>

 </formset>

22.struts-config.xml写过吗?要配置什么内容?用的最多的是什么?怎么配置的?(scope、parameter)

答:struts-config.xml中主要配置form-bean 和 action-mapping,action的scope和各种跳转。定义formBean 配置<action-mappings>。用得最多的就是配置<action-mappings>

<action path="/login"//提交路径

type="isssh.Action.LoginAction"//连接到本映射的Action类的全称

name="LoginForm"//与本操作关联的Action bean的名称

scope="request"//ActionForm bean的作用域(请求或会话)request是请求域。Session是会话域

input="/pages/Login.jsp">输入表单的路径,指向bean发生输入错误必须返回的控制

23.validation.Xml怎么写?Msg怎么写,所用到的消息如何管理?

答:validation.xml文件用于声明将应用到Form Beans的一组验证。要验证的每个Form Bean在这个文件中都有自己的定义。在这个定义中,指定要应用到该Form Bean的各域的验证。下面是一个validation.xml文件的例子,说明如何定义验证:

<!DOCTYPE form-validation

PUBLIC "-//Apache Software Foundation//

       DTD Commons Validator Rules

       Configuration 1.0//EN"

       "http://jakarta.apache.org/

      commons/dtds/validator_1_0.dtd">

<form-validation>

 <formset>

    <form name="logonForm">

      <field property="username"

            depends="required">

        <arg0 key="prompt.username"/>

      </field>

      <field property="password"

            depends="required">

        <arg0 key="prompt.password"/>

      </field>

    </form>

 </formset>

</form-validation>

validation.xml文件的第一个元素是form-validation。这个元素是该文件的主元素,而且只定义一次。在form-validation元素内定义form-set元素,它包括多个表单元素。一般来说,在文件中只定义一个form-set元素,但是如果要将验证国际化,那就要在每个地方单独使用一个form-set元素。

每个表单元素使用name属性将名称与其所包含的域验证集关联起来。Validator使用这个逻辑名称将这些验证映射到在struts-config.xml文件中定义的一个Form Bean。根据要验证的Form Bean的类型,Validator力求将该名称与Form Bean的逻辑名称或操作路径相匹配。在表单元素内,field元素定义要应用到Form Bean的特定域的验证。field元素的property属性对应于特定Form Bean中的域名。depends属性利用validator-rules.xml文件指定验证例行程序的逻辑名称,这些例行程序将应用到域验证中。

validator-rules.xml文件中的每个验证例行程序都用validator标记的msg属性指定错误消息的键值如:msg="errors.required">

而 errors.required 在ApplicationResources.properties中定义如:errors.required={0} is required.

24.校验分哪几个层次?

答:两个,客户端验证,主要是一些简单的输入输出验证,用javascript来;服务器端的验证,主要是业务逻辑的验证,如用户名密码匹配等;

25.做到访问数据库了吗?怎么访问数据库的(概括回答)?
答:jdbc或连接池或hibernate

26.你所做的项目中用到数据库吗?对数据库是怎么操作的?

答:用到。通过jdbc连接,可以直接在java中写sql代码运行,也可以用hibernate对数据库进行操作。对各个具体的bean都有相应的dao负责数据库的增删改查。也可以答,增加一个持久化层,用hibernate或dao其它什么框架来进行数据库操作。

27.Module层做什么,在项目中具体作什么?

答:model主要用来具体处理业务。

28.在Module层,怎么写业务逻辑?

答:我们在struts结构里把业务逻辑写在Action里,实际上就是写在Module层里。

29.EJB的分类,各自有什么特点?

答:在EJB2.0中定义了三种不同类别的EJB:Session Bean(会话Bean)、Entity Bean(实体Bean)和Message-Driven Bean(消息驱动Bean)。

1 会话Bean
会话Bean是商务过程对象,执行商务逻辑、规则和工作流程。会话Bean之所以被称为会话Bean,是因为它代表的是一个动作、是一个过程,它的生存期就是调用它的客户端与它进行会话的过程。
会话Bean根据其是否保存客户的状态,又分为状态会话Bean和无状态会话Bean。状态会话Bean是一种保持会话状态的服务,每个实例都与特定的客户机相关联,在与客户机的方法调用之间维持对话状态。与之相反,无状态会话Bean不保存与特定客户的对话状态。因此状态会话Bean比无状态会话Bean具有更多的功能,而无状态会话Bean实例可以通过 EJB容器自由地在客户机之间交换,从而少量的会话Bean就可以服务于大量的客户机。
2 实体Bean
实体Bean代表商务上的实体,比如商务数据,应该包含与数据相关的逻辑。实体Bean是对应到数据库中的一个视图,一个实体Bean实例和底层数据库完全是一回事。因此,一个简单的实体bean实例代表一个特殊的记录。更复杂的实体bean可以代表数据库表间关联视图。
实体Bean有两种操作类型:BMP(Bean管理持久性)和CMP(容器管理持久性)。BMP是指由Bean自己来实现实体Bean的持久性,即在Bean中实现数据库操作。而CMP则是由容器实现Bean的持久性,使我们不需要在Bean内再编写数据库操作的代码。
3 消息驱动Bean
消息驱动Bean是EJB2.0新引入的一种Bean类型。它的主要目的是,通过允许容器去聚合并且管理消息驱动Bean实例,以此来提供传入JMS消息的并发处理。

30.Session Bean 有几种?有什么区别?

答:2种。Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。

31.css用过吗?怎么用的呢?如何去用?

答:用过。css主要用来做一些页面效果,字体,控件的效果等;写一个css文件,<link>进页面就可以了。

CSS按其位置可以分成三种:

1。Inline Style是写在Tag里面的。内嵌样式只对所在的Tag有效。

如:<P style='font-size:20pt; color:red'>这个Style定义<p></p>里面的文字是20pt字体,字体颜色是红色。</p>

2。内部样式

内部样式表(Internal Sytle Sheet)要用到Style这个Tag,写法如下:

<STYLE type='text/css'>

......

</STYLE>

3。外部样式表(External Style Sheet)

将样式(Styles)写在一个以.css为后缀的CSS文件里,然后在每个需要用到这些样式(Styles)的网页里引用这个CSS文件。

然后你建立一个网页,代码如下:

<HTML>

<HEAD>

<link href='../asdocs/css_tutorials/home.css' rel='stylesheet' type='text/css'>

32.Junit用过吗?

答:用过

33.单体测试都写什么

答:用Junit写出要测得case,每个case中分别给出输入值和期望的结果。

34.怎么样输出Debug信息?

答:使用Log4J

35.Log4J用过吗?

答:Log4j中有一个方法log.debug();用此方法输出Debug信息。

private static String CLASS_NAME = "com.bingo.test.Lo4jTest";

private static Logger log = Logger.getLogger(CLASS_NAME);

log.debug("Log4j Debug.");

posted @ 2009-01-08 17:08  IT战神  阅读(2013)  评论(0编辑  收藏  举报