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 ""/WEB-INF/index.jsp";
- }
对象参数:装配成实体
自定义实体类: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 _day02_IoC注解开发入门
1.Spring IoC注解开发入门 1.1 注解开发案例: 创建项目所需要的jar,四个基本的包(beans core context expression ),以及两个日志记录的包,还要AOP的包 ...
- Spring MVC 注解开发详解
@Controller控制器定义 1.Controller是单利模式,被多个线程请求共享,因此设计成无序状态. 2.通过@controller标注即可将class定义为一个controller类.为使 ...
- Spring的IOC注解开发入门1
基本知识点如下: 引入注解约束,配置组件扫描 类上的注解: @Conponent @Controller @Service @Repository 普通属性的注解 @value 对象属性的注解 ...
- spring mvc 注解入门示例
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...
- Spring MVC 教程,快速入门,深入分析
http://elf8848.iteye.com/blog/875830/ Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门 资源下载: ...
- MyBatis+Spring+Spring MVC整合开发
MyBatis+Spring+Spring MVC整合开发课程观看地址:http://www.xuetuwuyou.com/course/65课程出自学途无忧网:http://www.xuetuwuy ...
- spring mvc 注解@Controller @RequestMapping @Resource的详细例子
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...
- 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 ...
随机推荐
- Dreamweaver 扩展开发:C-level extensibility and the JavaScript interpreter
The C code in your library must interact with the Dreamweaver JavaScript interpreter at the followin ...
- [C#] 简单的 Helper 封装 -- RegularExpressionHelper
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- JS魔法堂:不完全国际化&本地化手册 之 理論篇
前言 最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...
- JAVA FreeMarker工具类
FreeMarkerUtil.java package pers.kangxu.datautils.utils; import java.io.File; import java.io.StringW ...
- 手把手教你做个人 app
我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示:另外,开发一个app,还需要美工协助切图.没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样的吗?先 ...
- Toast显示图文界面——Android开发之路1
Toast的多种使用方法 Toast其实是一个功能特别强大的组件,不仅仅可以吐司一个文本内容,还可以吐司图片以及图文混排的界面.具体用法如下: 第一种:简单的纯文本内容的吐司: Toast.makeT ...
- 敏捷转型历程 - Sprint3 回顾会
我: Tech Leader 团队:团队成员分布在两个城市,我所在的城市包括我有4个成员,另外一个城市包括SM有7个成员.另外由于我们的BA离职了,我暂代IT 的PO 职位.PM和我在一个城市,但他不 ...
- 面向未来的友好设计:Future Friendly
一年前翻译了本文的一部分,最近终于翻译完成.虽然此设计思想的提出已经好几年了,但是还是觉得应该在国内推广一下,让大家知道“内容策略”,“移动优先”,“响应式设计”,“原子设计”等设计思想和技术的根源. ...
- DOM对象模型接口规范中的四个基本接口
DOM对象模型的四个基本接口 在DOM对象模型接口规范中,有四个基本的接口:Document,Node,NodeList以及NamedNodeMap.在这四个基本接口中,Document接口是对文档进 ...
- 利用HTML5 的Datalist 元素实现输入提示
HTML5有无限可能,总是在释出一些新鲜实用的功能,让原生的web环境更加炫酷. 今天看到datalist 这个元素,可以用来预先定义一个输入框的潜在选项,也就是我们在平时项目中经常用jQuery插件 ...