面试疑难点解析:开发工具及框架(九)

简介: 本节内容将面试常见的Struts问题汇总在一起,读懂这一篇,面试遇到Struts问题不用怕了~

Struts问题汇总

所有的开源框架里面必然包含有各个公司自己的一些程序代码,或者是与其它一些开发框架整合的程序代码,对于这些代码,如果要是有时间,可以直接通过官网下载源代码目录,这个目录一般情况下都比较小(10M左右),如果没有源代码,那么最简单的做法就是直接利用Maven进行下载。

1.如果要去研究源代码,或者看某个程序的具体实现,简单的依靠一个开发包根本不可能,除非下载源代码程序包,里面许多程序类的关系大部分都不需要处理,要处理的只是需要开发的部分。例如:开发的是拦截器、Action、转换器等等,在Struts里对于这些操作提供有一系列的支持,像自动进行参数赋值就属于拦截器的范畴。在整个课程里针对开发框架,尤其是MVC开发框架已经给出了反射的分析过程,只需要掌握DispatcherServlet程序类,那么所有的MVC基本核心原理就明确了:线程处理、请求参数自动赋值(拦截器)、自动转换。所有的开发框架的本质就是反射处理操作。

2.Struts拦截器,在拦截器里可以设置属性,还需要在struts.xml之中进行配置,在进行Struts配置文件编写时还需要使用一个继承关系(继承一些公共的配置项);

3.Struts2.x上传使用的是FileUpload处理操作,而这个处理在JavaWEB开发实战经典中讲解过,其核心的特点是可以接受原始的文件名称以及操作类型,对于接收操作来讲,官方文档已经给出了其接收的类型,这个是由官方定义好的,如果有一天你自己开发的框架可以盛行,你这些规则由你自己来定,如果你学习过反射机制,深入了解了DispatcherServlet设计,那就可以理解为什么有这样的要求;

4.Struts2.x最大的败笔在于:大量的setter、getter以及对象的实例化处理机制,而这个问题之所以会要求编写主要也是在DispatcherServlet程序类中已经给了明确的说明,依然是基于反射的处理操作;

5.Struts2.x里的转换处理操作本身是有Bug存在的,如果在默认情况下接受的数据类型是Int,但是传递了String,这个时候肯定无法正常接受,因为会产生NumberFormatException异常,原因在讲解DispatcherServlet的时候已经分析过了,因为它的原理是根据所有的参数名称以及对应的属性名称;

6.Struts2.x里默认支持EL,在Struts2.x最初的时代是没有EL的,它提供了一种与EL类似的解决方案:OGNL(很麻烦,一般不建议再使用,需要追溯到2005年左右);

7.对于数组的接受处理操作本质上是利用了request.getParameterValues(),这个处理操作在进行接收的时候可以将接收到的数据以数组的形式出现或者以List集合的形式出现,因为有参数名称,而且参数名称和属性名称又是一样的,那么就可以根据参数名称获取属性类型,如果发现属性类型是一个数组,则根据数组的形式来进行接收处理,依然采用了反射机制,DispatcherServlet也已经有了明确的说明;

8.国际化的本质在于ResourceBundle,它需要一个资源名称,例如:Messages.properties、Message_zh_CN.properties,这里面Message就属于资源名称,而后面那些国际化标记是通过local实现的指派。里面设置的占位符是通过MessageFormat类完成处理的,它是按照“{0}”、“{1}”这样的顺序进行设置;

对于Struts而言需要掌握的部分在Java基础、MVC设计思想、反射应用的结合体上。

更多专业知识,面试技巧就在面试一点通,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

相关文章
|
5天前
|
缓存 安全 PHP
【PHP开发专栏】Symfony框架核心组件解析
【4月更文挑战第30天】本文介绍了Symfony框架,一个模块化且高性能的PHP框架,以其可扩展性和灵活性备受开发者青睐。文章分为三部分,首先概述了Symfony的历史、特点和版本。接着,详细解析了HttpFoundation(处理HTTP请求和响应)、Routing(映射HTTP请求到控制器)、DependencyInjection(管理依赖关系)、EventDispatcher(实现事件驱动编程)以及Security(处理安全和认证)等核心组件。
|
14天前
|
缓存 NoSQL Redis
Python缓存技术(Memcached、Redis)面试题解析
【4月更文挑战第18天】本文探讨了Python面试中关于Memcached和Redis的常见问题,包括两者的基础概念、特性对比、客户端使用、缓存策略及应用场景。同时,文章指出了易错点,如数据不一致和缓存淘汰策略,并提供了实战代码示例,帮助读者掌握这两款内存键值存储系统的使用和优化技巧。通过理解其核心特性和避免常见错误,可以提升在面试中的表现。
20 2
|
14天前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
24 1
|
5天前
|
NoSQL 大数据 数据处理
MongoDB聚合框架与复杂查询优化:技术深度解析
【4月更文挑战第30天】本文深入探讨了MongoDB的聚合框架和复杂查询优化技术。聚合框架包含$match、$group、$sort和$project阶段,用于数据处理和分析,提供灵活性和高性能。优化查询涉及创建合适索引、使用聚合框架、简化查询语句、限制返回结果数、避免跨分片查询、只查询所需字段及使用$inc操作符。理解这些技术有助于提升MongoDB在大数据和复杂查询场景下的性能。
|
8天前
|
敏捷开发 开发框架 持续交付
【软件工程】航行敏捷之路:深度解析Scrum框架的精髓
【软件工程】航行敏捷之路:深度解析Scrum框架的精髓
|
10天前
|
SQL 安全 前端开发
Go语言Gin框架安全加固:全面解析SQL注入、XSS与CSRF的解决方案
Go语言Gin框架安全加固:全面解析SQL注入、XSS与CSRF的解决方案
|
11天前
|
存储 算法 Java
耗时3天写完的HashMap万字解析,争取一篇文章讲透它,面试官看了都直点头!
耗时3天写完的HashMap万字解析,争取一篇文章讲透它,面试官看了都直点头!
42 3
|
12天前
|
人工智能 决策智能 C++
【AI Agent教程】【MetaGPT】案例拆解:使用MetaGPT实现“狼人杀“游戏(1)- 整体框架解析
【AI Agent教程】【MetaGPT】案例拆解:使用MetaGPT实现“狼人杀“游戏(1)- 整体框架解析
108 1
|
14天前
|
SQL 中间件 API
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】**Flask是Python的轻量级Web框架,以其简洁API和强大扩展性受欢迎。本文深入探讨了面试中关于Flask的常见问题,包括路由、Jinja2模板、数据库操作、中间件和错误处理。同时,提到了易错点,如路由冲突、模板安全、SQL注入,以及请求上下文管理。通过实例代码展示了如何创建和管理数据库、使用表单以及处理请求。掌握这些知识将有助于在面试中展现Flask技能。**
16 1
Flask框架在Python面试中的应用与实战
|
15天前
|
数据采集 机器学习/深度学习 数据挖掘
Python数据清洗与预处理面试题解析
【4月更文挑战第17天】本文介绍了Python数据清洗与预处理在面试中的常见问题,包括Pandas基础操作、异常值处理和特征工程。通过示例代码展示了数据读取、筛选、合并、分组统计、离群点检测、缺失值和重复值处理、特征缩放、编码、转换和降维。强调了易错点,如忽视数据质量检查、盲目处理数据、数据隐私保护、过度简化特征关系和忽视模型输入要求。掌握这些技能和策略将有助于在面试中脱颖而出。
25 8

推荐镜像

更多