Spring MVC注解入门
注解式开发初步
常用的两个注解:
@Controller:是SpringMVC中最常用的注解,它可以帮助定义当前类为一个Spring管理的bean,同时指定该类是一个控制器,可以用来接受请求。标识当前类是控制层的一个具体的实现
@requestMapping:放在方法上面用来指定某个方法的路径,当它放在类上的时候相当于命名空间需要组合方法上的requestmapping来访问
扩充:
|
注解名称 |
作用 |
|
@Controller |
注解标明该类需要Spring容器自动加载,将一个类成为 Spring 容器的 Bean。 |
|
@RequestMapping |
可以标注在类定义处,将 Controller 和特定请求关联起来;还可以标注在方法签名处。所以在类声明处标注的 @RequestMapping 相当于让 POJO 实现了 Controller 接口,而在方法定义处的 @RequestMapping 相当于让 POJO 扩展 Spring 预定义的 Controller(如 SimpleFormController 等)。 |
|
@Resource |
用来注解该属性的SETTER方法参数来源于Spring Bean |
|
@ModelAttribute |
①绑定请求参数到命令对象:放在功能处理方法的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用; ②暴露表单引用对象为模型数据:放在处理器的一般方法(非功能处理方法)上时,是为表单准备要展示的表单引用对象,如注册时需要选择的所在城市等,而且在执行功能处理方法(@RequestMapping注解的方法)之前,自动添加到模型对象中,用于视图页面展示时使用; ③暴露@RequestMapping方法返回值为模型数据:放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为模型数据,用于视图页面展示时使用。 |
|
@SessionAttributes |
代表被注解对象会被存放到HttpSession作用域 |
|
@PathVariable |
用于将请求URL中的模板变量映射到功能处理方法的参数上 |
|
@requestParam |
用于将请求参数区数据映射到功能处理方法的参数上 |
案例:使用@Controller和@RequestMapping()实现欢迎程序
配置包扫描器:


FirstController:

package cn.controller; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
/**
*
* @author
*
*/
@Controller
public class FirstController{
@RequestMapping("/dofirst.do")
public String doFirst(){ return "/WEB-INF/index.jsp";
} }


一个处理类中定义N个处理器方法

package cn.controller; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
/**
*
* @author
*
*/
@Controller
public class FirstController{
@RequestMapping("/dofirst.do")
public String doFirst(){ return "/WEB-INF/index.jsp";
} @RequestMapping("/dosecond.do")
public String doSecond(){
return "/WEB-INF/index.jsp";
} }


命名空间:

请求中的通配符用法

package cn.controller; import java.util.HashMap;
import java.util.Map; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
*
* @author
*
*/
@Controller
//命名空间
@RequestMapping("/hr")
public class FirstController{
@RequestMapping("/dofirst.do")
public String doFirst(){ return "/WEB-INF/index.jsp";
} @RequestMapping("/dosecond.do")
public String doSecond(){
return "/WEB-INF/index.jsp";
} @RequestMapping("/*third.do") // *代表的0个或者N个字符,匹配上的所有以third结尾的格式
public String doThird(){
return "/WEB-INF/index.jsp";
} @RequestMapping ("/fourth*.do") //*代表的0个或者N个字符,匹配所有以fourth开头的地址格式
public String doFour(){
return "/WEB-INF/index.jsp";
} @RequestMapping("/**/fiveth.do") //必须以fiveth结尾,前面可以有N级别目录,也可以是0级
public String doFive(){
return "/WEB-INF/index.jsp";
} @RequestMapping("/*/sixth*.do") //在hr和sixth之前必须存在一级路径。并且只能是一级
public String doSix(){
return "/WEB-INF/index.jsp";
} }





请求中方式的定义
对于@RequestMapping,有一个属性method,用于对被注解方法所处理请求的提交方式进行限制,只有满足该method属性指定的提交方式,才会执行被注解方法。 method属性的取值为RequestMethod,是一个枚举常量。常用值为 RequestMethod.GET 与 RequestMethod.POST

package cn.controller; import java.util.HashMap;
import java.util.Map; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
*
* @author
*
*/
@Controller
//命名空间
@RequestMapping("/hr")
public class FirstController{ @RequestMapping(value="/dofirst.do",method=RequestMethod.GET)
public String doFirst(){
return "/WEB-INF/index.jsp";
} }

默认是GET,POST的话会报错405

处理器方法的参数
处理器方法中常用的参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可在方法内直接使用
1)HttpServletRequest
2)HttpServletResponse
3)HttpSession
4)用于承载数据的Model
5)请求中所携带的请求参数
我们先用前四种

package cn.controller; import java.util.HashMap;
import java.util.Map; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
*
* @author
*
*/
@Controller
//命名空间
@RequestMapping("/hr")
public class FirstController{
@RequestMapping(value="/dofirst.do",method=RequestMethod.GET)
public String doFirst(HttpServletRequest request,HttpServletResponse response,HttpSession session,Model model){
System.out.println("request\t"+request);
System.out.println("response\t"+response);
System.out.println("session\t"+session);
System.out.println("model\t"+model);
return "/WEB-INF/index.jsp";
} }


请求中所携带的请求参数——零散参数

@RequestMapping(value="/dofirst.do",method=RequestMethod.GET)
public String doFirst(Model model){
Map<String,Object> datas=new HashMap<String, Object>();
datas.put("uname", "火狐");
model.addAllAttributes(datas);
System.out.println(model);
return "index";
}



对象参数:装配成实体
自定义实体类:UserInfo

package cn.entity;
public class UserInfo {
private String uname;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
}

FirstController控制器类方法参数是实体类对象:

package cn.controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import cn.entity.UserInfo; @Controller
//命名空间
@RequestMapping("/hr")
public class FirstController{ @RequestMapping(value="/dofirst.do")
public String doFirst(UserInfo info){
System.out.println(info.getUname()); return "/WEB-INF/index.jsp";
} }

appliactiobContext.xml

jsp页面form表单提交:



解决乱码问题:Web.xml配置编码过滤器---CharacterEncodingFilter



Spring MVC注解入门的更多相关文章
- spring mvc 注解入门示例
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...
- Spring MVC 注解[转]
[学习笔记]基于注解的spring3.0.x MVC学习笔记(九) 摘要: 本章节,仅为@SessionAttributes的功能扩展介绍介绍,结合@requestparam注解进行简易无数据库分页. ...
- Spring MVC【入门】
Spring MVC[入门]就这一篇! MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Mod ...
- Spring Mvc的入门
SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的. Spring Web MVC是什么: Sprin ...
- Spring MVC注解的一些案列
1. spring MVC-annotation(注解)的配置文件ApplicationContext.xml <?xml version="1.0" encoding=& ...
- spring mvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- spring mvc 注解示例
springmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
- 关于Spring mvc注解中的定时任务的配置
关于spring mvc注解定时任务配置 简单的记载:避免自己忘记,不是很确定我理解的是否正确.有错误地方望请大家指出. 1,定时方法执行配置: (1)在applicationContext.xml中 ...
- spring mvc 注解@Controller @RequestMapping @Resource的详细例子
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...
随机推荐
- asp.net MVC4 表单 - CheckBox兴趣爱好
1.Model层定义属性 public class vmUser { public string userName { get; set; } public string sex { get; set ...
- 10个最常见的 HTML5 面试题及答案
这是选择了10个 HTML5 面试问题并给出了答案.这是 Web 开发人员最常见的面试问题,相信你掌握了这些重要的面试问题后一定会觉得你的理解提高了.一起来看看吧. 您可能感兴趣的相关文章 Web 前 ...
- Xms Xmx PermSize MaxPermSize 区别
Eclipse崩溃,错误提示: MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) s ...
- SVN部署和使用
一.SVN介绍 svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人.目前,绝大多数开源软件都使用svn作为代码版本管理软件. 二.服务器端和客户端 1.服务器端软件Subver ...
- node.js下使用RSA加密事例(windows)
1.安装openss 直接下载window下的安装包 http://houjixin.blog.163.com/blog/static/3562841020144143494875/ 以我发博文现在的 ...
- android Viewpager HorizontalScrollView 实现分页栏拖拽
源码:http://files.cnblogs.com/android100/ViewPaperDemo.rar首先我们先看一个效果: 前两个是网易的,它做的title不能拖拽,.不过点击动画效果挺 ...
- Picard报错“MAPQ should be 0 for unmapped read”的解决方法
picard对bwa生成的sam文件进行reorder时,报错如下: Getting Help Exception in thread "main" htsjdk.samtools ...
- CentOS7中安装MySQL(简便)及 网站的搭建
一.首先,我们需要配置CentOS7中网络环境的搭建,物理机IP为192.168.100.39,虚拟机IP为192.168.100.139,网络模式设置为桥接模式 ,再进入系统挂载光盘.输入命令 ...
- Spring mvc中@RequestMapping 6个基本用法
Spring mvc中@RequestMapping 6个基本用法 spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: Java代码 @Reques ...
- 搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)
——搭建android开发环境的方式有多种,比如:JDK+Eclipse+SDK+ADT或者JDK+Eclipse+捆绑好的AndroidSDK或者Android Studio. Google 决定将 ...