一)注解开发SpringMVC

  • 注解的开发SpringMVC的第一步第取消使用接口的方式等
  • 使用Contorller注解和RequestMapping注解进行注解的开发
    • Contorller注解:用于表示当前的类为Spring容器管理表示当前的类是一个控制器
    • RequestMapping注解:可注解在类体上和方法体上类体上为类的命名空间起到区分不同模块
      • 方法体上表示当前方法的访问路径
  • 3.注解开发需要在SpringMVC的配置文件内设置注解扫描器和注册服务器
  • 访问的路径是项目名+控制器的命名空间+方法的具体访问路径
  • 重点是访问的路径命名空间+requestMapping(映射路径)
  • @Scrop注解表示作用域一般设置取原型模式默认是单态模式
   <!--注解注解扫描 扫描指定包下的注解--><context:component-scan base-package="com.sxt.handler"></context:component-scan><!-- 注册扫描的注解服务 --><mvc:annotation-driven/><!-- 静态资源放行 --><mvc:default-servlet-handler/>

方法体:

@Controller
@RequestMapping("/start")
public class MyHandler {@RequestMapping("/my")public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {ModelAndView mv = new ModelAndView();//这对象属性mv.addObject("msg", "helloWorld");//设置跳转路径类似请求转发mv.setViewName("/jsp/hello.jsp");return mv;  }

  • <mvc:annotation-driven/>标签的作用:

    • 自动加载HandleMapping处理器映射器和HandlerAdapet处理器适配器
    • 支持数据的绑定支持
    • 支持Spring注解的支持
    • 对XML的读写支持和JSON数据格式的支持
  • context:component-scan组件扫描器
    • 扫描指定文件下的注解
  • 视图解析器、
    • 页面跳转的方法是返回值的任意指定
    • 页面跳转问题:
    • 在进行页面跳转的时候出现问题是如果路径太长的话那么就会返回的字符串问题
    • 解决方式:提供的视图解析器、视图解析器是DispatcherServler进行调用的所以在bean上可以不使用指定的ID进行识别
    • 视图解析器的真实类名:InternalResourceViewResolver(视图解析器的主要实现类)
    • 导入视图解析器的bean
    • 添加属性前缀和后缀:
    • 使用的属性:
    • prefix前缀
    • suffix后缀
                 <!-- 添加视图解析器 --><bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 对视图解析器的路径太长的问题进行解决 --><property name="prefix" value="/jsp/"></property><property name="suffix" value=".jsp"></property></bean>

一)数组参数的接收

  • 使用数组的方式接收上传的多个数据
  • 使用对象类型的数组进行接接收
        @RequestMapping("/skip4")public String skip4(String[] insertno) {for (String string : insertno) {System.out.println(string);}return "hello1";}

  • 表单数据
<form action="start/skip4" method="post"><input type="checkbox" name="insertno" value="a1">a1<br/><input type="checkbox" name="insertno" value="a2">a2<br/><input type="checkbox" name="insertno" value="a3">a3<br/><input type="checkbox" name="insertno" value="a4">a4<br/><input type="submit" value="提交"><br/></form>

  • 使用集合的方式进行接收

    • 存在一个异常使用@RequesParam进行类型的矫正
 @RequestMapping("/skip4")public String skip4(@RequestParam List<String> insertno) {for (String string : insertno) {System.out.println(string);}return "hello1";}

一)restful风格传参

  • 概念:

    • restful参数传递的方式是传递的参数是路径变量的一部分进行传递的
    • 在requestMapping的映射路径上的使用restful的路径修改成指定的路径格式
                         /{name}/{age}/skip5

  • 在方法形参的参数接收的时候使用注解@PathVariable声明该变量是路径变量获取的位置是请求来的路径内(路径变量)
  • 方法体:
   @RequestMapping("/{name}/{age}/skip5")public String skip(@PathVariable String name,@PathVariable int age) {System.out.println(name+"---"+age);return "hello1";}

  • 在请求的路径上也要按照指定的格式进行值的传入
http://localhost:8080/springmvc-3-annntion/start/user/22/skip5

一)JSON格式的数据的接收

  • 使用json串传参数要求要提供三个jackson的jar包
  • 使用的到注解@RequestBody注解接收Json格式的数据
  • 使用ajax进行json格式的数据上传
$(function(){$("#btn1").click(function(){var data={"username":"zangsan",age:18};$.ajax({url:"${pageContext.request.contextPath }/start/scorp",type:"post",contentType:"application/json",data:JSON.stringify(data)})});})

         @RequestMapping("/scorp")public String skip6(@RequestBody User user) {System.out.println(user);return "hello1";}

  • 获取请求头的参数
  • 获取请求头的的信息需要将@RequestHander注解注解在形参上

    • 要求形参名称和请求头的名称一致
    • 注意:
      • 1.如果请求的头内没有参数获取的请求信息就会出现异常
      • 2.获取的头类型每个形参都要使用@RequestHeader进行注解
  @RequestMapping("/skip8")public String skip8(@RequestHeader String  host,@RequestHeader String connection) {System.out.println(host+"---"+connection);return "hello1";}

  • 头信息的获取
<a href="${pageContext.request.contextPath }/start/skip8">请求头信息获取</a>

  • handler返回值类型
  • 承载数据的对象
    • 相当于域对象,在进行适用于String返回类型的时候(String类型适合只进行页面的跳转)

      • map存储 存储的方法 put 方法
      • Model存储 addAttribute()方法
      • ModelMap addAttribute()方法
      • 取值使用EL表达式进行值的取出
      • 和request域对象的使用相似
@RequestMapping("/skip9")public String skip9(String username,String userpass,Map<String, Object> map,Model model,ModelMap map2) {map.put("username", username);model.addAttribute("userpass", userpass);map2.addAttribute("sex", "男");return "hello1";}

响应的注解

  • @ResponseBody注解表示返回的数据放在响应体内
  • 作用在方法上
  • 使用produces属性设置text/html;charset=utf-8设置响应的编码集
  • 响应乱码问题
@RequestMapping(value = "/skip10",produces = "text/html;charset=utf-8")@ResponseBody//表示响应的数据放在请求体内public String skip10() {return "china:瓷器";}

  • void 无返回值类型警访问和应用场景

    • 1.void返回值类型
    • 2.使用HttpServletResponse进行值的返回
    • 3.使用流的方式进行返回
    • 4.不需要进行数据的返回的时候
    • 5.获取参数使用HttpRequestServlet进行获取
@RequestMapping(value = "/skip11",produces = "text/html;charset=utf-8")@ResponseBody//表示响应的数据放在请求体内public void skip11(HttpServletResponse response) throws IOException {//用流的形式进行响应response.setCharacterEncoding("text/html;charset=utf-8");response.getWriter().print("china:瓷器");}

  • Obeject的返回

    • 使用JSON进行返回值的需要使用@ResponseBoay注解
    • 该注解的作用是将返回的格式转换成JSON格式
    • 需要使用jackson.jar包的支持
    • 底层自动调用jackson进行json格式的数据转换
@RequestMapping(value = "/skip12",produces = "text/html;charset=utf-8")@ResponseBody//表示响应的数据放在请求体内 并且按照JSON的格式进行转换public Object skip12() {//用流的形式进行响应return "aa";}

@data注解_SpringMVC注解开发相关推荐

  1. 18.案例实战:体验lombok的核心@Data和@Slf4j注解

    代码:https://github.com/NIGHTFIGHTING/spring_boot_learning/tree/master/18/agan-boot/agan-boot-lombok 添 ...

  2. java注解大全_java开发注解大全

    1.最基础注解(spring-context包下的org.springframework.stereotype) 1.1.@Controller @Service @Repository @Confi ...

  3. 简述java在安卓开发中的应用_Java 自定义注解在安卓开发中的简单运用

    定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.接口.枚举.字段.方法.局部变量.方法 ...

  4. java 自定义注解_Java注解

    前言 近日在阅读开源项目,发现项目里好多奇奇怪怪的注解(@DataScope.@Log...)看得我一脸懵,不知道大家是否也有过这样的经历,回想了一下,发现自己对于注解的知识,好像只停留在@Overr ...

  5. 【IOC 控制反转】Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )

    文章目录 总结 一.Android 事件设置三要素 二.修饰注解的注解 三.Android 事件依赖注入步骤 总结 Android 依赖注入的核心就是通过反射获取 类 / 方法 / 字段 上的注解 , ...

  6. 【Android APT】注解处理器 ( 注解标注 与 初始化方法 )

    文章目录 一.注解处理器 AbstractProcessor 二.使用注解 @AutoService(Processor.class) 标注 注解处理器 三.注解处理器 init 初始化方法 四.注解 ...

  7. 【Android APT】编译时技术 ( 编译时注解 和 注解处理器 依赖库 )

    文章目录 一.编译时注解和注解处理器 二.创建 编译时注解 和 注解处理器 三.添加 编译时注解 和 注解处理器 依赖库依赖 四.博客资源 一.编译时注解和注解处理器 上一篇博客 [Android A ...

  8. 【Java 注解】自定义注解 ( 元注解 )

    文章目录 一.元注解 二.常用的元注解类型 三.@Target 元注解 四.@Retention 元注解 五.@Documented 元注解 六.@Documented 元注解 一.元注解 元注解 是 ...

  9. 【Java 注解】注解简介及作用

    文章目录 一.注解简介 二.注解作用 三.Java 预定义注解 一.注解简介 注释 是使用文字描述程序 , 是 给开发和维护程序的人员看的 , 编译器在编译时会将注释删除 ; 注解 也是用于 描述程序 ...

  10. Java注解配置rest服务_Spring Boot 注解—常用注解

    注:该部分内容包含一些常用注解,如果没有学习过java注解的同学可以先看一下上一小节的内容Spring Boot 注解-基本知识 ,不看也没关系,下面就开始本节内容. @Configuration注解 ...

最新文章

  1. 网站如何布局才能更利于提升用户体验?
  2. flutter获取Android照片地址,Flutter项目安卓配置启动图片
  3. 十强决赛即将拉开帷幕!TECHSPARK星星之火IT创新大赛诚邀您观赛
  4. android——wifi系统架构
  5. Proxmox VE中出现TASK ERROR: command ‘apt-get update‘ failed: exit code 100的解决方法
  6. 20170114 - Mac 向上一级文件夹快捷键
  7. POJ 2182 Lost Cows (线段树)
  8. Async.js——Node世界中被依赖最多的库No.3
  9. 使用axis调用WebService,Java WebService调用工具类
  10. 周末加班,中午吃饭时看到了马总的一条新闻
  11. 把100PB数据迁移到阿里云,需要几步?
  12. 1.1.1 操作系统的层次结构、基本概念、功能和目标
  13. mongo-java 实现使用and拼接多个or查询条件
  14. Eclipse 导入maven项目报 Unknown Faceted Project Problem (Java Version Mismatch) 问题解决
  15. C语言问题:0xC0000005: 写入位置 0xFFFFFFCC 时发生访问冲突。
  16. SpringSecurity+Mybatis实现用户自助注册登录(含角色),打造简单安全的注册登录页面。
  17. AD16及AD18鼠标移动到网络后自动高亮设置
  18. 武汉大学计算机专业考研靠什么,武汉大学计算机技术考研科目有哪些?
  19. (保姆级)利用ffmpeg将flv批量转mp4
  20. Maven超细致史上最全Maven下载安装配置教学(2022更新...全版本)建议收藏...赠送IDEA配置Maven教程

热门文章

  1. 那些汽车搭载鸿蒙,华为牵手吉利?网曝首款搭载鸿蒙OS的汽车为吉利博越Pro新车...
  2. Mariadb读写分离(ProxySQL)
  3. SAE跨应用数据库访问
  4. 三菱FX3U系列—数据寄存器
  5. 看到点小程序,自己也用过感觉可以、推荐给大家
  6. 【操作系统】实验6-仿写Linux下的ls-s命令(转载)
  7. 撩测试MM神器cypress使用入门
  8. Linux小点汇总,更新中...
  9. IOS/Android 读取蓝牙设备电量信息
  10. UIday02~04:UITextField UIButton UIdelegate 自定义视图 容器视图控制器