- MVC架构模式:Model-View-Controller分层设计,实现业务逻辑、数据展示和用户交互的解耦。
- DispatcherServlet:前端控制器,负责请求分发和响应处理。
- 注解驱动开发:通过
@Controller、@RequestMapping等注解简化配置。
| 组件 | 功能描述 |
|---|
| HandlerMapping | 映射请求URL到对应的Controller方法 |
| ViewResolver | 解析视图名称到具体视图技术(如JSP) |
| ModelAndView | 封装模型数据和视图信息 |
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("/info")
public String getUserInfo(Model model) {
model.addAttribute("user", userService.getUser());
return "userInfo";
}
}
- REST支持:
@RestController + @ResponseBody - 表单验证:结合Hibernate Validator
- 文件上传:
MultipartFile接口
- 组件化开发:可复用的UI组件(如
<h:dataTable>) - 生命周期管理:明确的6阶段请求处理生命周期
- 表达式语言:EL集成(
#{bean.property})
graph TD
A[客户端请求] --> B[FacesServlet]
B --> C[生命周期处理器]
C --> D[组件树处理]
D --> E[渲染响应]
<!-- 视图文件 -->
<h:form>
<h:inputText value="#{userBean.name}"/>
<h:commandButton action="#{userBean.save()}" value="提交"/>
</h:form>
@ManagedBean
@RequestScoped
public class UserBean {
private String name;
public String save() {
return "resultPage";
}
}
| 特性 | Spring MVC | JSF |
|---|
| 设计哲学 | 请求驱动 | 事件驱动 |
| 视图技术 | 支持多种(JSP/Thymeleaf等) | 专用Facelets |
| 学习曲线 | 较低 | 较高(需掌握生命周期) |
| 企业集成 | 与Spring生态无缝集成 | Java EE标准实现 |
- 选择Spring MVC:需要轻量级、灵活架构或微服务场景
- 选择JSF:企业级应用需要快速UI开发,且团队熟悉组件化模式
最佳实践:现代开发中常采用Spring Boot + Thymeleaf组合,兼顾开发效率和性能。