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");
}