工具类封装之--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 ...
随机推荐
- numpy(一)
np.zeros(10,dtype=int) #创建全为0的一位数组 np.ones((3,5),dtype=float) #创建3*5的二维全为1的数组 np.full((3,5),3.14) #创 ...
- 使用tortoisegit工具git地址中带号码密码的拉取,以及使用这种方式后中途重置密码报git remote: HTTP Basic: Access denied 错误解决办法
1. 在拉取git项目时可以在地址中直接指定号码密码如下就可以直接拉取下来 https://username:password@github.com 需要注意,因为在解析地址时是以@符号作为地址信 ...
- java实现控件的移动及使用鼠标改变控件大小
package cn.com.test; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; ...
- Python selenium根据class定位页面元素
在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写id属性.通常一段html代码如下: <div cl ...
- os.path.dirname使用方法
import os path1=os.path.abspath(__file__) print(path1)#当前文件的绝对路径 path2=os.path.dirname(os.path.abspa ...
- cocos creator 重写源码按钮Button点击音频封装
(function(){ var Super = function(){}; Super.prototype = cc.Button.prototype; //实例化原型 Super.prototyp ...
- 移除Excel工作表密码保护小工具含C#源代码
有朋友发了个Excel.xlsx文件给我,让我帮忙看看里面是怎么做出来的.打开审阅后发现,每个Excel工作表都添加了密码保护: 看不到里面的隐藏列和公式等等,感觉很神秘.于是研究了一下Excel文件 ...
- 纯JS.CSS编写的可拖拽并左右分栏的插件(复制代码就能用)
<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equ ...
- 转-->>mysql的bin log
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日 ...
- Spring Boot:快速入门
上一篇讲述什么是Spring Boot,这一篇讲解怎么使用IDE工具快速搭建起来独立项目. 一.构建方式 快速搭建项目有三种方式,官方也有答案给到我们: 二.构建前准备 想要使用IDE运行起来自己的S ...