面试(一)

面试题(一)

一、中文问题

  1. jsp页面乱码问题

    1) 浏览器编码问题

    1. 页面格式问题,jsp页面有一个标签 pageEncoding 是否是不支持中文的格式

    3)获取get的请求参数 乱码,tomcat 配置问题 结局方案:在tomcat的conf目录下找到server.xml配置 URIEncoding="gb2312"

    4)post提交表单乱码 post请求默认格式为:ISO-8859-1的编码格式

  2. 数据库访问时的乱码?

    讲乱码要分为三层,数据库层的,tomcat层,web表示层

    1、数据库层的,在数据存储进去的时候就是乱码,这种现象的原因是,字段编码与存储的数据不一致,通常情况下只需要需改字段的编码,若还不行的话,就修改数据库的编码和表的编码。

    2、tomcat层 同上 获取get的请求参数 乱码,tomcat 配置问题 结局方案:在tomcat的conf目录下找到server.xml配置 URIEncoding="gb2312"

    3、web显示层面,可以设置字符串过滤器。

  3. 对MVC的理解,结合Struts2

    MVC 模式的结构
    MVC 模式包括三个部分: 模型( Model) 、视图( View) 和控制器( Controller) , 分别对应于内部数据、数据表示和输入输出控制部分。M是分析员和设计师所面对的部 分, 是对问题的描述;V指 Application Model, 用来记录存在 的视图, 获取视 图信息和向视图发送消息。

    3.1 模型( Mode l)
    模型是与问题相关数据的逻辑抽象, 代表对象的内在属性, 是整个模型的核心。它采用面向对象的方法, 将问 题领 域中的对象抽象为应用程序对象, 在这些抽象的对象中封装了对象的属性和这些对象所隐含的逻辑。模型的作用如下: ①抽象应用程序的功能, 封装程序数据的结构及其操作; ②向 Controller 提供对程序功能 的访 问; ③接 受 View 的 数据 查询 请 求; ④当数据有变化时当数据有变化时, 通知对此数据感兴趣的 View。

    3.2 视图( Vie w)

    它是用户视图模块 。 它为用户提供了输入手段 ,并触发 Controller 运行 ,然后通过 Model 访问企业数据 ,并用某种方式来显示这些数据 。 视图是模型的外在表现, 一个模型可以对应一个或者多个视图, 如图 形用户 界面视 图、命 令行视 图、API 视图; 或 按使 用者分类: 新用户视图、熟练用户视图等 .

    3.3 Controller

    它是流程控制模块 。 它管理着用户与 View的交互 ,能从 View 中取得数据并传给 Model 去执行业务逻辑 ,然后它根据 Model 的执行结果 ,选择一个合适的 View 把结果展现给用户 。

  4. MVC的优点
    4.1、可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。
    4.2、视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。
    4.3、模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。
    4.4、潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。

4.MVC的缺点

​ 4.1、复杂:增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
​ 4.2、低独立性:视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
​ 4.3、低效率:视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
​ 4.4、高代价:目前,一般高级的界面工具或构造器不支持模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成MVC使用的困难。

5.Struts2中的MVC

1.FilterDispatcher--------控制层
用户请求首先到达Struts2中的FilterDispatcher。FilterDispatcher负责根据用户提交的URL和struts.xml中的配置,来选择合适的动作(Action),让这个Action来处理用户的请求。

​ FilterDispatcher其实是一个过滤器Filter(Servlet规范中的一种Web组件),它是Struts2核心包里已经做好的类,不需要程序员去开发,是需要在项目的web.xml文件中配置一下即可。FilterDispatcher体现了J2EE核心设计模式中的前端控制器模式。

2.Action--------模型层
Action负责把用户请求中的参数组装成合适的参数模型,并调用相应的业务逻辑进行真正的功能处理,然后产生下一个视图展示所需要的数据。最后得到下一个视图所需要的信息,并传递给控制层中的拦截器链。

3.Result--------视图层

​ 视图层主要用来与用户交互,它将从控制层得到的数据通过适合的展示方式展现给用户,让用户与之交互更加简洁简单。在Struts2中,除了大众熟知的JSP方式,还有freemarker、velocity等各种优秀的展示方式。

二、什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?

软件三层架构:

常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。

软件分层的好处:

1、开发人员可以只关注整个结构中的其中某一层;

2、可以很容易的用新的实现来替换原有层次的实现;

3、可以降低层与层之间的依赖;

4、有利于标准化;

5、利于各层逻辑的复用。

6、结构更加的明确

7、在后期维护的时候,极大地降低了维护成本和维护时间

你可能感兴趣的:(面试(一))