• springMVC注解初步


    一、(补充)视图解析器---XmlViewResolver

    作用:分离配置信息。

    在视图解析器---BeanNameViewResolver的基础之上进行扩充,新建一个myView.xml分离信息

    在applicationContext.xml中进行配置XmlViewResolver,以及处理器配置

    myView.xml:

    实现效果:


    二、SpringMVC注解开发

     常用的两个注解:

    @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

    用于将请求参数区数据映射到功能处理方法的参数上


     入门案例:

     ① Springmvc的包扫描器:

    由于使用了基于注解的Controller,所以这里指定了需要被扫描的包路径,如果有多个可以使用逗号分隔。


     处理器类:[一个处理类中也可定义N个处理器方法]


     2、请求中的通配符用法

     

    实现效果:

     



    3、请求中方式的定义

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


    4、处理器方法的参数

     处理器方法中常用的参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可在方法内直接使用:

    ①HttpServletRequest

    ②HttpServletResponse

    ③HttpSession

    ④用于承载数据的Model

    ⑤请求中所携带的请求参数

    前三种实现方式:

    1
    2
    3
    4
    5
    6
    7
    8
    @RequestMapping(value="/one.do",method=RequestMethod.GET)
    public String doFirst(HttpServletRequest request,HttpServletResponse response,HttpSession session){
        System.out.println(request);
        System.out.println(response);
        System.out.println(session);
     
        return "index";
    }


    用于承载数据的Model:零散参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @RequestMapping(value="/one.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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class UserInfo {
     
        private String uname;
     
        public String getUname() {
            return uname;
        }
     
        public void setUname(String uname) {
            this.uname = uname;
        }
        

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Controller
    @RequestMapping(value="/con")
    public class FirstController{
     
        @RequestMapping(value="/dofirst.do")
        public String doFirst(UserInfo info){
            System.out.println(info.getUname());
             
            return "index";
        }
         
     
    }

     大配置同理:

    jsp页面form表单提交:

    实现效果:

    控制台会出现乱码情况,如何解决?


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

  • 相关阅读:
    基于 jQuery 实现的非常精致的自定义内容滑动条
    异步加载js,Css方法
    jquery ready()的几种实现方法小结
    javascript事件绑定,取消,addEventListener,removeEventListener,attachEvent,detachEvent
    JSONP跨域访问,通过动态加入javascript实现
    抓包
    devops docker笔记
    linux 命令
    ubuntu16 mysql5.7 数据占满磁盘mysql服务停止的恢复方法
    devops kubernates
  • 原文地址:https://www.cnblogs.com/hr1997/p/6228126.html
Copyright © 2020-2023  润新知