【ssh系列二】——SpringMVC中的注解及运用

简介: 解释:RequestMapping是一个用来处理请求地址映射的注解(将请求映射到对应的控制器方法中),可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。(当项目比较大,服务模块比较多,为了方便区分控制器中的方法,可以通过类上加入该注解来进行区分)

一、@RequestMapping


   解释:RequestMapping是一个用来处理请求地址映射的注解(将请求映射到对应的控制器方法中),可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。(当项目比较大,服务模块比较多,为了方便区分控制器中的方法,可以通过类上加入该注解来进行区分)

   属性:

     value:指定请求的实际url(支持ant风格、可以含正则表达式、支持或关系)。

     method:指定请求的method类型:GET、POST、PUT、DELETE。

     params:指定request中必须包含某些参数值是,才让该方法处理。

     headers:指定request中必须包含某些指定的header值,才能让该方法处理请求(headers的查看可通过浏览器--按F12--NetWork进行查看Headers的信息,如下图)。

     consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html(如下图方式查看)。

     produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回(如下图方式查看)。


20170813120242490.png


   实例:


-
    /**
     * @RequestMapping 实例!
     * 请求地址:http://localhost:8080/(随意一个字符)test1?username=aaa&age=12
     * 或者请求地址:http://localhost:8080/test(随意多个字符)?username=aaa&age=12
     */
    @RequestMapping(value={"?test1","test*"} ,
            method={RequestMethod.GET,RequestMethod.POST},
            params={"username:\\d+","age!=1"},
            headers={"Content-Language!=en"},
            consumes ={"application/json","text/html"},
            produces ={"application/json"})
    public String testRequestMapping(){
        System.out.println("testRequestMapping");
        return SUSSECC;
    }
-


二、@RequestParam


   解释:绑定单个页面请求来的参数值,用于将请求参数区数据映射到功能处理方法的参数上。

   属性:

     value:入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入。

     required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将抛出异常。

     defaultValue:默认值,表示如果请求中没有同名参数时的默认值,设置该参数时,自动将required设为false。

   实例:


-
 /**
     * @RequestParam 实例!
     * 请求地址:http://localhost:8080/test1?username=aaa
     */
    @RequestMapping(value={"test1"})
    public String testRequestParam(
            @RequestParam(value="username",
                        required = false,
                        defaultValue = "无") String username){
        System.out.println("testRequestParam"+username);
        return SUSSECC;
    }
-


三、@PathVariable


   解释:绑定URL模板变量值,用于将请求URL中的模板变量映射到功能处理方法的参数上。

   属性:

     value:入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入。

     required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将抛出异常。

   实例:


-
    /**
     * @PathVariable 实例!
     * 请求地址:http://localhost:8080/test1/aaa
     */
    @RequestMapping(value={"test1/{username}"})
    public String testPathVariable(
            @PathVariable(value="username",
                    required = false) String username) {
        System.out.println("testPathVariable"+username);
        return SUSSECC;
    }
-


四、@ModelAttribute


   解释:ModelAttribute可以应用在方法参数上或方法上,他的作用主要是当注解在方法参数上时会将注解的参数对象添加到Model中;当注解在请求处理方法Action上时会将该方法变成一个非请求处理的方法,但其它Action被调用时会首先调用该方法。

   属性:

     value:绑定模型中的key。

     binding:控制数据绑定,默认是true。

   实例:


-
    /**
     * @ModelAttribute 实例!
     * 页面取值:${requestScope.Name};显示:mark
     */
    @ModelAttribute
    public void testModelAttribute(Model model) {
        model.addAttribute("Name","mark");
    }
    /**
     *页面取值:${requestScope.aaa};显示:mark
     */
    @ModelAttribute(value="aaa",binding = false)
    public String testModelAttribute2() {
        return "mark";
    }
    /**
     *页面取值:${requestScope.user.name};显示:mark
     */
    @ModelAttribute
    public User testModelAttribute1() {
        User user = new User();
        user.setName("mark");
        return user;
    }
    /**
     * 和上面返回User方法对应,如果直接返回实体类User则下面方面中的值应该是该实体的首字母小写
     *页面取值:${requestScope.user.name};显示:mark111
     */
    @RequestMapping(value={"test1"})
    public String testModelAttribute3(@ModelAttribute("user") User user) {
        user.setName("mark111");
        return SUSSECC;
    }
-


五、@SessionAttributes


   解释:在默认情况下,Model中的属性作用域是 request 级别是,也就是说,当本次请求结束后,Model中的属性将销毁。如果希望在多个请求中共享 Model中的属性,必须将其属性转存到 session 中,这样 Model的属性才可以被跨请求访问。

   属性:

     1、value:这是一个字符串数组,里面应写需要存储到session中数据的名称。

     2、types:根据指定参数的类型,将模型中对应类型的参数存储到session中。

   实例:


-
    /**
     * 页面取值:${requestScope.user1.name};显示:mark111
     */
    @SessionAttributes(value="user",types ={User.class})
    public class Test
    {
        @RequestMapping(value = {"test1"})
        public String testSessionAttributes(Model model) {
            User user = new User();
            user.setName("mark111");
            model.addAttribute("user1", user);
            return SUSSECC;
        }
    }
-


六:@Responsebody与@RequestBody


   解释:(可以分开使用)

     Responsebody:表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用。

     RequestBody:将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

   实例:


-
    /**
     *  将请求中的 datas 写入 User 对象中
     */
    @RequestMapping(value = "test1")
    @ResponseBody
    public User login(@RequestBody User user) {
        // 不会被解析为跳转路径,而是直接写入 HTTP 响应正文中
        return user;
    }
-


七:@Controller


   解释:控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。


八:总结


   将这些注解学习完之后并且通过例子进行了实践,也有类似的注解之间的对比过程,相信以后用的时候就会很方便了。

相关文章
|
3月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
83 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
5月前
|
Java 数据库连接 网络安全
杨老师课堂之基于注解的SSH整合案例
杨老师课堂之基于注解的SSH整合案例
17 0
|
Java 数据库连接 网络安全
JavaEE框架整合之基于注解的SSH整合
基于注解的SSH整合   开发环节步骤: 实体类 -----> DAO开发 -----> Service开发 -----> Action动作类开发 -----> 配置文件(applicationContext.
1032 0
|
Java 数据库连接 网络安全
杨老师课堂之基于注解的SSH整合案例
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/81295201 基于注解的SSH...
1041 0
|
JSON Java 网络安全
SSH框架之SpringMVC文件上传功能代码
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/79327717 简介  ...
1036 0
|
网络安全 Spring Java
|
关系型数据库 Java 数据库连接
spring 整合hibernate注解时候,出现“Unknown entity: com.ssh.entry.Admin; nested exception is org.hibernate.MappingException: Unknown entity: com.ssh.entry.Admin
今天学习使用ssh框架的时候,出现一个异常,弄了好久才找到,在这记录一下,我的sb错误1.spring整合hibernate,取代*.hbm.xml配置文件   在applicationContext.
2364 0
|
JSON Java 程序员
ssh框架之springmvc文件下载功能代码
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/72771926 一、前言   上一篇文章我们了解了,通过Java的io输出流来实现普通的文件下载的功能,是广大程序员在做项目中会普遍使用到的下载文件的方法。
899 0