SSM框架系列之SSM常见面试题总结(一)

1. SpringMVC与Struts2的主要区别?

①springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。

②springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。 

③Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。

 

2. Spring中用到哪些设计模式?

1.工厂模式(BeanFactory中)

2.单例模式(Spring中默认bean为单例)

3.适配器模式(HandlerAdater)

### 关于SSM框架常见面试问题及答案 #### Spring MVC 控制器是否为单例模式及其影响 Spring MVC 的控制器默认采用单例模式[^1]。这意味着在整个应用程序生命周期中只有个实例存在,所有请求都将共享这个唯的控制器实例。 对于多线程环境下的应用来说,如果在控制器内部定义了成员变量,则可能会引发线程安全方面的问题。当多个客户端并发调用同个接口时,这些成员变量可能被不同线程同时修改而导致数据混乱或者不致的情况发生。 为了避免上述情况的发生,在设计基于Spring MVC的应用程序时应该遵循如下原则: - 不要在控制器类里声明任何非final类型的成员变量; - 如果确实需要保存某些状态信息可以考虑将其作为方法参数传递而不是存储到对象属性之中; 这样做不仅能够有效防止潜在的竞争条件出现,同时也使得代码更加清晰易懂易于维护。 ```java // 正确做法:避免使用成员变量 @RestController public class MyController { @GetMapping("/example") public String exampleMethod(@RequestParam String param){ // 处理业务逻辑... return "result"; } } ``` #### ViewResolver的作用与工作流程 `ViewResolver` 是用于将逻辑视图名称转换成实际物理路径下对应的JSP文件或其他模板引擎所使用的资源位置的服务组件[^2]。其主要职责包括但不限于以下几个方面: - 将由处理器返回的结果映射至具体页面地址上; - 创建相应的 `View` 对象以便后续执行渲染操作; - 把最终形成的HTML文档反馈给浏览器端显示出来; 通过配置不同的实现方式(如InternalResourceViewResolver),开发者可以根据项目需求灵活指定如何定位并呈现前端界面内容。 ```xml <!-- 配置 InternalResourceViewResolver --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值