篇二:公共部分整合(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; } }

浙公网安备 33010602011771号