Springmvc注解优化

    • http://www.blogbus.com/wanping-logs/235898656.html

      复习:

      上一节讲过,启用spring注解主要是两部分:一是启用扫描包,二是开启注解,注入两个bean,没有id,没有name,开启注解后,spring自动去调用这两个包。这两个bean在2、3后被代替了。

      优化配置

      注解驱动替代注解启动的两个包的配置

      因为每次都要使用这两个bean,所以mvc加入一个注解驱动,不用加这两个包,只要加入注解驱动即可。

      <mvc:annotation-driver/>

      Springmvc的配置文件中

      增加mvc注解驱动配置,去掉注解启动的两个包的配置,如下:

      <?xml version="1.0"
      encoding="UTF-8"?>

      <beans
      xmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xmlns:p="http://www.springframework.org/schema/p"

      xmlns:mvc="http://www.springframework.org/schema/mvc"

      xmlns:context="http://www.springframework.org/schema/context"

      xsi:schemaLocation="http://www.springframework.org/schema/beans

      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

      http://www.springframework.org/schema/context

      http://www.springframework.org/schema/context/spring-context-3.0.xsd

      http://www.springframework.org/schema/mvc

      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

      <!-- 注解扫描包
      -->

      <context:component-scan base-package="com.tgb.web.controller.annotation"
      />

      <!-- 开启注解 -->

      <mvc:annotation-driven/>

      <!-- <bean
      class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>

      <bean
      class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>-->

      <!-- 静态资源访问
      -->

      <mvc:resources
      location="/img/" mapping="/img/**"/>

      <mvc:resources
      location="/js/" mapping="/js/**"/>

      <bean
      id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">

      <property
      name="prefix" value="/"></property>

      <property
      name="suffix" value=".jsp"></property>

      </bean>

      </beans>

      controller代码标识

      为了区分,新建一个java的类,名为:User2Controller.java。代码内容不变,只是把模块标识从user改成user2,否则tomcat启动后,访问user标识,服务不知道该返回那个结果页面。

      User2Controller.java代码如下:

      package
      com.tgb.web.controller.annotation;

      import
      javax.servlet.http.HttpServletRequest;

      import
      org.springframework.stereotype.Controller;

      import
      org.springframework.web.bind.annotation.RequestMapping;

      import
      org.springframework.web.bind.annotation.RequestMethod;

      import
      org.springframework.web.servlet.ModelAndView;

      @Controller

      @RequestMapping("/user2")

      public class
      User2Controller {

      @RequestMapping("/addUser")

      public String
      addUser(HttpServletRequest request){

      String result =
      "this is addUser----优化版";

      request.setAttribute("result", result);

      return
      "/annotation";

      }

      @RequestMapping("/delUser")

      public String
      delUser(HttpServletRequest request){

      String result =
      "this is delUser------优化版";

      request.setAttribute("result", result);

      return
      "/annotation";

      }

      @RequestMapping("/toUser")

      public String
      toUser(HttpServletRequest request){

      return
      "/annotation";

      }

      }

      部署tomcat,启动访问如下页面

      localhost:8080/springMVC5/user2/addUser

      系统正常提供服务

      Controller类优化,增加根目录

      优化controller,类配置@RequestMapping来区分标签

      类也可以配置@RequestMapping,来区分标签user2。

      Controller类优化:去掉没有必要的参数(去掉请求类型post、get)

      去掉方法标签@RequestMapping里面method方法

      登陆区分get和post,其他地方没有必要区分这么细,还增加工作量。配置下get也能,post也能,这样效率大大提高。

      @RequestMapping把method方法删除掉

      public
      @RequestMapping(value=“/addUser”,method=RequestMethod.GET)

      改为

      public
      @RequestMapping(value=“/addUser”)

      public
      @RequestMapping(value=“/delUser”,method=RequestMethod.GET)

      改为

      public
      @RequestMapping(value=“/delUser”)

      public
      @RequestMapping(value=“/toUser”,method=RequestMethod.GET)

      改为

      public
      @RequestMapping(value=“/toUser”)

      重启tomcat,达到相同的效果

      总结:

      方法的标签RequestMapping去掉发送消息的方法后,同样可以实现post和get方法。

      不变的地方封装起来

      Controller类优化:去掉@RequestMapping里面的value=

      方法标签@RequestMapping第一个参数value去掉

      方法标签:

      @RequestMapping(value=”/addUser”),改为@RequestMapping(“/addUser”);

      @
      RequestMapping(value=”/delUser”),改为@RequestMapping(“/delUser”);

      @
      RequestMapping(value=”/toUser”),改为@RequestMapping(“/toUser”);

      同样达到相同的效果

      Controller类优化:返回值简单

      return new
      ModelAndView(“/annotation”,”result”,result);

      改为

      return
      “/annotation”;

      重启tomcat,访问页面,同样达到相同的效果

      Controller类优化:参数传递用传统的request.setAttribute

      addUser()、delUser()、toUser()增加参数HttpServletRequest
      request

      增加

      request.setAttribute(“result”,result);

      同样达到参数传递的效果。

      总结:

      Springmvc的优化主要从两大方面来进行的:

      <!--[if !supportLists]-->1.      
      <!--[endif]-->配置文件优化

      增加了mvc标签----注解驱动<mvc:annotation-driven/>来代替两个bean:

      org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

      org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

      让springmvc得配置变得简单。

      <!--[if !supportLists]-->2.      
      <!--[endif]-->Controller类优化

      <!--[if !supportLists]-->1) 
      <!--[endif]-->controller类优化,增加根目录

      <!--[if !supportLists]-->2) 
      <!--[endif]-->去掉没有必要的参数,即去掉了http请求的方法post、get

      <!--[if !supportLists]-->3) 
      <!--[endif]-->去掉方法标签@RequestMapping里面的”value=”,只传递value的值

      <!--[if !supportLists]-->4) 
      <!--[endif]-->返回值简单,之前的返回值为ModelAndView,简化后,可以把ModelAndView当成字符串来对待,返回值为字符串,相应的return信息变得简单,只返回简单的字符串信息。

      <!--[if !supportLists]-->5) 
      <!--[endif]-->参数传递,可以把之前的ModelAndView参数传递,用字符串属性设置(request.setAttribute)来代替,同时别忘记了在方法里加入request的定义,即HttpServletRequest
      request。

      Control类优化,增加根目录;去掉没必要的参数;返回值简单;参数传递用传统的request.setAttribute来取得。

      参数传递和返回值可以用字符串代替。

      Springmvc基础注解配置最简洁的配置

      Controller之间没有依赖

      配置特别少

时间: 2024-07-29 10:43:39

Springmvc注解优化的相关文章

SpringMVC入门学习(二)应用注解方式+注解优化

前篇已经介绍使用SpringMVC的方式进行环境搭建,以及一个简单的demo测试,下面我们再来介绍一下使用注解的方式,如何实现. 添加配置文件 springAnnotation-servlet.xml <!-- 注解扫描包 --> <context:component-scan base-package="com.tgb.web.controller.annotation" /> <!-- 开启注解,这两种方式通用 --> <!-- <b

eclipse中导入jdk源码、SpringMVC注解@RequestParam、SpringMVC文件上传源码解析、ajax上传excel文件

eclipse中导入jdk源码:http://blog.csdn.net/evolly/article/details/18403321, http://www.codingwhy.com/view/799.html. ------------------------------- SpringMVC注解@RequestParam:http://825635381.iteye.com/blog/2196911. --------------------------- SpringMVC文件上传源

SpringMVC注解和Freemarker整合使用全步骤

SpringMVC现在是比较热门的一种框架了,使用起来感觉还是很不错的,现在我分享一下集体的配置和使用,希望对学习SpringMVC的朋友有用.一.首先我们做准备工作,下载Spring包,下载Freemarker包.二.配置web.xml. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

springMVC 注解版

关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签 分类: Java开发 源代码分享2012-06-14 10:59 7721人阅读 评论(2) 收藏 举报 springmvcjavaemailpathstring 主要用到了spring-aop-2.5.6.jar的AOP支持包! 之前我们在AccountService中加入了注解@Transactional标签,但是要想要真正发挥事务作用,还需要一些配置. 主要需要调整dao.xml文件 dao

SpringMVC注解启用

本文是我在学习网络视频SpringMVC的过程中写下的.感谢发布视频的各位前辈 下面讲解SpringMVC注解启用的几个关键步骤: 首先需要加载配置文件(如果使用本人的代码请自己定义路径) <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://

springMVC(注解版笔记)

springMVC(注解版) 较之于非注解版本,发生一下变化: 1.配置文件需要配置的标签有: <!-- 包的扫描,此包下面的所有包都启用注解 --> <context:component-scan base-package="com.mindreader.springmvc.controller" /> <!-- 开启注解 --> <!--包的映射--> <bean class="org.springframework.

springmvc 注解、json的正确配置

正确的springmvc配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.sprin

Spring+SpringMVC+MyBatis深入学习及搭建(十六)——SpringMVC注解开发(高级篇)

转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7085268.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十五)——SpringMVC注解开发(基础篇) 本文主要内容: (1)SpringMVC校验 (2)数据回显 (3)异常处理器 (4)图片上传 (5)Json数据交互 (6)支持RESTful 1.SpringMVC校验 1.1校验理解 项目中,通常使用较多的是前端的校验,比如页面中js校验.对于安全要求较高的

SpringMVC注解汇总(二)-请求映射规则

接上一节SpringMVC注解汇总-定义 讲到Httpy请求信息 URL路径映射 1)普通URL路径映射 @RequestMapping(value={"/test1", "/user/create"}): 多个URL路径可以映射到同一个处理器的功能处理方法. 2)URI模板模式映射@RequestMapping(value="/users/{userId}"): {×××}占位符, 请求的URL可以是 "/users/123456&q