文档章节

万能java后台参数获取技术 name=xiaohei&age=18&name=yj

泉天下
 泉天下
发布于 2017/07/21 16:13
字数 233
阅读 2
收藏 0

  通用方法 

  /**
     * 取得参数串,形如name=xiaohei&age=18
     * @param request
     * @return
     */
    public String getParamValuesStr(HttpServletRequest request){
        StringBuilder sb = new StringBuilder();
        Enumeration<String> parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()) {
            String name = (String) parameterNames.nextElement();
            sb.append(name).append("=").append(request.getParameter(name));
            if(parameterNames.hasMoreElements()){
                sb.append("&");
            }
        }
        return sb.toString();
    }

 @RequestMapping(value="index.html", method = { RequestMethod.POST, RequestMethod.GET })
    public String index(HttpServletRequest request, HttpServletResponse response, ModelMap model){
       
        //微信返回的openid
        String oid = request.getParameter("oid");
        //用户所传的需要跳转的url
        String forward = request.getParameter("forward");
        //用户所携带的参数
        String params = getParamValuesStr(request);
        if(StringUtils.isNoneBlank(oid) && StringUtils.isNoneBlank(forward)){
            log.info("--------通用方法获取到的oid:"+oid);
            log.info("--------需要跳转的页面:"+forward);
            
            return "redirect:/"+forward+"?"+params;
        }
        
        String userAgent = request.getHeader("user-agent").toLowerCase();
        if (userAgent.indexOf("micromessenger") > -1) {
            // 重定向去获取oid的值
            String state =  "";
            if(StringUtils.isNotBlank(params)){
                state = user_name_openId + "#" + params;
            }else{
                state = user_name_openId;
            }
            try {
                state = URLEncoder.encode(state, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            String weixinUrl = GET_OPENID_URLPATH + "&state=" + state + "#wechat_redirect";
            log.info("微信跳转连接--->"+weixinUrl);
            return "redirect:"+weixinUrl;
        }
        
        if(StringUtils.isNoneBlank(forward)){
            return "redirect:/"+forward+"?"+params;
        }else{
            model.addAttribute("msg", "亲请传入forward参数作为跳转页面的依据哦!");
            return WebSite.getWebAppTemplate("generalweChatcallback/error");
        }
    }

© 著作权归作者所有

共有 人打赏支持
泉天下
粉丝 1
博文 63
码字总数 37091
作品 0
广州
私信 提问
Java多线程可以分组,还能这样玩!

前面的文章,栈长和大家分享过多线程创建的3种方式《实现 Java 多线程的 3 种方式》。 但如果线程很多的情况下,你知道如何对它们进行分组吗? 和 Dubbo 的服务分组一样,Java 可以对相同性质...

Java技术栈
2018/11/09
0
0
Java基础之反射(非常重要)

反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道...

Java-老刘
2018/05/15
0
0
JAVA使用字节流将本地图片传到前端

JAVA使用字节流将本地图片传到前端 01.基本介绍 在我们日常的开发中,会遇到对验证码的使用问题(验证码的作用这里不多多说,避免程序被恶意攻击等),如何是的前端和后端保持一致是一个问题...

meiqi0538
2018/04/09
0
0
Spring Boot 配置加载顺序详解

使用 Spring Boot 会涉及到各种各样的配置,如开发、测试、线上就至少 3 套配置信息了。Spring Boot 可以轻松的帮助我们使用相同的代码就能使开发、测试、线上环境使用不同的配置。 在 Spri...

Java技术栈
2018/08/27
0
0
PHP监控后台程序 生成进度条

// 这里的页面采用ajax轮询的方式 php获取java生成进度条文件。 //后台处理采用java 生成进度条文件。 后台监控如下: 启用了3个线程 几乎把服务器给榨干了。 [root@localhost wcms]# ps -e...

大灰狼wow
2014/04/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux下端口转发工具rinetd介绍

linux下简单好用的工具rinetd,实现端口映射/转发/重定向,针对TCP协议,不支持UDP。 官网地址 http://www.boutell.com/rinetd 里面介绍及使用齐全。 使用场景举例: 阿里云内网Redis连接问题...

ouhoo
9分钟前
0
0
Oracle学习日志-5(算数运算符,比较运算符和逻辑运算符)

因为有编程基础,所以对于这一章还是很好理解,只需要注意对NULL的运算。 操作的表格 算数运算符 查询商品名字和商品售价,并商品售价乘2 SELECT product_name,sale_price * 2 AS "sale_pri...

白话
21分钟前
0
0
搜索引擎(Lucene介绍、分词器详解)

Lucene介绍 Lucene简介 最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简...

这很耳东先生
26分钟前
0
0
quartz详细介绍

quartz常用api Scheduler 调度程序交互的主要API。 Job 希望由调度程序执行的组件实现的接口。 JobDetail 用于定义作业的实例。 JobDataMap 可以包含不限量的序列化数据,在job运行的时候可以...

大笨象会跳舞吧
26分钟前
0
0
kotlin使用jackson序列化enum

默认情况下,我们序列化与反序列化enum是它的name,事实上大部分情况下我们需要序列化的是我们自定义的value,那应该怎么做呢? 这种情况下我们就需要@JsonValue与@JsonCreator data class U...

weidedong
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部