不备案的网站能上去吗,比较好的免费空间,郑州网站建设的公司,厦门关键词优化网站前言
上一篇文章介绍了SpringMVC是什么以及它的工作流程和核心组件#xff0c;介绍入门示例时#xff0c;提到了RequestMapping注解#xff0c;那么这篇文章就来介绍SpringMVC中更多的常用的注解#xff0c;以及它的参数传递。 一. SpringMVC常用注解
1.1 RequestParam
…前言
上一篇文章介绍了SpringMVC是什么以及它的工作流程和核心组件介绍入门示例时提到了RequestMapping注解那么这篇文章就来介绍SpringMVC中更多的常用的注解以及它的参数传递。 一. SpringMVC常用注解
1.1 RequestParam
RequestParam主要用于将请求参数区域的数据映射到控制层方法的参数上可以指定参数名、是否必需、默认值等属性。
参数说明value请求中传入参数的名称如果不设置后台接口的value值则会默认为该变量名。required该参数是否为必传项。默认是true表示请求中一定要传入对应的参数否则会报404错误如果设置为false时当请求中没有此参数将会默认为null,而对于基本数据类型的变量则必须有值这时会抛出空指针异常。如果允许空值则接口中变量需要使用包装类来声明。defaultValue参数的默认值如果请求中没有同名的参数时该变量默认为此值。注意默认值可以使用SpEL表达式如#{systemProperties[‘java.vm.version’]} 1.2 RequestBody
RequestBody主要用来接收前端传递给后端的json字符串中的数据 (即请求体中的数据。
GET方式无请求体所以使用RequestBody接收数据时前端不能使用GET方式提交数据而是用POST方式进行提交。在后端的同一个接收方法里RequestBody与RequestParam()可以同时使用RequestBody最多只能有一个而RequestParam()可以有多个。
1.3 PathVariable
用于将URL中的占位符参数绑定到方法的参数上。
1.4 RequestHeader
使用 RequestHeader 注解可以获取指定的请求头信息。
二. SpringMVC的参数传递
日志所需依赖
log4j2.version2.9.1/log4j2.version
log4j2.disruptor.version3.2.0/log4j2.disruptor.version
slf4j.version1.7.13/slf4j.version!--4.log日志相关依赖--!-- log4j2日志相关依赖 --
!-- log配置Log4j2 Slf4j --
!-- slf4j核心包--
dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion${slf4j.version}/version
/dependency
dependencygroupIdorg.slf4j/groupIdartifactIdjcl-over-slf4j/artifactIdversion${slf4j.version}/versionscoperuntime/scope
/dependency!--核心log4j2jar包--
dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-api/artifactIdversion${log4j2.version}/version
/dependency
dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion${log4j2.version}/version
/dependency
!--用于与slf4j保持桥接--
dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-slf4j-impl/artifactIdversion${log4j2.version}/version
/dependency
!--web工程需要包含log4j-web非web工程不需要--
dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-web/artifactIdversion${log4j2.version}/versionscoperuntime/scope
/dependency!--需要使用log4j2的AsyncLogger需要包含disruptor--
dependencygroupIdcom.lmax/groupIdartifactIddisruptor/artifactIdversion${log4j2.disruptor.version}/version
/dependency2.1 基础类型传参可以接收String以及八大数据类型 RequestMapping(/demo01)public String index(String bname,Integer bid){log.info(基础传参:bname:{},bid:{},bname,bid);return index;}
2.2 复杂类型传参 RequestMapping(/demo02)public String demo02(Book book, HttpServletRequest request){
// servlet原生参数获取方式log.info(复杂类型传参:bname:{},bid:{},request.getParameter(bname),request.getParameter(bid));
// 复杂类型传参log.info(复杂类型传参:book:{},book.toString());return index;}
2.3 RequestParam注解传参
RequestMapping(/demo03)public String demo03(RequestParam String bname,RequestParam(required false) Integer bid){log.info(RequestParam传参:bname:{},bid:{},bname,bid);return index;} 注意这里bname的注解没有设置required值则默认为true是必填项否则会报404错误。 2.4 PathVariable注解传参
RequestMapping(/demo04/{bid})public String demo04(PathVariable Integer bid){log.info(PathVariable传参:bid:{},bid);return index;}
2.5 RequestBody注解传参
使用RequestBody注解传参时需要先导入pom依赖
jackson.version2.9.3/jackson.versiondependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion${jackson.version}/version/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion${jackson.version}/version/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-annotations/artifactIdversion${jackson.version}/version/dependency
RequestMapping(/demo05)public String demo05(RequestBody Map map){log.info(RequestBody传参:map:{},map);return index;} 注意要接收json数据前提要导入Jackson依赖没有导入Jackson依赖的话进不了这个方法 使用postman或者apipost/eolink等工具发送请求数据。 2.6 RequestHeader注解传参 RequestMapping(/demo06)public String demo06(RequestHeader(jwt) String jwt){log.info(RequestHeader传参:jwt:{},jwt);return index;} RequestMapping(/demo07)public String demo07(Book book, RequestBody Map map, RequestHeader(jwt) String jwt){log.info(book:book:{},book.toString());log.info(RequestBody:map:{},map);log.info(RequestHeader传参:jwt:{},jwt);return index;} 三. 页面跳转
转发forward:path和重定向redirect:path这两种跳转方式将会绕开视图解析器的前缀和后缀还有就是如果是在同一controller中,则不用使用/从根目录开始,而如果是在不同的controller则一定要从根目录开始。 path为请求处理方法名而非逻辑视图名。 转发地址栏不变
RequestMapping(/helloPage1)public String toHelloPage1(){log.info(helloPage1);return forward:demo02;} 它相当于“request.getRequestDispatcher(url).forward(request,response)”。使用转发既可以转发到jsp 也可以转发到其他的控制器方法。 重定向地址栏改变
RequestMapping(/helloPage2)public String toHelloPage2(){log.info(helloPage2);return redirect:demo02;} 它相当于“response.sendRedirect(url)”。需要注意的是如果重定向到jsp页面则jsp页面不能写在WEB-INF目录中否则无法找到。