spring注解理解
步骤一:编写web.xml文件,主要代码如下:<servlet>
Java代码
- <servlet-name>spmvc</servlet-name>
- <servlet-class>
- org.springframework.web.servlet.DispatcherServlet
- </servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>spmvc</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
步骤二:编写后端控制器,主要代码如下:package com.asm;
Java代码
- //...省略导入的相关类
- @Controller
- public class SimpleAnnotationControl {
- @RequestMapping("/anno.do")
- public ModelAndView show() {
- ModelAndView mav = new ModelAndView("anno");
- mav.addObject("message", "welcome annotation demo");
- return mav;
- }
- }
步骤三:编写springmvc-servlet.xml配置文件,主要代码如下:<?xml version="1.0" encoding="UTF-8"?>
Xml代码
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 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">
- <context:component-scan base-package="com.asm" />
- <bean id="irViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/page/" />
- <property name="suffix" value=".jsp" />
- </bean>
- </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注解理解的更多相关文章
- 理解 Spring 注解编程模型
理解 Spring 注解编程模型 Spring 中有一个概念叫「元注解」(Meta-Annotation),通过元注解,实现注解的「派生性」,官方的说法是「Annotation Hierarchy」. ...
- 深入理解Spring注解机制(一):注解的搜索与处理机制
前言 众所周知,spring 从 2.5 版本以后开始支持使用注解代替繁琐的 xml 配置,到了 springboot 更是全面拥抱了注解式配置.平时在使用的时候,点开一些常见的等注解,会发现往往在一 ...
- 【Spring注解驱动开发】自定义组件如何注入Spring底层的组件?看了这篇我才真正理解了原理!!
写在前面 最近,很多小伙伴出去面试都被问到了Spring问题,关于Spring,细节点很多,面试官也非常喜欢问一些很细节的技术点.所以,在 Spring 专题中,我们尽量把Spring的每个技术细节说 ...
- spring 注解的优点缺点
注解与XML配置的区别 注解:是一种分散式的元数据,与源代码耦合. xml :是一种集中式的元数据,与源代码解耦. 因此注解和XML的选择上可以从两个角度来看:分散还是集中,源代码耦合/解耦. 注解的 ...
- Spring注解【非单例】
花了至少一整天的时间解决了这个问题,必须记录这个纠结的过程,问题不可怕,思路很绕弯. 为了能说清楚自己的问题,我都用例子来模拟. 我有一个类MyThread是这样的: @Service public ...
- 转-Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
转-http://snowolf.iteye.com/blog/1628861/ Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariab ...
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable (转)
最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札(一 ...
- Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier、@scope
以下内容摘自部分网友的,并加上了自己的理解 @Service用于标注业务层组件(我们通常定义的service层就用这个) @Controller用于标注控制层组件(如struts中的action.Sp ...
- Spring 注解(一)Spring 注解编程模型
Spring 注解(一)Spring 注解编程模型 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring 注解系列 ...
随机推荐
- 5、第5节课CSS补充和html 标签讲解20150924
1. DIV 隐藏 A: 隐藏之后不占位置 display:none; B:隐藏之后占位置 visibility:hidden; 2.DIV 排序 z-index:2; 默认是1,如果想DIV在上 ...
- C++关联容器<map>简单总结
C++关联容器<map>简单总结 map提供大小可变的关联容器,基于关联键值高效检索元素值.当你处理键值对的数据是,都可以考虑使用map关联容器. 特点: 大小可变的关联容器,基于关联键值 ...
- 解析xml的几种方式
http://blog.csdn.net/smcwwh/article/details/7183869
- shell 中 2>&1 的使用
一 相关知识 1)默认地,标准的输入为键盘,但是也可以来自文件或管道(pipe |). 2)默认地,标准的输出为终端(terminal),但是也可以重定向到文件,管道或后引号(backquotes ` ...
- JavaScript Arguments 实现可变参数的函数,以及函数的递归调用
//可变参数的函数 注:也可以使用对象作为参数来实现 function Max() { var temp = arguments[0] || 0; for (var i = 1; i < arg ...
- Java内存分配和GC
Java内存分配和回收的机制概括的说,就是:分代分配,分代回收. 对象将根据存活的时间被分为:年轻代(Young Generation).年老代(Old Generation).永久代(Permane ...
- 函数递归时,递归次数到900多时,就是抛出异常exception RuntimeError('maximum recursion depth exceeded',)
import subprocess import multiprocessing import urllib import sys import os import pymongo import si ...
- 安装SQL Server 那些事儿
SQL版本: Microsoft SQL Server2008 R2 RTM - Express with Advanced Services 错误描述: System.Configuration.C ...
- 关于js闭包杂记
闭包:一个函数oneF里return了另一个函数innerF,然后在oneF外面运行了函数innerF,如果innerF里有用到在oneF里定义的变量,则此时依然可以引用到, 但是变量值不是定义函数i ...
- 利用libpcap抓取QQ号码信息
最近想在QQ登录时把QQ号码信息记录下来,百度了很多都没有找到具体方式,最近用Wireshark分析报文+libpcap库嗅探实现了这个小功能. 通讯背景: QQ客户端在通讯时使用UDP协议,其中数据 ...