Http协议之获取自定义文件Head信息(2)

上一篇写到将http请求的head解析出来,本篇将对我写的具体的业务记录,供参考。

//如果有测试环境,例如上篇讲到的DHC
request.getSession().setAttribute("eccp_uid", request.getHeader("eccp_uid"));
request.getSession().setAttribute("eccp_prov", request.getHeader("eccp_prov"));
request.getSession().setAttribute("eccp_chn", request.getHeader("eccp_chn")); 

//测试,直接将参数值存储在session中
request.getSession().setAttribute("eccp_uid", "linying");
request.getSession().setAttribute("eccp_prov", "100");
request.getSession().setAttribute("eccp_chn", "app"); 

ok,session中已经有了我存储的信息,那么在页面中如何使用的,我是在后端写了一个.do的请求,其实在jsp中直接可以使用“request.getSession().getAttribute(“参数名称”)”直接获取,我写在后端的原因是为了其他地方方便调用,上代码:

    /****
     * seesion中获取相关信息再返回
     * @param request
     * @param response
     * @return
     * @throws ServletException
     * @throws IOException
     */
    @RequestMapping(value = "/getSessionInfos.do", method = RequestMethod.GET)
    public @ResponseBody String getSessionInfos(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String str_session = null;
        String eccp_uid = null;
        String eccp_prov = null;
        String eccp_chn = null;

        //判断是否从session中获取到值,   ***表示为全部,即“没有”
        if (request.getSession().getAttribute("eccp_uid") == null) {
            eccp_uid = "***";
        } else {
            eccp_uid = (String) request.getSession().getAttribute("eccp_uid");
        }
        if (request.getSession().getAttribute("eccp_prov") == null) {
            eccp_prov = "***";
        } else {
            eccp_prov=(String) request.getSession().getAttribute("eccp_prov");
        }
        if (request.getSession().getAttribute("eccp_chn") == null) {
            eccp_chn = "***";
        } else {
            eccp_chn=(String) request.getSession().getAttribute("eccp_chn");
        }
        str_session = "{eccp_uid:'" + eccp_uid + "',eccp_prov:'" + eccp_prov
                + "',eccp_chn:'" + eccp_chn + "'}";
        return str_session;

ok ,上述代码已经可以将session中信息返回给调用者,那前端如何接收和请求的呢,上代码:

//具体的业务代码,调用getSessionInfos获取返回值
     function getSession(){
        var js_obj=getSessionInfos("../../../");
        var js_pro;
        if(js_obj!=null){
            if(js_obj.eccp_prov=="***"){
                //document.getElementById('user_id').innerHTML ="未登录"
                 $("#province_id").val("全部");
                 js_pro="全部"
            }else{
                js_pro=js_obj.eccp_prov
                $("#province_id").attr("disabled","disabled");
                 //$("#province_id").val(js_obj.eccp_prov);
                //document.getElementById('user_id').innerHTML =js_obj.eccp_uid;    
            }   
        }else{
             js_pro="全部"
        }
        return js_pro;

    };

//定义变量
var resultJson;
var eccp_uid = '';//用户id
var eccp_prov = '';//省份
var eccp_chn = '';//渠道
// 获取session中的用户信息 ,公共方法
function getSessionInfos(url) {
    $.ajax({
        type : "GET",
        url : url + "http_request/getSessionInfos.do",
        cache : false,
        async : false,
        // dataType: ,
        success : function(xmlobj) {
            var obj = eval("(" + xmlobj + ")");
            resultJson = eval("(" + obj + ")");

            eccp_uid = resultJson.eccp_uid;
            eccp_prov = resultJson.eccp_prov;
            eccp_chn = resultJson.eccp_chn;
            // alert(resultJson.eccp_prov);
            console.log("用户id:" + eccp_uid + "省份:" + eccp_prov + "渠道:"
                    + eccp_chn);
        }

    });
    return resultJson;
}

getSessionInfos方法我是放在公共文件里面了,在任何地方调用都可以直接返回,比如,a.html, b.html, c.html 只要传入不同的路径即可。

ok,我具体的业务就是这些,毕竟代码仅供参考,不同业务会特立而行,如果有问题及时私信我,有问题也请及时指出,谢谢!

你可能感兴趣的:(Http)