网站开发两年,经验不足,结合楼主的问题,谈一下自己的认识吧
1.如楼上所言,mvc只是传统的概念,你不需要一定要把什么什么比作M,什么什么比作V。
struts 通过action和xml等的配置,实现了请求的控制,标签等的使用,辅助jsp完成view层的显示。
2.spring更像一个容器,它可以结合其他的框架,如struts和hibernate等,当然他有自己的spring MVC框架也。
spring的核心概念IOC和AOP,IOC是利用反射,实现各层的解耦(如业务层和数据访问层解耦),也就是在xml里去配置的方式实现。AOP也就是面向切面编程,其实也是利用反射(或者是动态代理),来实现一些共通的解耦和复用,如日志,校验,权限,事物等共通的东西。
3.servlet包下是java封装好的面向网络编程的一些类和接口。包括servet,filter,listener等。
servlet是java封装好的面向网络编程的接口,我们一般做网站是使用的它的子子类HttpServlet,也就是面向http协议的servlet。用来处理对请求的处理,处理过程需要我们来实现。
filter是sevlet包下的一个接口,是对数据传输过程中的过滤。应用责任链设计模式,请求通过之后,继续传递到下一个链,也就是servlet。
listener是利用观察者设计模式,对servlet中对某些封装好的类(如request,session,context)的对象的动作进行观察,发生变化,做出相应动作。(如session创建和销毁,变更在线人数统计)。
4.spring和struts都是对java提供的servlet进行了封装。
struts的流程:请求通过filter->intercepter->action。
intercepter和action是对servlet的代理,intercetper的执行流程是(【调用前自己的处理】->实际的调用->【调用后自己的处理】,这个实际的调用又会传到下一层的intercepter,也是这个流程,直到最后的实际调用是action。
这样的好处是:action只写一些业务的调用和控制。intercepter来处理一些共通的逻辑(如类型转换,文件上传)等的拦截。 而不用到每个action都重复写一堆相同的操作。逻辑层次更加清晰了。