工具类封装之--BaseController
package cn.xxx.base; import cn.xxx.gecustomer.beans.GeCustomer; import cn.xxx.gecustomer.beans.GeCustomerProperty; import cn.xxx.utils.UserPersonalConstant; import cn.xxx.utils.WebUtil; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.support.ApplicationObjectSupport; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.support.RequestContext; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.util.List; import java.util.UUID; /** * 所有controller的基类 * * @author * */ public abstract class BaseController extends ApplicationObjectSupport { public Logger log = LoggerFactory.getLogger(this.getClass()); @Value("${project.version}") public String ver; /** * 要跳转的页面 * * @Title: go * @Description: TODO * @param path * @return * @author 2017年9月15日 下午1:51:10 */ protected ModelAndView go(String path) { return new ModelAndView(path); } /** * 到bean信息 * * @param name * @return */ protected Object getObject(String name) { return this.getApplicationContext().getBean(name); } /** * 获取登录用户信息 * * @return */ public IUserInfo getUserSessionVo() { Subject subject = SecurityUtils.getSubject(); Object obj = null;//subject.getSession().getAttribute(UserAuthenticationRealm.LOGIN_SESSION_ATTR); if (obj instanceof IUserInfo) { return (IUserInfo) obj; } return null; } public String getOrganCode() { return (String) this.getSession().getAttribute(WebUtil.ORGAN_CODE); } public HttpServletRequest getRequest() { return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); } public HttpSession getSession() { return getRequest().getSession(); } public HttpServletResponse getResponse() { return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); } /** * 获取国际化信息 * * @param key * @return */ public String getI18nMsg(String key) throws Exception { // 从后台代码获取国际化信息 String value = new RequestContext(this.getRequest()).getMessage(key); return value != null ? value : ""; } /** * 返回国际化国家标识串 * * @return * @throws Exception */ public String getI18nCountry() throws Exception { String lc = null; RequestContext requestContext = new RequestContext(this.getRequest()); String language = requestContext.getLocale().getLanguage(); String country = requestContext.getLocale().getCountry(); if (country == null || "".equals(country)) { if ("zh".equals(language)) { country = "CN"; } else if ("en".equals(language)) { country = "US"; } } // logger.debug("本地国际化语言:" + language + "本地国际化国家:" + country); lc = "_" + language + (StringUtils.isEmpty(country) ? "" : "_" + country); return lc; } /** * 请求方式判断 * * @param request * @return */ public boolean isAjaxRequest(HttpServletRequest request) { if (!(request.getHeader("accept").indexOf("application/json") > -1 || (request.getHeader("X-Requested-With") != null && request.getHeader("X-Requested-With").indexOf("XMLHttpRequest") > -1) || "XMLHttpRequest".equalsIgnoreCase(request.getParameter("X_REQUESTED_WITH")))) { return false; } return true; } /** * 保存信息到request中 * * @param key * @param value */ public void setRequestAttribute(String key, Object value) { this.getRequest().setAttribute(key, value); } protected String getCookie(String cookieName) { Cookie[] cookies = getRequest().getCookies(); for (Cookie cookie : cookies) { if (cookieName.equals(cookie.getName())) { return cookie.getValue(); } } return null; } /** * 设置 cookie * * @param cookieName * @param value * @param age */ protected void setCookie(String cookieName, String value, int age) { Cookie cookie = new Cookie(cookieName, value); cookie.setMaxAge(age); // cookie.setHttpOnly(true); getResponse().addCookie(cookie); } /** * 返回成功信息对象 * * @return */ public ReturnInfoVo<Object> getReturnSuccessVo() throws Exception { return new ReturnInfoVo<Object>(true, this.getI18nMsg(Constants.COMMON_SUCCESS_MSG_KEY)); } /** * 解析返回信息,处理国际化部分 * * @param riv * @return */ public <T> ReturnInfoVo<T> returnInfoVoParser(ReturnInfoVo<T> riv) { try { List<ReturnInfoVo<T>.MsgVo> msgList = riv.getMsgList(); if (!msgList.isEmpty()) { StringBuilder sb = new StringBuilder(); ReturnInfoVo<T>.MsgVo msg; String info; for (int i = 0; i < msgList.size(); i++) { msg = msgList.get(i); if (Constants.NEEDI18N) { info = this.getI18nMsg(msg.getMsg()); } else { info = msg.getMsg(); } if (msg.getParams() != null && msg.getParams().length > 0) { info = String.format(info, msg.getParams()); } sb.append(info); sb.append(";"); if (i != msgList.size() - 1) { sb.append("\r\n"); } } riv.setMsg(sb.toString()); } else { if (riv.isSuccess()) { riv.setMsg(this.getI18nMsg(Constants.COMMON_SUCCESS_MSG_KEY)); } else { riv.setMsg(this.getI18nMsg(Constants.COMMON_FAILED_MSG_KEY)); } } } catch (Exception e) { logger.error("解析返回信息对象失败", e); } return riv; } /** * 方法名称: render<br> * 描述:返回给浏览器 */ public void render(String text, String contentType){ HttpServletResponse response; try{ response = getResponse(); response.setContentType(contentType); response.getWriter().write(text); response.getWriter().flush(); } catch (IOException e) { throw new IllegalStateException(e); } } /** * 方法名称: renderText<br> * 描述:返回普通文本浏览器 */ public void renderText(String text){ render(text, "text/plain;charset=UTF-8"); } /** * 方法名称: renderJson<br> * 描述:返回JSON格式数据 */ public void renderJson(String text){ render(text,"text/json;charset=UTF-8"); } /** * 方法名称: getCurrentLoginGeCustomer<br> * 描述:获取当前登录用户<br> * 保全、登录 * 作者: <br> * 修改日期:2014-9-30下午07:06:26<br> */ protected GeCustomer getCurrentLoginGeCustomer() { Object obj = this.getRequest().getSession().getAttribute(UserPersonalConstant.LOGIN_USER); if (obj instanceof GeCustomer) { return (GeCustomer) obj; } else { return null; } } /** * 方法名称: getCurrentLoginGeCustomerProperty<br> * 描述:获取当前登录用户属性信息<br> * 作者: <br> * 修改日期:2014-9-30下午07:06:26<br> */ protected GeCustomerProperty getCurrentLoginGeCustomerProperty() { Object obj = this.getRequest().getSession().getAttribute(UserPersonalConstant.LOGIN_USER_PROPERTY); if (obj instanceof GeCustomerProperty) { return (GeCustomerProperty) obj; } else { return null; } } /** * 获取农银在线登录用户 <br/> * Date: 2017年6月8日 下午4:51:55 * 绑定、产品、支付 * @author * @param * @return */ protected GeCustomer getOnlineCurrentLoginGeCustomer() { Object obj = this.getRequest().getSession().getAttribute(UserPersonalConstant.ONLINE_LOGIN_USER); if (obj instanceof GeCustomer) { return (GeCustomer) obj; } else { return null; } } /** * 方法名称:initCurrentLoginGeCustomer<br> * 描述:存放登录用户信息<br> * 作者:<br> * 修改日期:2014年8月18日下午7:57:07<br> */ protected void initCurrentLoginGeCustomer() { Object obj = this.getRequest().getSession().getAttribute(UserPersonalConstant.LOGIN_USER); if (obj != null && obj instanceof GeCustomer) { // 有登陆用户,带登陆信息到填写投保信息页 this.setRequestAttribute("geCustomer", (GeCustomer) obj); } } /** * 方法名称: getUUID<br> * 描述:获得唯一标识(目前用于验证表单提交唯一性)<br> * 作者: <br> * 修改日期:2014年10月13日上午3:15:24<br> */ protected String getUUID() { return UUID.randomUUID().toString(); } }
工具类封装之--BaseController的更多相关文章
- Redis操作Set工具类封装,Java Redis Set命令封装
Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...
- Redis操作List工具类封装,Java Redis List命令封装
Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...
- Redis操作Hash工具类封装,Redis工具类封装
Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- (转载) 百度地图工具类封装(包括定位,附近、城市、范围poi检索,反地理编码)
目录视图 摘要视图 订阅 赠书 | 异步2周年,技术图书免费选 程序员8月书讯 项目管理+代码托管+文档协作,开发更流畅 百度地图工具类封装(包括定位,附近.城市.范围poi检索, ...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战
笔记 4.Redis工具类封装讲解和实战 简介:高效开发方式 Redis工具类封装讲解和实战 1.常用客户端 https://redisdesktop.com/download ...
- flink---实时项目--day02-----1. 解析参数工具类 2. Flink工具类封装 3. 日志采集架构图 4. 测流输出 5. 将kafka中数据写入HDFS 6 KafkaProducer的使用 7 练习
1. 解析参数工具类(ParameterTool) 该类提供了从不同数据源读取和解析程序参数的简单实用方法,其解析args时,只能支持单只参数. 用来解析main方法传入参数的工具类 public c ...
- 关于TornadoFx和Android的全局配置工具类封装实现及思路解析
原文地址: 关于TornadoFx和Android的全局配置工具类封装实现及思路解析 - Stars-One的杂货小窝 目前个人开发软件存在设置页面,可以让用户自定义些设置,但我发现,存储数据的代码逻 ...
- Android Sqlite 工具类封装
鉴于经常使用 Sqlite 数据库做数据持久化处理,进行了一点封装,方便使用. 该封装类主要支持一下功能 支持多用户数据储存 支持 Sqlite数据库升级 支持传入 Sql 语句建表 支持 SQLit ...
随机推荐
- 建立live555海思编码推流服务
因项目需要,这一周弄了一下live555.需求:海思编码——>RTSP server,使用VLC可以访问,类似于网络摄像机的需求.看了一下,live555的架构太复杂了,半桶水的C++水平还真的 ...
- 19.C# 泛型
1.泛型的概念 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型.泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用. 2. .net提供的泛型 2.1可空 ...
- HDFS之HA
HDFS高可用环境HA的架构 HDFS组件由一个对外提供服务的namenode(存储元数据)和N个datanode组成:Zookeeper有三个作用:1.为了统一配置文件 config 2.多个节点的 ...
- wangEditor编辑器 Vue基本配置项
wangEditor编辑器 Vue基本配置项 1.Vue安装方法 npm i wangeditor -S <template> <div id='wangeditor'> &l ...
- 快速学习C语言途径,让你少走弯路
1.标准C语言能干什么? 坦白讲,在今天软件已经发展了半个多世纪,单纯的C语言什么都干不了.标准C语言库只提供了一些通用的逻辑运算方法以及字符串处理,当然字符串在C语言看来也是一种操作内存的方法,所以 ...
- nginx解决跨域
location ~* \.(eot|ttf|woff|woff2|svg)$ { add_header Access-Control-Allow-Origin *; add_header Acces ...
- 解决postman环境切换,自动获取api签名时间及签名
postman调试api接口时,常遇到两个问题: 1.环境分为开发环境,测试环境,正式环境,如何只写一个接口,通过切换postman环境来实现不同环境的接口调用? 2. api接口请求时往往会添加,来 ...
- SQL update select
SQL update select语句 最常用的update语法是: UPDATE TABLE_NAME SET column_name1 = VALUE WHRER column_name2 = V ...
- WebDriver实现网页自动化测试(以python为例说明,ruby用法类似)
什么是Webdriver? Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的 ...
- laravel 核心类Kernel
vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php.是laravel处理网络请求的最核心类,在app容器准备好了之后, ...