zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    题解【bzoj3529 [SDOI2014]数表】
    题解【bzoj2301 [HAOI2011]Problem b】
    题解【bzoj2440 [中山市选2011]完全平方数】
    题解【bzoj3240 [NOI2013]矩阵游戏】
    题解【CF277E Binary Tree on Plane】
    题解【luogu2045 方格取数游戏加强版】
    题解【bzoj4650 [NOI2016]优秀的拆分】
    NOIp2018 游记
    Android提供的layout文件存放位置
    Android控件第2类——ImageView
  • 原文地址:https://www.cnblogs.com/exe19/p/5391660.html
Copyright © 2011-2022 走看看