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能否同时使用?)