springmvc 能否通过代码获取到请求是post还是get?还有action配置的请求方式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springmvc 能否通过代码获取到请求是post还是get?还有action配置的请求方式?相关的知识,希望对你有一定的参考价值。

spring 跟struts2一样,只要是参数跟javaben设置的一样,无论是post,还是get都能获取到参数。
//添加操作
@RequestMapping("/add")//跳转路径
public String addAccount(HttpServletRequest req)
Account acc = new Account();
acc.setName(req.getParameter("name"));//获取表单参数方法
System.out.println(req.getParameter("pwd"));
acc.setPwd(req.getParameter("pwd"));
as.save(acc);
//as.addAccount(acc);
req.setAttribute("key", "success");
return "hzjw";//跳转路径

简化之后就是这样
@RequestMapping("/add")//跳转路径
public String addAccount(HttpServletRequest req, Account acc)
as.save(acc);
//as.addAccount(acc);
req.setAttribute("key", "success");
return "hzjw";
参考技术A request.getMethod();本回答被提问者采纳

如何获取SpringMVC应用中的所有映射信息

我们知道,一般的SpringMVC应用都是采用RequestMappingHandlerMapping通过RequestMapping完成URL与方法映射。RequestMappingHandlerMapping是保存在容器中的。那么如果我们想获取相关信息,可以从容器中获取RequestMappingHandlerMapping从而得到相关信息。
如下代码展示了:
首先定义JavaBean来保存需要获取的信息

static class MappingInfo
        private Class<?> className; //类
        private Method method;//方法
        private List<String> httpMethods;//http方法,同一个接口可以通过GET/POST访问
        private List<String> classRequestMappings;//class定义的映射
        private List<String> requestMappings;//具体的每个映射,不包含context-path,但是包含类上的

然后从容器中获取RequestMappingHandlerMapping,当然容器你可以通过ApplicationContextAware注入或者@Autowired注入

RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
        // 获取url与类和方法的对应信息
        Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods();

        List<MappingInfo> list = new ArrayList<>(map.size());

        for (Map.Entry<RequestMappingInfo, HandlerMethod> m : map.entrySet()) 
            MappingInfo mappingInfo = new MappingInfo();
            RequestMappingInfo info = m.getKey();
            HandlerMethod handlerMethod = m.getValue();
            //获取当前方法所在类名
            Class<?> bean = handlerMethod.getBeanType();
            //使用反射获取当前类注解内容
            RequestMapping requestMapping = bean.getAnnotation(RequestMapping.class);
            if(null != requestMapping)
                String[] value = (String[]) AnnotationUtils.getAnnotationAttributes(requestMapping).get("value");
                mappingInfo.setClassRequestMappings(Arrays.asList(value));
            
            //获取方法上注解以及注解值

            PatternsRequestCondition p = info.getPatternsCondition();
            List<String> urls = new ArrayList<>();
            urls.addAll(p.getPatterns());
            mappingInfo.setRequestMappings(urls);

            mappingInfo.setClassName(handlerMethod.getMethod().getDeclaringClass());
            mappingInfo.setMethod(handlerMethod.getMethod());
            RequestMethodsRequestCondition methodsCondition = info.getMethodsCondition();

            List<String> httpMethods = new ArrayList<>();
            methodsCondition.getMethods().forEach(requestMethod -> httpMethods.add(requestMethod.toString()));
            mappingInfo.setHttpMethods(httpMethods);

            list.add(mappingInfo);
        

        System.out.println(JSON.toJSONString(list));

以上是关于springmvc 能否通过代码获取到请求是post还是get?还有action配置的请求方式?的主要内容,如果未能解决你的问题,请参考以下文章

springmvc使用ajax进行数据交互时,session失效问题(@ResponseBody与session能否同时使用?)

struts2和springmvc区别?

springmvc拦截器

SpringMVC-处理AJAX

SpringMVC— “SpringMVC获取请求参数的方法”

SpringMVC— “SpringMVC获取请求参数的方法”