Created
June 24, 2014 01:38
-
-
Save luowei/2610942b1695f62e65f6 to your computer and use it in GitHub Desktop.
为了防止忘记的一堆“垃圾代码”,拦截器的使用,Excel视图通用类,Excel读取,自定义用户缓存
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.xxxxx.price.bean; | |
import org.apache.log4j.Logger; | |
import org.apache.poi.hssf.usermodel.HSSFRow; | |
import org.apache.poi.hssf.usermodel.HSSFSheet; | |
import org.apache.poi.hssf.usermodel.HSSFWorkbook; | |
import org.springframework.web.servlet.view.document.AbstractExcelView; | |
import javax.servlet.http.HttpServletRequest; | |
import javax.servlet.http.HttpServletResponse; | |
import java.lang.reflect.Field; | |
import java.lang.reflect.Method; | |
import java.util.ArrayList; | |
import java.util.List; | |
import java.util.Map; | |
import static java.lang.System.arraycopy; | |
import static java.net.URLEncoder.encode; | |
/** | |
* Created with IntelliJ IDEA. | |
* User: luowei | |
* Date: 12-12-21 | |
* Time: 下午5:30 | |
* To change this template use File | Settings | File Templates. | |
*/ | |
public class CommonExcelView<T> extends AbstractExcelView { | |
Logger logger = Logger.getLogger(CommonExcelView.class); | |
private String excelName; | |
private Map<String,SheetData<T>> sheetMap; | |
private Class<?> clazz; | |
public CommonExcelView() { | |
} | |
/** | |
* 表格名字,表格数据 | |
* @param excelName | |
* @param sheetMap | |
*/ | |
public CommonExcelView(String excelName, Map<String, SheetData<T>> sheetMap) { | |
this(excelName, sheetMap, null); | |
} | |
public CommonExcelView(String excelName, Map<String, SheetData<T>> sheetMap, Class<?> clazz) { | |
this.excelName = excelName; | |
this.sheetMap = sheetMap; | |
this.clazz = clazz; | |
} | |
@Override | |
protected void buildExcelDocument(Map<String, Object> model, | |
HSSFWorkbook workbook, | |
HttpServletRequest request, | |
HttpServletResponse response) throws Exception { | |
if (excelName == null || excelName.equals("") | |
|| sheetMap == null || sheetMap==null || sheetMap.isEmpty() ) | |
return; | |
// 设置response方式,使执行此controller时候自动出现下载页面,而非直接使用excel打开 | |
response.setContentType("APPLICATION/OCTET-STREAM"); | |
response.setHeader("Content-Disposition", "attachment; filename=" + encode(excelName, "UTF-8")); | |
for(Map.Entry<String,SheetData<T>> entry:sheetMap.entrySet()){ | |
HSSFSheet sheet = workbook.createSheet(entry.getKey()); | |
createSheet(sheet,entry.getValue()); | |
} | |
} | |
/** | |
* 创建工作表 | |
* @param sheet | |
*/ | |
private void createSheet(HSSFSheet sheet,SheetData<T> sheetData) { | |
List<T> list = sheetData.getList(); | |
List<ExlBean> exlBeanList = sheetData.getExlBeanList(); | |
// 产生Excel表头,导出的excel表头开始行,0表示从表头放在第一行,1表示放在第二行 | |
int headIdx = 0; | |
HSSFRow header = sheet.createRow(headIdx); | |
for (int idx = 0; idx < exlBeanList.size(); idx++) { | |
header.createCell(idx).setCellValue(exlBeanList.get(idx).column); | |
} | |
//填充数据 | |
int dataRowIdx = headIdx + 1; | |
for (int idx = 0; idx < list.size(); idx++, dataRowIdx++) { | |
T element = list.get(idx); | |
HSSFRow row = sheet.createRow(dataRowIdx); | |
for (int clmIdx = 0; clmIdx < exlBeanList.size(); clmIdx++) { | |
String field = exlBeanList.get(clmIdx).field; | |
String value = getFieldValue(element, clazz, field); | |
if(field.equals("display")){ | |
value = value.equals("1")?"是":"否"; | |
} | |
row.createCell(clmIdx).setCellValue(value); | |
} | |
} | |
} | |
private String getFieldValue(T element, Class<?> clazz, String field) { | |
if (clazz == null) { | |
clazz = element.getClass(); | |
} | |
Field[] selfFields = clazz.getDeclaredFields(); | |
Field[] superFields = clazz.getSuperclass().getDeclaredFields(); | |
Field[] fields = new Field[selfFields.length + superFields.length]; | |
arraycopy(selfFields, 0, fields, 0, selfFields.length); | |
arraycopy(superFields, 0, fields, selfFields.length, superFields.length); | |
for (Field field1 : fields) { | |
if (field1.getName().equals(field)) { | |
String methodName = "get" + field.substring(0, 1).toUpperCase() + field.substring(1); | |
try { | |
Method getMothed = clazz.getMethod(methodName); | |
String value = String.valueOf(getMothed.invoke(element)); | |
return "null".equals(value) ? "" : value; | |
} catch (Exception e) { | |
logger.error(e.getMessage(), e); | |
throw new RuntimeException(e); | |
} | |
} | |
} | |
return null; | |
} | |
public Map<String, SheetData<T>> getSheetMap() { | |
return sheetMap; | |
} | |
public void setSheetMap(Map<String, SheetData<T>> sheetMap) { | |
this.sheetMap = sheetMap; | |
} | |
public String getExcelName() { | |
return excelName; | |
} | |
public CommonExcelView setExcelName(String excelName) { | |
this.excelName = excelName; | |
return this; | |
} | |
public Class<?> getClazz() { | |
return clazz; | |
} | |
public CommonExcelView setClazz(Class<?> clazz) { | |
this.clazz = clazz; | |
return this; | |
} | |
public static class SheetData<T>{ | |
List<T> list = new ArrayList<T>(); | |
List<ExlBean> exlBeanList; | |
public SheetData() { | |
} | |
public SheetData(List<T> list, List<ExlBean> exlBeanList) { | |
this.list = list; | |
this.exlBeanList = exlBeanList; | |
} | |
public List<T> getList() { | |
return list; | |
} | |
public void setList(List<T> list) { | |
this.list = list; | |
} | |
public List<ExlBean> getExlBeanList() { | |
return exlBeanList; | |
} | |
public void setExlBeanList(List<ExlBean> exlBeanList) { | |
this.exlBeanList = exlBeanList; | |
} | |
} | |
public static class ExlBean { | |
String column; | |
String field; | |
public ExlBean() { | |
} | |
public ExlBean(String column, String field) { | |
this.column = column; | |
this.field = field; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.xxxxx.price.bean; | |
import java.util.HashMap; | |
import java.util.Map; | |
import org.apache.poi.ss.usermodel.Sheet; | |
import org.apache.poi.ss.usermodel.Workbook; | |
public class ReadExcel { | |
public static Map<String, Map<String, Integer>> readDmPriceExcel( | |
Workbook book) { | |
Map<String, Map<String, Integer>> list = new HashMap<String, Map<String, Integer>>(); | |
// 获得第一个表的工作对象,“0”表示第一个表 | |
Sheet sheet = book.getSheetAt(0); | |
int rows = sheet.getLastRowNum(); | |
for (int i = 1; i <= rows; i++) { | |
String ganglianId = subZeroAndDot(sheet.getRow(i).getCell(0) | |
.toString()); | |
String productId = subZeroAndDot(sheet.getRow(i).getCell(1) | |
.toString()); | |
String toganglian = ""; | |
if (null != sheet.getRow(i).getCell(8)) { | |
toganglian = subZeroAndDot(sheet.getRow(i).getCell(8) | |
.toString()); | |
} | |
Map<String, Integer> record = new HashMap<String, Integer>(); | |
if ((null != productId && !"".equals(productId)) | |
&& (null != ganglianId && !"".equals(ganglianId))) { | |
try { | |
Integer.valueOf(ganglianId); | |
} catch (Exception ex) { | |
continue; | |
} | |
if (null == toganglian || "".equals(toganglian)) { | |
toganglian = "-1"; | |
} else if ("是".equals(toganglian)) { | |
toganglian = "1"; | |
} else if ("否".equals(toganglian)) { | |
toganglian = "0"; | |
} else if ("1".equals(toganglian)) { | |
toganglian = "1"; | |
} else if ("0".equals(toganglian)) { | |
toganglian = "0"; | |
} else { | |
toganglian = "-1"; | |
} | |
int toganglianz = Integer.valueOf(toganglian); | |
record.put(ganglianId, toganglianz); | |
list.put(productId, record); | |
} | |
} | |
return list; | |
} | |
public static Map<String, Map<String, Integer>> readDmOilPriceExcel( | |
Workbook book) { | |
Map<String, Map<String, Integer>> list = new HashMap<String, Map<String, Integer>>(); | |
// 获得第一个表的工作对象,“0”表示第一个表 | |
Sheet sheet = book.getSheetAt(0); | |
int rows = sheet.getLastRowNum(); | |
for (int i = 1; i <= rows; i++) { | |
String ganglianId = subZeroAndDot(sheet.getRow(i).getCell(0) | |
.toString()); | |
String productId = subZeroAndDot(sheet.getRow(i).getCell(1) | |
.toString()); | |
String toganglian = ""; | |
if (null != sheet.getRow(i).getCell(7)) { | |
toganglian = subZeroAndDot(sheet.getRow(i).getCell(7) | |
.toString()); | |
} | |
Map<String, Integer> record = new HashMap<String, Integer>(); | |
if ((null != productId && !"".equals(productId)) | |
&& (null != ganglianId && !"".equals(ganglianId))) { | |
try { | |
Integer.valueOf(ganglianId); | |
} catch (Exception ex) { | |
continue; | |
} | |
if (null == toganglian || "".equals(toganglian)) { | |
toganglian = "-1"; | |
} else if ("是".equals(toganglian)) { | |
toganglian = "1"; | |
} else if ("否".equals(toganglian)) { | |
toganglian = "0"; | |
} else if ("1".equals(toganglian)) { | |
toganglian = "1"; | |
} else if ("0".equals(toganglian)) { | |
toganglian = "0"; | |
} else { | |
toganglian = "-1"; | |
} | |
int toganglianz = Integer.valueOf(toganglian); | |
record.put(ganglianId, toganglianz); | |
list.put(productId, record); | |
} | |
} | |
return list; | |
} | |
public static Map<String, Map<String, Integer>> readInteralPriceExcel( | |
Workbook book) { | |
Map<String, Map<String, Integer>> list = new HashMap<String, Map<String, Integer>>(); | |
// 获得第一个表的工作对象,“0”表示第一个表 | |
Sheet sheet = book.getSheetAt(0); | |
int rows = sheet.getLastRowNum(); | |
for (int i = 1; i <= rows; i++) { | |
String ganglianId = subZeroAndDot(sheet.getRow(i).getCell(0) | |
.toString()); | |
String productId = subZeroAndDot(sheet.getRow(i).getCell(1) | |
.toString()); | |
String toganglian = ""; | |
if (null != sheet.getRow(i).getCell(8)) { | |
toganglian = subZeroAndDot(sheet.getRow(i).getCell(8) | |
.toString()); | |
} | |
Map<String, Integer> record = new HashMap<String, Integer>(); | |
if ((null != productId && !"".equals(productId)) | |
&& (null != ganglianId && !"".equals(ganglianId))) { | |
try { | |
Integer.valueOf(ganglianId); | |
} catch (Exception ex) { | |
continue; | |
} | |
if (null == toganglian || "".equals(toganglian)) { | |
toganglian = "-1"; | |
} else if ("是".equals(toganglian)) { | |
toganglian = "1"; | |
} else if ("否".equals(toganglian)) { | |
toganglian = "0"; | |
} else if ("1".equals(toganglian)) { | |
toganglian = "1"; | |
} else if ("0".equals(toganglian)) { | |
toganglian = "0"; | |
} else { | |
toganglian = "-1"; | |
} | |
int toganglianz = Integer.valueOf(toganglian); | |
record.put(ganglianId, toganglianz); | |
list.put(productId, record); | |
} | |
} | |
return list; | |
} | |
public static Map<String, Map<String, Integer>> readDEPriceExcel( | |
Workbook book) { | |
Map<String, Map<String, Integer>> list = new HashMap<String, Map<String, Integer>>(); | |
// 获得第一个表的工作对象,“0”表示第一个表 | |
Sheet sheet = book.getSheetAt(0); | |
int rows = sheet.getLastRowNum(); | |
for (int i = 1; i <= rows; i++) { | |
String ganglianId = subZeroAndDot(sheet.getRow(i).getCell(0) | |
.toString()); | |
String productId = subZeroAndDot(sheet.getRow(i).getCell(1) | |
.toString()); | |
String toganglian = ""; | |
if (null != sheet.getRow(i).getCell(8)) { | |
toganglian = subZeroAndDot(sheet.getRow(i).getCell(8) | |
.toString()); | |
} | |
Map<String, Integer> record = new HashMap<String, Integer>(); | |
if ((null != productId && !"".equals(productId)) | |
&& (null != ganglianId && !"".equals(ganglianId))) { | |
try { | |
Integer.valueOf(ganglianId); | |
} catch (Exception ex) { | |
continue; | |
} | |
if (null == toganglian || "".equals(toganglian)) { | |
toganglian = "-1"; | |
} else if ("是".equals(toganglian)) { | |
toganglian = "1"; | |
} else if ("否".equals(toganglian)) { | |
toganglian = "0"; | |
} else if ("1".equals(toganglian)) { | |
toganglian = "1"; | |
} else if ("0".equals(toganglian)) { | |
toganglian = "0"; | |
} else { | |
toganglian = "-1"; | |
} | |
int toganglianz = Integer.valueOf(toganglian); | |
record.put(ganglianId, toganglianz); | |
list.put(productId, record); | |
} | |
} | |
return list; | |
} | |
// 判断是否有数字或者小数点 | |
public static String isNumOrDount(String str) { | |
String temp = ""; | |
char[] q = str.toCharArray(); | |
for (int i = 0; i < q.length; i++) { | |
if (q[i] == '.' || q[i] == '0' || q[i] == '1' || q[i] == '2' | |
|| q[i] == '3' || q[i] == '4' || q[i] == '5' || q[i] == '6' | |
|| q[i] == '7' || q[i] == '8' || q[i] == '9') { | |
temp = temp + q[i]; | |
} else { | |
} | |
} | |
return temp; | |
} | |
public static String subZeroAndDot(String s) { | |
if (s.indexOf(".") > 0) { | |
s = s.replaceAll("0+?$", "");// 去掉多余的0 | |
s = s.replaceAll("[.]$", "");// 如最后一位是.则去掉 | |
} | |
return s; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.xxxxx.price.bean; | |
import org.apache.commons.dbcp.BasicDataSource; | |
import org.springframework.jdbc.core.JdbcTemplate; | |
import org.springframework.jdbc.core.RowMapper; | |
import org.springframework.web.context.ContextLoader; | |
import javax.servlet.*; | |
import javax.servlet.http.HttpServletRequest; | |
import java.sql.ResultSet; | |
import java.sql.SQLException; | |
import java.util.HashMap; | |
import java.util.List; | |
import java.util.Map; | |
import static org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext; | |
/** | |
* Created with IntelliJ IDEA. | |
* User: luowei | |
* Date: 13-3-6 | |
* Time: 下午2:58 | |
* To change this template use File | Settings | File Templates. | |
*/ | |
public class UserCache implements Filter { | |
public static Map<Integer, UidName> userIdMap; | |
@Override | |
public void init(FilterConfig filterConfig) throws ServletException { | |
System.out.println("************** usercache init ********************"); | |
} | |
@Override | |
public synchronized void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, | |
FilterChain filterChain) { | |
try { | |
String sql = " select lz_Staff_id,lz_Staff_LoginName,lz_Staff_RealName,lz_staff_pricedays from lz_Staff "; | |
JdbcTemplate jdbcTemplate = new JdbcTemplate(BasicDataSource.class.cast(getCurrentWebApplicationContext().getBean("ds"))); | |
List<UidName> uidNameList = jdbcTemplate.query(sql, new RowMapper<UidName>() { | |
@Override | |
public UidName mapRow(ResultSet rs, int i) throws SQLException { | |
return new UidName( | |
rs.getInt("lz_Staff_id"), | |
rs.getString("lz_Staff_LoginName"), | |
rs.getString("lz_Staff_RealName"), | |
rs.getInt("lz_staff_pricedays") | |
); | |
} | |
}); | |
userIdMap = new HashMap<Integer, UidName>(1000); | |
for (UidName user : uidNameList) { | |
userIdMap.put(user.getAdminId(), user); | |
} | |
filterChain.doFilter(servletRequest, servletResponse); | |
System.out.println("################# user's (id,user) map size :" + userIdMap.size() + " #################"); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
} | |
@Override | |
public void destroy() { | |
} | |
public static class UidName { | |
private int adminId; | |
private String userName; | |
private String realName; | |
//可编辑历史数据的权限时间,0表示无修改此日期的数据权限,其它值表示有 | |
private int rightsDays; | |
public UidName() { | |
} | |
public UidName(int adminId, String userName, String realName, int rightsDays) { | |
this.adminId = adminId; | |
this.userName = userName; | |
this.realName = realName; | |
this.rightsDays = rightsDays; | |
} | |
public int getAdminId() { | |
return adminId; | |
} | |
public void setAdminId(int adminId) { | |
this.adminId = adminId; | |
} | |
public String getUserName() { | |
return userName; | |
} | |
public void setUserName(String userName) { | |
this.userName = userName; | |
} | |
public String getRealName() { | |
return realName; | |
} | |
public void setRealName(String realName) { | |
this.realName = realName; | |
} | |
public int getRightsDays() { | |
return rightsDays; | |
} | |
public void setRightsDays(int rightsDays) { | |
this.rightsDays = rightsDays; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.xxxxx.price.interceptor; | |
import oilchem.dataConnectPool.DBConn; | |
import org.apache.commons.logging.Log; | |
import org.apache.commons.logging.LogFactory; | |
import org.springframework.web.servlet.ModelAndView; | |
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; | |
import javax.servlet.http.Cookie; | |
import javax.servlet.http.HttpServletRequest; | |
import javax.servlet.http.HttpServletResponse; | |
import java.sql.Connection; | |
import java.sql.ResultSet; | |
import java.sql.SQLException; | |
import java.sql.Statement; | |
import java.util.HashMap; | |
import java.util.Map; | |
import java.util.Random; | |
/** | |
* Created with IntelliJ IDEA. | |
* User: luowei | |
* Date: 13-4-12 | |
* Time: 上午9:50 | |
* To change this template use File | Settings | File Templates. | |
*/ | |
public class UserInterceptor extends HandlerInterceptorAdapter { | |
private static Log log = LogFactory.getLog(UserInterceptor.class); | |
public UserInterceptor() { | |
super(); | |
} | |
@Override | |
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { | |
String requestUrl = request.getRequestURI(); | |
//验证用户登录 | |
//取session中的staff | |
Map staff = (Map) request.getSession().getAttribute("staff"); | |
//验证cookie | |
if(staff == null){ | |
String staffId = null; | |
String loginName = ""; | |
String tmpPwd = ""; | |
Cookie myCookie[] = request.getCookies(); | |
for(Cookie cookie:myCookie){ | |
if (cookie.getName().equals("cStaffId")) { // 判断元素的值是否为cStaffId中的值 | |
staffId = TransactSQLInjection(cookie.getValue()); | |
} | |
if (cookie.getName().equals("cTmpPwd")) { // 判断元素的值是否为cTmpPwd中的值 | |
tmpPwd = TransactSQLInjection(cookie.getValue()); | |
} | |
if (cookie.getName().equals("cLoginName")) { // 判断元素的值是否为cLoginName中的值 | |
loginName = cookie.getValue(); | |
} | |
} | |
if (staffTmpPwdLogin(staffId, tmpPwd)) { | |
Map map = new HashMap(); | |
Map popedom = queryStaffPopedomById(staffId); // 根据ID取员工权限 | |
Object obj = popedom.get("menu"); // 取菜单权限字符串 | |
String menuStr = ""; | |
if (obj != null) { | |
menuStr = obj.toString(); | |
menuStr = menuStr.substring(1, menuStr.length() - 1); | |
} | |
map.put("staffId", staffId); | |
map.put("menuStr", menuStr); | |
map.put("loginName", loginName); | |
request.getSession().setAttribute("staff", map); // 将菜单权限字符串写到session | |
String randStr = makeStr(); // 生成随机密码 | |
updateTmpPwd(staffId, randStr); // 将临时密码写入数据库 | |
/** 写cookie操作 start* */ | |
Cookie cStaffId = new Cookie("cStaffId", staffId); // 创建员工IDCookie | |
Cookie cLoginName = new Cookie("cLoginName", loginName); // 创建员工登录名Cookie | |
Cookie cTmpPwd = new Cookie("cTmpPwd", randStr); // 创建临时密码Cookie | |
/* | |
* cStaffId.setMaxAge(24*60*60); | |
* cLoginName.setMaxAge(24*60*60); | |
* cTmpPwd.setMaxAge(24*60*60); | |
*/ | |
cStaffId.setPath("/"); // 设置COOKIE路径 | |
cLoginName.setPath("/"); | |
cTmpPwd.setPath("/"); | |
response.addCookie(cStaffId); // 写COOKIE到硬盘 | |
response.addCookie(cLoginName); | |
response.addCookie(cTmpPwd); | |
return true; | |
} | |
} | |
Integer adminId = Integer.valueOf(staff.get("staffId").toString()); | |
// action对应的菜单ID | |
String menuIds = queryMenuIdByURL(requestUrl); | |
String menuStr = (String) staff.get("menuStr"); | |
//验证菜单权限 | |
if (menuStr == null || isNoRight(menuIds, menuStr)) { | |
//redirect到没有权限访问页面 | |
return false; | |
} | |
return super.preHandle(request, response, handler); | |
} | |
@Override | |
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { | |
String requestUrl = request.getRequestURI(); | |
Map staff = (Map) request.getSession().getAttribute("staff"); | |
Integer staffId = Integer.valueOf(staff.get("staffId").toString()); | |
//写日志,异步进行 | |
// 得到浏览器信息 | |
String browser = request.getHeader("User-Agent"); | |
//ip信息 | |
String ip = request.getRemoteAddr(); | |
// action对应的菜单ID | |
String menuIds = queryMenuIdByURL(requestUrl); | |
String menuStr = (String) staff.get("menuStr"); | |
//验证菜单权限 | |
if (menuStr == null || isNoRight(menuIds, menuStr)) { | |
//redirect到没有权限访问页面 | |
return; | |
} | |
String parameter = request.getQueryString(); | |
String titleTemp = oilchem.utils.DataFile.getString(requestUrl); | |
String qq_url_parameters = requestUrl + reloadParameter(parameter); | |
// 从概要从得到操作类型 | |
String actionType = getActionType(titleTemp); | |
insertUserLog(staff.get("loginName").toString(), titleTemp, | |
actionType, qq_url_parameters, ip); | |
} | |
// 根据url反查询菜单ID | |
private String queryMenuIdByURL(String url) throws SQLException { | |
Connection conection = null; | |
Statement stmt = null; | |
ResultSet rs = null; | |
// Map map=new HashMap(); | |
StringBuffer sbf = new StringBuffer(); | |
try { | |
conection = DBConn.getConnection(); | |
stmt = conection.createStatement(); | |
StringBuffer sql = new StringBuffer( | |
"select * from lz_Menus where menuProgram like '%|"); | |
sql.append(url); | |
sql.append("|%'"); | |
rs = stmt.executeQuery(sql.toString()); | |
while (rs.next()) { | |
// map.put("menuId", rs.getString("menuId")); | |
sbf.append(rs.getString("menuId") + ","); | |
} | |
log.debug(sbf.toString()); | |
return sbf.toString(); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
return null; | |
} finally { | |
rs.close(); | |
stmt.close(); | |
conection.close(); | |
} | |
} | |
// 判断是否有菜单权限 | |
private boolean isNoRight(String menuIds, String menuStr) { | |
String[] array = menuIds.split(","); | |
for (int i = 0; i < array.length; i++) { | |
if (menuStr.indexOf("," + array[i] + ",") > -1) { | |
return false; | |
} | |
} | |
return true; | |
} | |
// 替换SQL注入字符 | |
private static String TransactSQLInjection(String str) { | |
return str.replaceAll(".*([';]+|(--)+).*", " "); | |
} | |
// 临时密码登录 | |
private boolean staffTmpPwdLogin(String staffId, String tmpPwd) | |
throws SQLException { | |
Connection conection = null; | |
Statement stmt = null; | |
ResultSet rs = null; | |
try { | |
conection = DBConn.getConnection(); | |
stmt = conection.createStatement(); | |
StringBuffer sql = new StringBuffer( | |
" select * from Lz_Staff where lz_Staff_Id='"); | |
sql.append(staffId); | |
sql.append("'"); | |
sql.append(" and lz_Staff_TmpPwd ='"); | |
sql.append(tmpPwd); | |
sql.append("'"); | |
rs = stmt.executeQuery(sql.toString()); | |
if (rs.next()) { | |
log.debug("临时密码登录:" + tmpPwd); | |
return true; | |
} | |
} catch (Exception e) { | |
e.printStackTrace(); | |
return false; | |
} finally { | |
rs.close(); | |
stmt.close(); | |
conection.close(); | |
} | |
return false; | |
} | |
// 根据ID查询权限 | |
public Map queryStaffPopedomById(String staffId) throws SQLException { | |
Connection conection = null; | |
Statement stmt = null; | |
ResultSet rs = null; | |
Map map = new HashMap(); | |
try { | |
conection = DBConn.getConnection(); | |
stmt = conection.createStatement(); | |
StringBuffer sql = new StringBuffer( | |
"select * from Vlz_Staff_MenuAuth where lz_Staff_id='"); | |
sql.append(staffId); | |
sql.append("'"); | |
rs = stmt.executeQuery(sql.toString()); | |
if (rs.next()) { | |
String menuStr = rs.getString("menuAuth"); | |
log.debug(menuStr); | |
map.put("menu", menuStr); | |
} | |
return map; | |
} catch (Exception e) { | |
e.printStackTrace(); | |
return null; | |
} finally { | |
rs.close(); | |
stmt.close(); | |
conection.close(); | |
} | |
} | |
// 生成16位随机临时密码 | |
public String makeStr() { | |
String radStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; | |
StringBuffer generateRandStr = new StringBuffer(); | |
Random rand = new Random(); | |
int length = 16; | |
for (int i = 0; i < length; i++) { | |
int randNum = rand.nextInt(36); | |
generateRandStr.append(radStr.substring(randNum, randNum + 1)); | |
} | |
return generateRandStr + ""; | |
} | |
// 更新临时密码 | |
public boolean updateTmpPwd(String staffId, String tmpPwd) | |
throws SQLException { | |
Connection conection = null; | |
Statement stmt = null; | |
boolean result; | |
try { | |
conection = DBConn.getConnection(); | |
stmt = conection.createStatement(); | |
StringBuffer sql = new StringBuffer( | |
"update Lz_Staff set lz_staff_tmpPwd='"); | |
sql.append(tmpPwd); | |
sql.append("' where lz_Staff_Id='"); | |
sql.append(staffId); | |
sql.append("'"); | |
result = stmt.execute(sql.toString()); | |
return result; | |
} catch (Exception e) { | |
e.printStackTrace(); | |
return false; | |
} finally { | |
stmt.close(); | |
conection.close(); | |
} | |
} | |
// 把用户操作插入数据库 | |
public boolean insertUserLog(String username, String title, | |
String actionType, String url, String ip) throws SQLException { | |
Connection conection = null; | |
Statement stmt = null; | |
boolean result; | |
try { | |
conection = DBConn.getConnection(); | |
stmt = conection.createStatement(); | |
StringBuffer sql = new StringBuffer( | |
"insert into lz_useraction_log(actionTime,actionTitle,actionType,actionUrl,actionIP,username,qianOrHou) "); | |
sql.append("values("); | |
sql.append("getDate(),'"); | |
sql.append(title); | |
sql.append("','"); | |
sql.append(actionType); | |
sql.append("','"); | |
sql.append(url); | |
sql.append("','"); | |
sql.append(ip); | |
sql.append("','"); | |
sql.append(username); | |
sql.append("','false' "); | |
sql.append(" ) "); | |
result = stmt.execute(sql.toString()); | |
return result; | |
} catch (Exception e) { | |
e.printStackTrace(); | |
return false; | |
} finally { | |
stmt.close(); | |
conection.close(); | |
} | |
} | |
// 给参数处理一下, | |
public String reloadParameter(String parameter) { | |
if (parameter == null) { | |
return ""; | |
} | |
String temp = parameter.substring(0, 1); | |
if (temp.equals("&")) { | |
parameter = parameter.substring(1, parameter.length()); | |
} | |
return parameter; | |
} | |
// 得到操作类型 | |
public String getActionType(String titleTemp) { | |
String actionType = ""; | |
// 从概要得到操作类型 | |
if (titleTemp.indexOf("查看") >= 0) { | |
actionType = "查看"; | |
} else if (titleTemp.indexOf("搜索") >= 0) { | |
actionType = "搜索"; | |
} else if (titleTemp.indexOf("下载") >= 0) { | |
actionType = "下载"; | |
} else if (titleTemp.indexOf("退出") >= 0) { | |
actionType = "退出"; | |
} else if (titleTemp.indexOf("删除") >= 0) { | |
actionType = "删除"; | |
} else if (titleTemp.indexOf("修改") >= 0) { | |
actionType = "修改"; | |
} else if (titleTemp.indexOf("新增") >= 0) { | |
actionType = "新增"; | |
} else if (titleTemp.indexOf("导入") >= 0) { | |
actionType = "导入"; | |
} else if (titleTemp.indexOf("导出") >= 0) { | |
actionType = "导出"; | |
} else { | |
actionType = "其他"; | |
} | |
return actionType; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment