zoukankan      html  css  js  c++  java
  • Struts和SpringMVC的区别

    1、Struts是类级别的拦截,一个request上下文对应一个类;SpringMVC是方法级别的拦截,一个request上下文对应一个方法,而方法又对应一个url。具体看一个实现过程就明白了,struts常用是配置xml实现,而SpringMVC是注解实现。

    ①下面是一个struts.xml配置代码:

    <package name="admin" namespace="/admin" extends="struts-default">
            <!-- 使用通配符与动态值配置AdminAction -->
               <action name="*" class="admin" method="{1}">
                <result name="login">/login.jsp</result>
                <result name="users">/admin/users.jsp</result>
                <result name="add">/admin/add.jsp</result>
                <result name="input">/message.jsp</result>
                <result name="message">/message.jsp</result>
                
            <!-- 为AdminAction类中login方法配置映射 -->
            <action name="login" class="admin" method="login">
                <result name="success" >manage.jsp</result>
                <result name="input">/login.jsp</result>
            </action>
     </package>

    一个<package/>标签可以是包括整个类的业务方法,注意看<action/>标签,每一个标签都要指定一个类,以及实现的方法(当然不指定实现方法,会默认执行execute方法),根据不同的String类型的值,跳转不同的页面,这就很明显说明了Struts是属于类级别的拦截;

    ②下面是SpringMVC的注解代码:

    @Controller
    public class AttributeController {
        @GetMapping("/attributeTest")
        public ModelAndView attributeTest(ModelAndView mv){
            System.out.println("attributeTest被调用...");
            mv.setViewName("redirect:main");
            return mv;
        }
        
        @RequestMapping("/main")
        public String main(
                @RequestAttribute("school") String school,
                @SessionAttribute("author") String author){
            System.out.println("main方法被调用...");
            System.out.println("school="+school+", author="+author);
            return "welcome";
        }
    }

    @GetMapping和@RequestMapping都是对指定url的响应,每次的request请求只会根据url来找到对应的方法执行,这样子就容易理解SpringMVC是方法级别的拦截。

    2、由于两者的拦截级别不同,所以request和response上下文的数据生命周期也有所不同,SpringMVC每个方法独享request和response的数据,参数通过url获取;而Struts是通过页面的控件属性自动绑定到类上,即每个Action类的方法都能共享request和response的数据。

    3、拦截器方面,struts有自己的拦截机制,SpringMVC采用AOP的方式,导致配置上Struts要多很多。

    4、struts的入口是filter,springmvc则是servlet;

    5、验证框架方面,springmvc支持JSR303,直接在类的属性上用注解,简单方便,而struts要自己实现support类,还要实现validate方法,写验证规则,显得比较麻烦。

  • 相关阅读:
    基于Form组件实现的增删改和基于ModelForm实现的增删改
    Git和Github的基本操作
    如果获取的数据不是直接可以展示的结构---三种操作方式
    可迭代对象和迭代器生成器
    django之整体复习
    权限管理之大致流程
    kindedit编辑器和xxs攻击防护(BeautifulSoup)的简单使用
    博客系统之评论树与评论楼相关操作
    中介模型以及优化查询以及CBV模式
    angularjs中ajax请求时传递参数的方法
  • 原文地址:https://www.cnblogs.com/SysoCjs/p/9616022.html
Copyright © 2011-2022 走看看