zoukankan      html  css  js  c++  java
  • 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.GETRequestMethod.POST


    4、处理器方法的参数

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

    ①HttpServletRequest

    ②HttpServletResponse

    ③HttpSession

    ④用于承载数据的Model

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

    前三种实现方式:

    	@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:零散参数

    @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

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

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

    @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

  • 相关阅读:
    UVa 1151 Buy or Build【最小生成树】
    UVa 216 Getting in Line【枚举排列】
    UVa 729 The Hamming Distance Problem【枚举排列】
    HDU 5214 Movie【贪心】
    HDU 5223 GCD
    POJ 1144 Network【割顶】
    UVa 11025 The broken pedometer【枚举子集】
    HDU 2515 Yanghee 的算术【找规律】
    Java基本语法
    Java环境变量,jdk和jre的区别,面向对象语言编程
  • 原文地址:https://www.cnblogs.com/WJ-163/p/6222461.html
Copyright © 2011-2022 走看看