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方法,写验证规则,显得比较麻烦。

  • 相关阅读:
    在 json4s 中自定义CustomSerializer
    【重点】2020年宝山区义务教育阶段学校校区范围与招生计划(小学)
    2019宝山区小升初对口地段表及对口初中片区划分
    2019上海市各区重点幼儿园、小学和中学排名(建议收藏)
    转:一千行MYSQL 笔记
    基于weixin-java-mp 做微信JS签名 invalid signature签名错误 官方说明
    转 : 深入解析Java锁机制
    微服务架构转型升级
    抽奖活动 mark
    抽奖 mark
  • 原文地址:https://www.cnblogs.com/SysoCjs/p/9616022.html
Copyright © 2011-2022 走看看