Springmvc注解启用

    •  

      http://www.blogbus.com/wanping-logs/235898637.html

      使用注解的原因

      最方便的还是启用注解

      注解方便,而且项目中很流行。

      配置文件尽量减少,主要使用注解方式。

      Springmvc的注解是在2.5版本后有了注解,如何开启注解?

      修改springmvc配置文件

      Web.xml文件中不需要修改,只修改springmvc配置文件

      新建一个springmvc的配置文件,取名为springAnnotation-servlet.xml

      删除掉之前文件中的bean和多方法的配置,springAnnotation-servlet.xml文件内容如下:

      <?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"

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

           <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>

      配置分两步

      1)配置扫描包

      这个配置文件的书写需要一个扫描包。

      在springAnnotation-servlet.xml中配置

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

      这个配置的意思是:

      Spring再启动的时候,会默认扫描自动扫描包下的所有的类,为每个注解分配一个mapping。

      上面的配置是,在启动的时候会扫描com.tgb.web.controller.annotation下所有的包

      2)配置spring注解的两个bean

      <bean class="org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>  

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

      这两个bean的功能

      1)AnnotationMethodHandlerAdapter

      是方法映射的,不同方法有不同url请求,根基类找方法。

      2)DefaultAnnotationHandlerMapping

      DefaultAnnotationHandlerMapping根据扫描的包下面找类,即通过url找类

      注意:

      一定要把包找对,我就犯过错,两个包都在org.springframework.web.portlet目录下找的类,我用的是两个包分别是

      org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter

      org.springframework.web.portlet.mvc.annotation.DefaultAnnotationHandlerMapping

      其实应该是org.springframework.web.servlet目录下找类。

      两个包分别是:

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

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

      修改web.xml中的springmvc的配置文件

      修改web.xml文件,使其使用新建的springmvc配置文件springAnnotation-servlet.xml

      <?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" />

           <!-- 开启注解 -->     

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

           <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>  

      新建一个类(userController)来实现注解

      新建包

      新建一个包,下面的controller都使用注解

      新建controller的包,在这个包下的controller都使用配置文件。

      选择com.tgb.web.controller,邮件点击new-other-package,填新建的包名为annotation。

      新建类userController(GET请求)

      注解打开后,看看注解如何使用。

      userController类实现如下:

      package com.tgb.web.controller.annotation;

       

      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

      public class UserController {

         

          @RequestMapping(value="/user/addUser",method=RequestMethod.GET)

          public ModelAndView adduser(){

          String result = "this is adduser------";

              return new ModelAndView("/annotation","result",result);

          }

         

          @RequestMapping(value="/user/delUser",method=RequestMethod.GET)

          public ModelAndView delUser(){

          String result = "this is delUser------";

              return new ModelAndView("/annotation","result",result);

          }

      }

      Spring常用注解:

      <!--[if !supportLists]-->1.       <!--[endif]-->类的注解

      类注解用到了@Controller

      @Controller表明下面是个Controller类

      org.springframework.stereotype.Controller

       

      @Component
      @Target(value={TYPE})
      @Retention(value=RUNTIME)
      @Documented

      <!--[if !supportLists]-->2.       <!--[endif]-->方法注解

      方法注解用到了@RequestMapping

      @RequestMapping表明下面的方法是个Controller的方法。

      org.springframework.web.bind.annotation.RequestMapping

       

      @Mapping
      @Target(value={METHOD, TYPE})
      @Retention(value=RUNTIME)
      由上面的信息可以看出,注解类RequestMapping的返回值是Mapping,方法参数有2个,第一个是Method,第二个是Type,即Method是请求的方法,Type是请求的类似是get还是post。

       @RequestMapping(value="/user/delUser",method=RequestMethod.GET)

      新建一个view——annotation.jsp

      新建一个view来实现userController的效果

      <%@ page language="java" contentType="text/html; charset=UTF-8"

          pageEncoding="UTF-8"%>

      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

      <html>

      <head>

      <script type="text/javascript" src="../js/jquery-1.7.min.js"></script>

原文地址:https://www.cnblogs.com/exe19/p/5391660.html