`

[转] spring mvc获取路径参数的几种方式

阅读更多

SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是 DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理 以后再返回相应的视图(View)和模型(Model),返回的视图和模型都可以不指定,即可以只返回Model或只返回View或都不返回。在使用注解 的SpringMVC中,处理器Handler是基于@Controller和@RequestMapping这两个注解的,@Controller声明 一个处理器类,@RequestMapping声明对应请求的映射关系,这样就可以提供一个非常灵活的匹配和处理方式。

DispatcherServlet是继承自HttpServlet的,既然SpringMVC是基于DispatcherServlet的,那么 我们先来配置一下DispatcherServlet,好让它能够管理我们希望它管理的内容。HttpServlet是在web.xml文件中声明的。

一、从视图向controller传递值,  controller <— 视图

1、通过@PathVariabl注解获取路径中传递参数 

1     @RequestMapping(value = "/{id}/{str}") 
2     public ModelAndView helloWorld(@PathVariable String id, 
3             @PathVariable String str) { 
4         System.out.println(id); 
5         System.out.println(str); 
6         return new ModelAndView("/helloWorld"); 
7     }

2、
 
1)简单类型,如int, String, 应在变量名前加@RequestParam注解,
例如:

       @RequestMapping("hello3")
       public String hello3( @RequestParam("name" ) String name,
                               @RequestParam("hobby" ) String hobby){
            System. out.println("name=" +name);
            System. out.println("hobby=" +hobby);      
             return "hello" ;
      }


但这样就要求输入里面必须有这两个参数了,可以用required=false来取消,例如:
@RequestParam(value=”name”,required=false) String name
但经测试也可以完全不写这些注解,即方法的参数写String name,效果与上面相同。
 
2)对象类型:

       @RequestMapping("/hello4" )
       public String hello4(User user){
            System.out.println("user.getName()=" +user.getName());
            System.out.println("user.getHobby()=" +user.getHobby());
            return "hello";
      }


Spring MVC会按:
     “HTTP请求参数名=  命令/表单对象的属性名”
    的规则自动绑定请求数据,支持“级联属性名”,自动进行基本类型数据转换。
此外,还可以限定提交方法为POST,即修改方法的@RequestMapping注解为
@RequestMapping(value=”/hello4″,method=RequestMethod.POST)
 
最后,注意,如果这里提交过来的字符出现乱码,应该在web.xml里加入如下filter:
 

<filter>
   <filter-name>encodingFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class>
   <init-param>
      <param-name>encoding</param-name>
      <param-value>utf8</param-value>
   </init-param>
</filter>
 
<filter-mapping>
   <filter-name>encodingFilter</filter-name >
   <url-pattern>/*</url-pattern>
</filter-mapping>

返回数据到页面几种方式:      

  1.     //返回页面参数的第二种方式,在形参中放入一个Model  
        @RequestMapping(value = "/hello2.htm")  
        public String hello2(int id,Model model){  
            System.out.println("hello2 action:"+id);  
            model.addAttribute("name", "huangjie");  
            //这个只有值没有键的情况下,使用Object的类型作为key,String-->string  
            model.addAttribute("ok");  
            return "hello";  
        }
  1.    //返回页面参数的第一种方式,在形参中放入一个map  
        @RequestMapping(value = "/hello1.htm")  
        public String hello(int id,Map<String,Object> map){  
            System.out.println("hello1 action:"+id);  
            map.put("name", "huangjie");  
            return "hello";  
        }
 
From: http://www.kankanews.com/ICkengine/archives/122505.shtml
分享到:
评论

相关推荐

    SPRING MVC 的请求参数获取的几种方法

    SPRING MVC 请求参数获取的几种方法 SPRING MVC 框架中,获取请求参数是非常重要的一步,下面将介绍 SPRING MVC 中获取请求参数的几种方法。 1. 使用 @PathVariable 注解获取路径中传递参数 在 SPRING MVC 中,...

    Spring MVC请求映射常见的三种方式

    除了基本的映射方式,Spring MVC还提供了许多高级特性,如路径变量、请求参数、通配符等。例如,使用`@PathVariable`可以从URL路径中提取动态值: ```java @RequestMapping("/user/{id}") public String getUser(@...

    spring mvc

    Spring MVC 的核心处理流程主要包括以下几个步骤: 1. **请求接收**:客户端发送 HTTP 请求到服务器。 2. **前端控制器**:DispatcherServlet 接收到请求并调用 HandlerMapping。 3. **处理映射**:HandlerMapping ...

    spring mvc注解实例

    `&lt;mvc:annotation-driven&gt;`:这是 Spring MVC 的一个重要注解,它启用了 Spring MVC 对注解的支持,例如 `@RequestMapping`, `@RequestParam`, `@PathVariable` 等,使得我们可以使用注解来处理请求映射和参数绑定。...

    Spring3 MVC请求参数获取的几种方法小结

    Spring3 MVC请求参数获取的几种方法小结 在 Spring3 MVC 框架中,获取请求参数是非常重要的步骤,本文将介绍四种获取请求参数的方法,分别是通过@PathVariabl获取路径中的参数、@ModelAttribute获取POST请求的FORM...

    基于注解的spring mvc

    基于注解的Spring MVC是一种流行的Java Web开发框架,它极大地简化了控制器的配置和处理请求的方式。本节将深入探讨Spring MVC的注解驱动机制、基础配置以及控制器的返回值分析。 首先,让我们来看看Spring MVC的...

    Spring MVC简单实例

    总之,Spring MVC 提供了一种高效、灵活的方式来构建 Web 应用,它的注解驱动和组件扫描使得代码更简洁,可维护性更强。通过不断的实践和学习,你可以掌握更多高级特性和最佳实践,进一步提升开发效率。

    SpringMVC后台接收请求参数的几种方式Demo

    本教程将详细解析Spring MVC后台接收请求参数的多种方式。我们将重点关注GET和POST请求,这两种请求方式在Web开发中最为常见。以下是对每种方式的详细说明: 1. **路径变量(Path Variables)** 在Spring MVC中,...

    跟我学Spring MVC

    - **注解式控制器**是Spring MVC推荐的一种控制器实现方式。 - **主要注解**: - `@Controller`:标记类为控制器。 - `@RequestMapping`:映射请求到处理方法。 - `@RequestParam`:获取请求参数。 - `@...

    Spring MVC(1)

    例如,`@RequestMapping` 用于映射请求,`@RequestParam` 用于获取请求参数,`@PathVariable` 处理路径变量,`@ModelAttribute` 用于模型绑定等。 ### 6. 示例程序 `demo1` 在提供的 `demo1` 示例程序中,我们可以...

    spring mvc_03

    它是Spring MVC早期版本中用于处理HTTP请求的一种控制器实现。在这个主题“spring mvc_03”中,我们将深入探讨`MultiActionController`的工作原理、使用场景以及与现代Spring MVC实践的对比。 `...

    Jxls+Spring MVC实现Excel导出

    总结一下,实现"Jxls+Spring MVC实现Excel导出"涉及以下几个关键步骤: 1. 引入Jxls和Apache POI依赖。 2. 配置Spring MVC的视图解析器。 3. 创建Excel模板文件,使用Jxls特定的标签来构造动态内容。 4. 在控制器中...

    Spring MVC入门

    Spring MVC是一种流行的Java框架,用于构建Web应用程序。它基于MVC(Model-View-Controller)设计模式,这种模式将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。Model负责数据和...

    Spring MVC实战系列教程(2)--常用请求参数接收方式

    通过实践案例`ParamPassDemo.java`,我们将了解到几种常见的方法,以便在控制器中获取用户提交的数据。 1. **路径变量(Path Variables)** 当URL路径中包含动态部分时,可以使用`@PathVariable`注解来捕获这些值...

    Spring MVC创建-SSM框架整合2.pdf

    4. **Spring MVC配置文件**:`springmvc-servlet.xml`是Spring MVC的配置中心,你可以在这里定义视图解析器、拦截器、数据源、bean的扫描路径以及其他相关设置。例如,你可能会配置一个InternalResourceViewResolver...

    spring3_mvc_lib_支持注解方式

    标题 "spring3_mvc_lib_支持注解方式" 指的是Spring框架的第三个主要版本(Spring 3)中引入的MVC模块对注解的支持。在这个版本中,Spring MVC开始广泛采用注解来简化Web应用程序的开发,使得开发者不再需要编写大量...

    Spring MVC创建-SSM框架整合.pdf

    总的来说,Spring MVC提供了一种高效且灵活的方式来构建Web应用,通过其丰富的注解和组件,开发者可以更专注于业务逻辑,而不是繁琐的请求处理细节。理解并熟练掌握Spring MVC,对于提升Web开发效率和代码质量具有...

    Json-RPC & Spring MVC 集成

    1. **简洁的接口定义**:JSON-RPC的调用方式简洁,只需要指定方法名和参数即可,与Spring MVC的注解式编程风格相吻合。 2. **异步通信**:利用AJAX技术,JSON-RPC可以实现客户端的无刷新更新,提升用户体验。 3. **...

    使用Spring MVC 搭建Rest服务.doc

    在Spring MVC中,你可以通过`@RequestMapping`注解来指定URI路径。 2. **HTTP方法**:GET、POST、PUT、DELETE等HTTP方法对应REST服务中的CRUD操作。GET用于获取资源,POST用于创建资源,PUT用于更新资源,DELETE...

Global site tag (gtag.js) - Google Analytics