1. 程式人生 > >3將前臺傳來的引數 封裝成map,後臺接受

3將前臺傳來的引數 封裝成map,後臺接受

package com.air.front.web.controller;


import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import com.air.common.pojo.user.contents.Consts;
import com.air.common.pojo.user.utils.IpUtils;
import com.air.common.pojo.user.utils.NumberUtils;
import com.alibaba.fastjson.JSONObject;


/**
 *
 * 功能描述: 接收引數
 * @author DHY
 * @Date 2018年6月2日
 */
@Component
public class BaseController {

    protected final static Logger logger = LoggerFactory.getLogger(BaseController.class);

	public String getNo(){
		String  NO= 	NumberUtils.getInstance().getOrderSn();
		return NO;
	}
	
	public static void main(String[] args) {
		String orderSn = NumberUtils.getInstance().getOrderSn();
		System.out.print(orderSn+"=======sss");
	}

    public HttpServletRequest getRequest() {
		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
		return request;
	}

	public String getIpAddress()throws Exception{
		return IpUtils.getIpAddr(this.getRequest());
	}

    @SuppressWarnings("unchecked")
	public  Map<String, Object>  getParams() {
		HttpServletRequest request = getRequest();
		Map properties = request.getParameterMap();
		Object data = request.getAttribute(Consts.TOKEN_DATA);
		Map returnMap = new HashMap<String, Object>();
		Iterator entries = properties.entrySet().iterator();
		Map.Entry entry;
		String name = "";
		String value = "";
		while (entries.hasNext()) {
			entry = (Map.Entry) entries.next();
			name = (String) entry.getKey();
			Object valueObj = entry.getValue();
			if (null == valueObj) {
				value = "";
			} else if (valueObj instanceof String[]) {
				String[] values = (String[]) valueObj;
				for (int i = 0; i < values.length; i++) {
					value = values[i] + ",";
				}
				value = value.substring(0, value.length() - 1);
			} else {
				value = valueObj.toString();
			}
			returnMap.put(name, value);
		}
		logger.info(request.getServletPath()+"介面訪問引數:"+JSONObject.toJSONString(returnMap));
		returnMap.put(Consts.TOKEN_DATA,data);
		return returnMap;
	}
}

 

使用方法: 

 public Object appUserLogin(){

        try {
            Map<String, Object> params = this.getParams();
            params.put("ip",getIpAddress());
            Map loginMap = userClient.appUserLogin(params);
            return loginMap;
        }catch (Exception e){
            logger.error("登陸失敗!",e);
            return ResultUtil.repError("登陸失敗!");
        }
    }

 

=============================================================

或者不用,直接用@requestBody, @RequestParam 

 public Object UserInfo( @RequestParam(value = "userNo")String userNo) {

        try {
            Map userMap = userClient.getUserInfo(userNo);
            return userMap;
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("獲取失敗!",e);
        }

 

 

==========================================================================

1重定向和請求轉發的區別

 

2servlet 寵寫doGet()方法

3 servlet和springmvc的區別

Servlet:效能最好,處理Http請求的標準。

SpringMVC:開發效率高(好多共性的東西都封裝好了,是對Servlet的封裝,核心的DispatcherServlet最終繼承自HttpServlet)

這兩者的關係,就如同MyBatis和JDBC,一個性能好,一個開發效率高,是對另一個的封裝。

 

(jsp的本質 是Servlet。我們訪問一個jsp,並不是jsp直接執行的結果。而是伺服器軟體先把jsp翻譯成Servlet,執行的是Servlet 的程式碼。 當我們第一次訪問一個jsp的時候,伺服器會把jsp檔案翻譯成java檔案(Servlet),然後編譯成class檔案,最後執行的是這 個class檔案。)

=============================================================

springmvc 的傳遞的引數

1 現在的註解 都對httpservletrequest進行了封裝 比如 現在直接使用requestparam  body等 ,

2 public Object order(HttpServletRequest request, HttpServletResponse response, 
            @ModelAttribute OrderPo order)

HttpServletRequest request,HttpServletResponse response什麼時候用到,比如,最常用到的  就是上傳檔案,傳遞位元組流的時候  需要用到,或者從表頭取東西等
=====================================================================

兩行解決跨域問題

public Object order(HttpServletRequest request, HttpServletResponse response, 
            @ModelAttribute OrderPo order){


            response.setHeader("Access-Control-Allow-Origin", "*");

            response.setHeader("Access-Control-Allow-Method", "POST,GET");

}