spring mvc获取路径参数的几种方式 - 浅夏的个人空间 - 开源中国社区

body
{
font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif;
font-size: 10.5pt;
line-height: 1.5;
}
html, body
{

}
h1 {
font-size:1.5em;
font-weight:bold;
}
h2 {
font-size:1.4em;
font-weight:bold;
}
h3 {
font-size:1.3em;
font-weight:bold;
}
h4 {
font-size:1.2em;
font-weight:bold;
}
h5 {
font-size:1.1em;
font-weight:bold;
}
h6 {
font-size:1.0em;
font-weight:bold;
}
img {
border:0;
max-width: 100%;
}
blockquote {
margin-top:0px;
margin-bottom:0px;
}
table {
border-collapse:collapse;
border:1px solid #bbbbbb;
}
td {
border-collapse:collapse;
border:1px solid #bbbbbb;
}

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

2

3

4

5

6

7

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注解,
例如:

?


1

2

3

4

5

6

7

???????@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)对象类型:

?


1

2

3

4

5

6

???????@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:
?

?


1

2

3

4

5

6

7

8

9

10

11

12

13

<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. ?


    1

    2

    3

    4

    5

    6

    7

    8

    9

    ????//返回页面参数的第二种方式,在形参中放入一个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. ?


    1

    2

    3

    4

    5

    6

    7

    ???//返回页面参数的第一种方式,在形参中放入一个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";??

    ????}

来自为知笔记(Wiz)

时间: 2024-07-30 10:19:40

spring mvc获取路径参数的几种方式 - 浅夏的个人空间 - 开源中国社区的相关文章

springboot 获取控制器参数的几种方式

这里介绍springboot 获取控制器参数有四种方式 1.无注解下获取参数 2.使用@RequestParam获取参数 3.传递数组 4.通过URL传递参数 无注解下获取参数无注解下获取参数,需要控制器层参数与HTTP请求栏参数名称一致,这样后台就可以获取到请求栏的参数. /** * 无注解获取参数时,参数名称和HTTP请求参数必须一致 * @param name String 姓名 * @param age int 年龄 * @param score double 分数 * @return

(01)Spring MVC之处理异常的两种方式及优先级

项目开发中异常需要统一处理,总的来说有两种方式,一种是实现HandlerExceptionResolver接口,一种是使用@ExceptionHandler注解的方式.其中Spring已经为我们提供了一个实现了HandlerExceptionResolver接口的类SimpleMappingExceptionResolver,有人把它单独列为一种方式,不过我认为方式越少越好,哈哈哈哈哈,下面记录一下Spring MVC处理异常的这两种方式. 1.实现HandlerExceptionResolve

Java Spring Controller 获取请求参数的几种方法

技术交流群:233513714  1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"="application/x-www-form-urlencoded",可用post提交 url形式:http://localhost:8080/SSMDemo/demo/addUser1?username=lixiaoxi&password=111111 提交的参数需要和Contr

Spring Controller 获取请求参数的几种方法

1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"="application/x-www-form-urlencoded",可用post提交        url形式:http://localhost:8080/SSMDemo/demo/addUser1?username=lixiaoxi&password=111111 提交的参数需要和Controller方法中的入

JavaWeb获取请求参数的两种方式

第一种:通过获取缓冲流读取参数 public void registerUser(HttpServletRequest request, HttpServletResponse response)throws  Exception  { //直接获取请求参数,通过缓冲流读取数据  BufferedReader br=request.getReader();  String inputLine = "";  String json = "";      while (

java之spring mvc之Controller配置的几种方式

这篇主要讲解 controller配置的几种方式. 1. URL对应 Bean 如果要使用此类配置方式,需要在XML中做如下样式配置 <!-- 配置handlerMapping --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- 配置Controller --> <bean name="/hello.do&

Django回顾--获取请求参数的几种方式

路径参数 查询字符串:request.GET(字典) 请求体(表单类型):request.POST(字典) 请求体(非表单类型):request.body(字节) 请求头:request.META 其他常用HttpRequest对象属性method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'.'POST'.user:请求的用户对象.path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分.encoding:一个字符串,表示提交的数据的编码方式.如果为None则表示

Spring MVC 获取前端参数的注解

在与前端交互的开发过程中,出现过几次无法取到参数的情况,费了些时间去排查问题,下面就简单总结一下. 注解详解 我们所要获取的前端传递参数大概可以分为以下四类: requet uri 部分的注解:@PathVariable request header部分的注解:@RequestHeader, @CookieValue request body部分的注解:@RequestParam,  @RequestBody attribute 类型是注解: @SessionAttributes, @Model

php获取post参数的几种方式

PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型. 1.$_POST['paramName'] 只能接收Content-Type: application/x-www-form-urlencoded提交的数据...php会将http请求body相应数据会 填入到数组$_POST,填入到$_POST数组中的数据是进行urldecode()解析的结果.(其实,除了该Content-Type,还有 multipart/form-data表示数据