步骤一:编写web.xml文件,主要代码如下:<servlet>

Java代码

  1. <servlet-name>spmvc</servlet-name>
  2. <servlet-class>
  3. org.springframework.web.servlet.DispatcherServlet
  4. </servlet-class>
  5. <load-on-startup>1</load-on-startup>
  6. </servlet>
  7. <servlet-mapping>
  8. <servlet-name>spmvc</servlet-name>
  9. <url-pattern>*.do</url-pattern>
  10. </servlet-mapping>

步骤二:编写后端控制器,主要代码如下:package com.asm;

Java代码

  1. //...省略导入的相关类
  2. @Controller
  3. public class SimpleAnnotationControl {
  4. @RequestMapping("/anno.do")
  5. public ModelAndView show() {
  6. ModelAndView mav = new ModelAndView("anno");
  7. mav.addObject("message", "welcome annotation demo");
  8. return mav;
  9. }
  10. }

步骤三:编写springmvc-servlet.xml配置文件,主要代码如下:<?xml version="1.0" encoding="UTF-8"?>

Xml代码

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xsi:schemaLocation="
  5. http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  6. http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  7. <context:component-scan base-package="com.asm" />
  8. <bean id="irViewResolver"        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  9. <property name="prefix" value="/WEB-INF/page/" />
  10. <property name="suffix" value=".jsp" />
  11. </bean>
  12. </beans>

说明:在spring中,通过配置一个自动扫描器,可以自动扫描到某个范围下的所有组件,这些组件必须是标记有特定注解,比较常用的特定注解有@Component、@Repository、 @Service和@Controller。比如这里就会把SimpleAnnotationControl类纳入spring容器管理。关于spring自动扫描管理bean可以参它的相关文档。

步骤四:在WEB-INF/page目录下编写anno.jsp页面,主要代码如下:
  <body>

欢迎来到注解页面<br/>

${message}

</body>

步骤五:启动服务器,访问…/anno.do完成测试。

简析注解:在本实例中,我们使用了两个注解:

一是Controller注解,此注解的作用是把控制器SimpleAnnotationControl纳入spring容器管理;

二是@RequestMapping注解。

下面我们重点分析此注解:

在本例中,我们使用 @RequestMapping("/anno.do")这种简写形式,实际它的完整形式应为:@RequestMapping(value = "/anno.do")。

value属性指明了它的映射路径,比如这里的映射路径为anno.do。

此注解除了value属性外,还有如下属性:method、headers、params。

@RequestMapping(value = "/anno.do", method = RequestMethod.GET)

此配置说明只有GET请求才能访问anno.do。可以增加如下POST请求代码测试:

<form action="<%=request.getContextPath() %>/anno.do" method="post">

<input type="submit" value="POST方式">

</form>

发现此种POST请求方式是不能访问anno.do得

@RequestMapping(value = "/anno.do", params = { "username=admin", "password=123456" })

此配置说明只有附带正确的请求参数才能访问,比如在这里只能是…/anno.do?username=admin&password=123456才能正确访问。

spring注解理解的更多相关文章

  1. 理解 Spring 注解编程模型

    理解 Spring 注解编程模型 Spring 中有一个概念叫「元注解」(Meta-Annotation),通过元注解,实现注解的「派生性」,官方的说法是「Annotation Hierarchy」. ...

  2. 深入理解Spring注解机制(一):注解的搜索与处理机制

    前言 众所周知,spring 从 2.5 版本以后开始支持使用注解代替繁琐的 xml 配置,到了 springboot 更是全面拥抱了注解式配置.平时在使用的时候,点开一些常见的等注解,会发现往往在一 ...

  3. 【Spring注解驱动开发】自定义组件如何注入Spring底层的组件?看了这篇我才真正理解了原理!!

    写在前面 最近,很多小伙伴出去面试都被问到了Spring问题,关于Spring,细节点很多,面试官也非常喜欢问一些很细节的技术点.所以,在 Spring 专题中,我们尽量把Spring的每个技术细节说 ...

  4. spring 注解的优点缺点

    注解与XML配置的区别 注解:是一种分散式的元数据,与源代码耦合. xml :是一种集中式的元数据,与源代码解耦. 因此注解和XML的选择上可以从两个角度来看:分散还是集中,源代码耦合/解耦. 注解的 ...

  5. Spring注解【非单例】

    花了至少一整天的时间解决了这个问题,必须记录这个纠结的过程,问题不可怕,思路很绕弯. 为了能说清楚自己的问题,我都用例子来模拟. 我有一个类MyThread是这样的: @Service public ...

  6. 转-Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable

    转-http://snowolf.iteye.com/blog/1628861/ Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariab ...

  7. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable (转)

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札(一 ...

  8. Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier、@scope

    以下内容摘自部分网友的,并加上了自己的理解 @Service用于标注业务层组件(我们通常定义的service层就用这个) @Controller用于标注控制层组件(如struts中的action.Sp ...

  9. Spring 注解(一)Spring 注解编程模型

    Spring 注解(一)Spring 注解编程模型 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring 注解系列 ...

随机推荐

  1. Android自定义属性、控件三步法

    第二步中layout-activity_main.xml 中自命名控件: xmlns:android="http://schemas.android.com/apk/res/android& ...

  2. RHEL7查看网卡配置命令ip addr show

    Validating Network Address Configuration To verify the configuration of the network address, you nee ...

  3. 安装android studio 出现的路径问题 tools.jar' seems to be not in Android Studio classpath

    尝试一下android studio  ,谁知出现路径问题 'tools.jar' seems to be not in Android Studio classpath. Please ensure ...

  4. Asp服务器控件(HyperLink、Button) 绑定后台参数 DataBinder.Eval

    HyperLink动态绑定参数 <asp:HyperLink id="MbCenterHLnk" runat="server" Text='会员中心' T ...

  5. JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法

    转载至http://www.blogjava.net/itspy/archive/2007/12/20/169072.html Oracle 问题描述:今天使用jdbc连接oracle 10.2.0. ...

  6. goldengate单向复制文档

    1:实验环境 2:实验步骤 --下面的2.1-2.2步骤,都需要在源端和目标端分别执行. 2.1:准备工作 2.1.1 建表空间 create tablespace ogg datafile '/u0 ...

  7. FAL[client]: Failed to request gap sequence GAP - thread 1 sequence 29-29

    一:问题描述 主备库所在机器都重启后,rac(主库)开机自动启动,但备库(单实例)不是开机启动,现已手工启动到mount,并已在备库上alter database recover  standby d ...

  8. zepto源码研究 - zepto.js-4(常用的工具)

    $.each: /** * 以集合每一个元素作为上下文,来执行回调函数 * @param elements * @param callback * @returns {*} */ $.each = f ...

  9. GUI树组件,表格

    树组件首先要new一个JTree,再加结点,然后添加到 JScrollPane JTree tree1=new JTree(); //.......添加节点 add(new ScrollPane(tr ...

  10. [转]extern,static存储空间矛盾

    其实,这两个语句的位置不同,会出现不同的解释.这主要是由于 static 具有的两重意义所导致的: (1) 如果 static int foo; 这一句位于函数中,则 static 表示的是存储属性, ...