十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

IDEA搭建SpringMVC入门程序(2)——注解、属性、映射方式

IDEA搭建SpringMVC入门程序(2)——注解、属性、映射方式 接上一篇文章继续IDEA搭建SpringMVC入门程序11.注解1标注在方法上的注解上文中已经使用过Controller注解和RequestMapping注解我们在FirstController新增一个RequestMapping(/dog)//设置当前方法返回值类型为 String用于指定请求完成后跳转的页面publicvoidsayHello2(){System.out.println(访问到 sayHello2!);}那么如果想访问sayHello2这个方法访问路径就是下面这样http://localhost:8080/demo10/dog执行结果如下图注意浏览器报错404在这里是正常的因为上面的代码中我们并没有让它返回到某个jsp文件。2标注在类上的注解除了标注在方法上还可以直接标注在类上。比如下面这样我们右击Controller文件夹选择New—Java Class名字为SecondController初始代码如下package com.itheima.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;ControllerRequestMapping(/second)publicclassSecondController{RequestMapping(/say1)publicvoidsayHello3(){System.out.println(访问到 sayHello3!);}}我们重启tomcat,在浏览器中访问下面的路径http://localhost:8080/second/say1就可以看到控制台里正确打印出了信息。2.属性1value属性value属性是RequestMapping注解的默认属性当只有一个属性是则可以省略value本身。下面的两种写法都是一样的。RequstMapping(value/dog)RequestMapping(/dog)value也可以指定多个路径把路径封装成一个请求列表即可。创建一个新的方法RequestMapping(value{/addUser,/deleteUser})publicvoidcheckAuth(){System.out.println(执行系统的增删校验);}添加后项目代码如下重写运行tomcat,分别在浏览器里输入http://localhost:8080/demo10/second/addUserhttp://localhost:8080/demo10/second/deleteUser可以看到相同的内容被打印出来结果如下2method属性method指的是请求方式 一般有GET、POST、PUT、DELETE四种方式右击controller文件夹选择New—Java Class名称为MethodController参考代码如下packagecom.itheima.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;ControllerRequestMapping(/method)publicclassMethodController{//处理请求为GET的方式RequestMapping(methodRequestMethod.GET)publicvoidget(){System.out.println(get请求);}//处理请求为POST的方式RequestMapping(methodRequestMethod.POST)publicvoidpost(){System.out.println(post请求);}//处理请求为PUT的方式RequestMapping(methodRequestMethod.PUT)publicvoidput(){System.out.println(put请求);}//处理请求为GET的方式RequestMapping(methodRequestMethod.DELETE)publicvoiddelete(){System.out.println(delete请求);}}在浏览器里输入下面的地址浏览器默认就是get方式http://localhost:8080/demo10/methodIDEA控制台会输出下面的内容其他方式建议使用api工具进行请求。3 param属性params属性中定义的值可以将请求映射的定位范围缩小。当客户端进行请求时如果请求参数的值等于params属性定义的值则可以正常执行到的方法否则映射的方法不执行。注意实际开发中这种方式很少使用这种方式。右击controller文件夹选择New—Java Class名字为ParamsController参考代码如下packagecom.itheima.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;ControllerpublicclassParamsController{RequestMapping(value/params,paramsid1)publicvoidfindById(Stringid){System.out.println(idid);}}实现效果如下图可以看到如果填写id2是访问不到findById方法的3.映射方式1基于请求方式的URL路径映射GetMapping对应GET方式的请求PostMapping对应POST方式的请求PutMapping对应PUT方式的请求DeleteMapping对应DELETE方式的请求PatchMapping对应PATCH放到的请求如果使用基于请求方式的URL路径映射则简单修改一下即可比如原来是下面这样ControllerpublicclassParamsController{RequestMapping(value/dog,)publicvoidtest(){System.out.println(test);}}现在改成下面这样ControllerpublicclassParamsController{GetMapping(value/dog,)publicvoidtest(){System.out.println(test);}}GetMapping是RequestMapping(methodRequestMethod.GET)的缩写2基于Ant风格的URL路径映射?匹配单个字符*匹配任意数量字符不包括路径分隔符/**匹配任意层级的路径包括路径分隔符/代码风格如下RestControllerRequestMapping(/api/books)publicclassBookController{// 精确匹配 /api/books/details/123GetMapping(/details/{id})publicBookgetBookDetails(PathVariableLongid){// ...}// Ant风格: 匹配 /api/books/category/novel 或 /api/books/category/techGetMapping(/category/*)publicListBookgetBooksByCategory(){// ...}// Ant风格: 匹配 /api/books/search/任意内容GetMapping(/search/*/keyword)publicListBooksearchBooks(){// ...}// 多级路径匹配: 如 /api/books/files/2023/12/01/document.pdfGetMapping(/files/**)publicStringgetFile(){// ...}// 匹配单字符: /api/books/note/a 或 /api/books/note/bGetMapping(/note/?)publicStringgetNoteByChar(){// ...}}3基于RESTful风格的URL路径映射右击controller文件夹选择New—Java Class名字为UserController参考代码如下packagecom.itheima.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RequestMapping;ControllerRequestMapping(/users)publicclassUserController{GetMapping(/{id}/{name})publicvoidgetOrder(PathVariableStringid,// 用户IDPathVariableStringname// 用户名name){System.out.println(用户IDid);System.out.println(用户namename);}}在浏览器中输入下面的地址http://localhost:8080/demo10/users/2/tom这里2表示的就是idtom表示表示就是name访问浏览器后IDEA控制台就会出现我们的参数
返回列表