面试(一)

作者: RoundYuan | 来源:发表于2019-02-24 23:30 被阅读7次

    面试题(一)

    一、中文问题

    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、在后期维护的时候,极大地降低了维护成本和维护时间

    相关文章

      网友评论

        本文标题:面试(一)

        本文链接:https://www.haomeiwen.com/subject/armiyqtx.html