篇二:公共部分整合(Controller、Service、Dao)

  导读:公共的Controller封装常用方法,获取IP、请求路径、请求参数、校验非空

     BaseService:参考数据库

     BaseDao:参考数据库

一、BaseController

package com.web.controller.common;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.util.string.StringUtil;

/**
 * 公共的控制层类
 * @author liuguangping
 *
 */
public class BaseController {
    private static HttpServletRequest request;
   private static HttpSession session;
/** * 通过注解获取请求的Request,解决跨域获取不到Request问题 */
   @ModelAttribute
   private void setParamter(HttpServletRequest request)
   {
    BaseController.request = request;
   }

   /**
  * 获取当前request
  * @return
    */ public HttpServletRequest getRequest(){
     //存在跨域风险,会获取不到Request //
return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
     return request; }
/** * 获取当前请求的session * @return */ public HttpSession getSession(){ //return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getSession();
return BaseController.request.getSession(); }
/** * 获取当前的项目路径 * 项目在服务器上的发布路径--d:/tomcat/webapp/... * @return */ public String getBasePath() { return ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/"); } /** * 获取请求的路径 * path:/mobile/fashion/Rank * @return */ public String getRequestPath() { // return getRequest().getRequestURI(); return getRequest().getServletPath(); } /** * 获取请求的完整路径 * ip:port/project/path : http://localhost:8080/mobile/fashion/Rank * @return */ public String getRequestTotalPath() { return getRequest().getRequestURL().toString(); } /** * 获取请求的项目路径 * project :/guduo-mobile * @return */ public String getProjectPath() { return getRequest().getContextPath(); } /** * 获取请求的参数值 * @param request * @param attr * @return */ public String getSrting(String attr){ if(StringUtil.isNotEmpty(attr)){ return (String) getRequest().getAttribute(attr); } return ""; } /** * 获取所有的请求参数名 * @param request * @return */ public List<String> getParameterNames(HttpServletRequest request){ List<String> names = new ArrayList<String>(); while (request.getParameterNames().hasMoreElements()) { String name = (String)request.getParameterNames().nextElement(); names.add(name); } return names; } /** * 获取请求的IP地址 * @return */ public String getIpAddr() { HttpServletRequest req = getRequest(); String ipAddress = null; ipAddress = req.getHeader("x-forwarded-for"); if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = req.getHeader("Proxy-Client-IP"); } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = req.getHeader("WL-Proxy-Client-IP"); } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = req.getRemoteAddr(); if (ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")) { // 根据网卡取本机配置的IP InetAddress inet = null; try { inet = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } ipAddress = inet.getHostAddress(); } } // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 if (ipAddress != null && ipAddress.length() > 15) { if (ipAddress.indexOf(",") > 0) { ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); } } return ipAddress; } /** * 校验请求参数不为空 * @param params:不为空的参数集合 * @return */ public boolean checkBlank(String[] params) { for(String param:params){ if(StringUtil.isEmpty(getSrting(param))){ return false; } } return true; } }

 

posted @ 2016-10-08 14:38  刘广平  阅读(1117)  评论(0)    收藏  举报