步骤一:编写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. hdu 5105

    题意: y=|a*x^3+b*x^2+c*x+d|    求y的最大值? 题目是bc上的,之前写的时候,没考虑0的情况(太笨了).... 水题吧.... AC代码: #include <iost ...

  2. java的练习

    import java.awt.GridLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.s ...

  3. java里面List和Array的区别是什么?

    java里面的List和Array的区别是什么? 1:数组是定长,list是自动增长.2:数组效率高,list效率低.总结:数组牺牲功能增加效率,list牺牲效率增加功能. http://bbs.cs ...

  4. WordPress程序流程分析

    index.php 统一入口文件 包含wp-blog-heaer.php 包含wp-load.php 包含wp-config.php 数据库.语言包配置等 包含wp-setting.php 对各种运行 ...

  5. jquery的几种异步请求,ajax

    http://blog.csdn.net/a5489888/article/details/8523316

  6. Linux && vim 批量替换

    Linux批量文件的字符串替换 sed -i "s/oldstring/newstring/g" `grep oldstring -rl path` vim多行替换::1,2s/s ...

  7. UEFI模式下安装Win 7系统

    转载自:http://huayi898.blog.163.com/blog/static/2581351620144442319155/ 下载win7_64bit原版官方系统 1.用软碟通制作U盘启动 ...

  8. Oracle数据库之PL/SQL流程控制语句

    Oracle数据库之PL/SQL流程控制语句 在任何计算机编程语言(如C,Java,C#等)都有各种流程控制语句,同样,在PL/SQL中也存在这样的流程控制结构. 几种常见的流程控制结构: 一.条件结 ...

  9. 2016最新一元云购完整源码 云购CMS系统 带安卓和ios手机客户端 源码免费分享

    原文转自:http://www.zccode.com/thread-724-1-1.html 该资源说明: 看起来不错的一套一元云购CMS源码,源码包里面带了安卓和ios手机客户端,手机客户端需要自己 ...

  10. IIS7.5 APPCMD 简单用法及示例

    1 添加应用程序进城池 appcmd.exe add apppool  /name:test.com  /managedRuntimeVersion:"v4.0" /managed ...