From 349cec722a16ecf4f65af0af1177648de199170b Mon Sep 17 00:00:00 2001 From: xiangwb Date: Tue, 21 Nov 2017 09:56:40 +0800 Subject: [PATCH] merge --- .../main/java/com/xwbing/util/ExcelUtil.java | 331 +++++++++--------- .../DispatcherServletConfig.java | 15 + .../xwbing/configuration/ServletConfig.java | 8 +- .../com/xwbing/handler/LoginInterceptor.java | 3 +- 4 files changed, 185 insertions(+), 172 deletions(-) diff --git a/boot-service/src/main/java/com/xwbing/util/ExcelUtil.java b/boot-service/src/main/java/com/xwbing/util/ExcelUtil.java index a0dbf91..0b71c4a 100644 --- a/boot-service/src/main/java/com/xwbing/util/ExcelUtil.java +++ b/boot-service/src/main/java/com/xwbing/util/ExcelUtil.java @@ -38,6 +38,172 @@ public class ExcelUtil { */ public final static String SEPARATOR = ";"; + /** + * 获取工作簿 + * + * @param title + * @param columns + * @param list + * @return + * @throws Exception + */ + public static HSSFWorkbook Export(String title, String[] columns, List list) throws Exception { + // 声明一个工作薄 + HSSFWorkbook wb = new HSSFWorkbook(); + // 声明一个单子并命名 + HSSFSheet sheet = wb.createSheet(title); + // 给单子名称一个长度 + sheet.setDefaultColumnWidth((short) 15); + // 生成一个样式 + HSSFCellStyle style = wb.createCellStyle(); + // 创建第一行(也可以称为表头) + HSSFRow row = sheet.createRow(0); + // 样式字体居中 + style.setAlignment(HSSFCellStyle.ALIGN_CENTER); + // 给表头第一行一次创建单元格 + if (null != columns && columns.length > 0) { + for (int i = 0; i < columns.length; i++) { + HSSFCell cell = row.createCell((int) i); + cell.setCellValue(columns[i]); + cell.setCellStyle(style); + } + } + if (CollectionUtils.isNotEmpty(list)) { + // 向单元格里填充数据 + for (int i = 0; i < list.size(); i++) { + row = sheet.createRow(i + 1); + assert columns != null; + for (int j = 0; j < columns.length; j++) { + row.createCell(j).setCellValue(list.get(i)[j]); + } + } + } + return wb; + } + + /** + * 将数据list转换成excel导出的形式 + * + * @param list + * @return + */ + public static List convert2List(List list) { + List result = new ArrayList<>(list.size()); + T obj4Class = list.get(0); + Class classOfT = obj4Class.getClass(); + Field[] declaredFields = classOfT.getDeclaredFields(); + String[] temp; + for (T obj : list) { + temp = new String[declaredFields.length]; + for (int i = 0; i < declaredFields.length; i++) { + String fieldName = declaredFields[i].getName(); + StringBuffer getMethodStr; + // 拼接get方法 + getMethodStr = new StringBuffer(); + getMethodStr.append("get"); + getMethodStr.append(fieldName.substring(0, 1).toUpperCase()); + getMethodStr.append(fieldName.substring(1)); + String value = ""; + Method getMethod; + try { + getMethod = classOfT.getMethod(getMethodStr.toString()); + } catch (NoSuchMethodException e1) { + System.out.println("NoSuchMethodException"); + continue; + } catch (SecurityException e1) { + System.out.println("SecurityException"); + continue; + } + // 执行get方法 + try { + value = String.valueOf(getMethod.invoke(obj, new Object[0])); + value = Objects.equals("null", value) ? null : value; + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + temp[i] = value; + } + result.add(temp); + } + return result; + } + + /** + * 将导入的excel文件生成类 + * + * @param file excel文件 + * @param sheetNum excel页签 + * @param classVO 要导出的类型 + * @return + */ + public static List getObjectFromExcel(File file, int sheetNum, Class classVO) { + List resultList = new ArrayList<>(); + T obj; + try { + // 获取解析结果:每行是一个String + // 格式:[Name;Sex;Email;NeedRePswd;Status;UserName;NickName;UnitId;Rank;Office, + // INPUT111;1.0;INPUT111@sss.com;0.0;1.0;INPUT111;INPUT111;asdfasdfasdfasdf;1.0, + // INPUT222;1.0;INPUT111@sss.com;0.0;1.0;INPUT111;INPUT111;asdfasdfasdfasdf;1.0] + List importObjects = exportListFromExcel(file, sheetNum); + if (CollectionUtils.isNotEmpty(importObjects)) { + // Class classVO = obj.getClass(); + Constructor cons[] = classVO.getConstructors(); + // 取出列名称用来设置set方法 + String colNames = importObjects.get(0); + // 解析列名 + String[] colName = colNames.split(";"); + String setMethodStr; + for (int i = 1; i < importObjects.size(); i++) { + // 解析数据 + String[] values = importObjects.get(i).split(SEPARATOR); + // 初始化对象 + try { + obj = (T) cons[0].newInstance(); + } catch (Exception e3) { + e3.printStackTrace(); + return null; + } + for (int j = 0; j < values.length; j++) { + // set方法名 + setMethodStr = "set" + colName[j]; + Method setMethod; + // 尝试调用set方法,因无法确定参数,尝试参数类型,目前只有String和Integer两种 + try { + setMethod = classVO.getMethod(setMethodStr, String.class); + setMethod.invoke(obj, String.valueOf(values[j])); + } catch (Exception e) { + try { + setMethod = classVO.getMethod(setMethodStr, Integer.class); + setMethod.invoke(obj, Double.valueOf(values[j]).intValue()); + } catch (Exception e1) { + // 目前没有bool值参数暂不添加 + // try + // { + // setMethod = + // classVO.getMethod(setMethodStr,Boolean.class); + // setMethod.invoke(obj, + // Boolean.valueOf(values[j])); + // } + // catch (Exception e3) + // { + // } + System.out.println("Exception" + e); + continue; + } + + } + } + resultList.add(obj); + } + } + + } catch (IOException e) { + e.printStackTrace(); + } + return resultList; + } + /** * 由Excel文件的Sheet导出至List * @@ -125,169 +291,4 @@ public class ExcelUtil { } return list; } - - /** - * 将导入的excel文件生成类 - * - * @param file excel文件 - * @param sheetNum excel页签 - * @param classVO 要导出的类型 - * @return - */ - public static List getObjectFromExcel(File file, int sheetNum, Class classVO) { - List resultList = new ArrayList<>(); - T obj; - try { - // 获取解析结果:每行是一个String - // 格式:[Name;Sex;Email;NeedRePswd;Status;UserName;NickName;UnitId;Rank;Office, - // INPUT111;1.0;INPUT111@sss.com;0.0;1.0;INPUT111;INPUT111;asdfasdfasdfasdf;1.0, - // INPUT222;1.0;INPUT111@sss.com;0.0;1.0;INPUT111;INPUT111;asdfasdfasdfasdf;1.0] - List importObjects = exportListFromExcel(file, sheetNum); - if (CollectionUtils.isNotEmpty(importObjects)) { - // Class classVO = obj.getClass(); - Constructor cons[] = classVO.getConstructors(); - // 取出列名称用来设置set方法 - String colNames = importObjects.get(0); - // 解析列名 - String[] colName = colNames.split(";"); - String setMethodStr; - for (int i = 1; i < importObjects.size(); i++) { - // 解析数据 - String[] values = importObjects.get(i).split(SEPARATOR); - // 初始化对象 - try { - obj = (T) cons[0].newInstance(); - } catch (Exception e3) { - e3.printStackTrace(); - return null; - } - for (int j = 0; j < values.length; j++) { - // set方法名 - setMethodStr = "set" + colName[j]; - Method setMethod; - // 尝试调用set方法,因无法确定参数,尝试参数类型,目前只有String和Integer两种 - try { - setMethod = classVO.getMethod(setMethodStr, String.class); - setMethod.invoke(obj, String.valueOf(values[j])); - } catch (Exception e) { - try { - setMethod = classVO.getMethod(setMethodStr, Integer.class); - setMethod.invoke(obj, Double.valueOf(values[j]).intValue()); - } catch (Exception e1) { - // 目前没有bool值参数暂不添加 - // try - // { - // setMethod = - // classVO.getMethod(setMethodStr,Boolean.class); - // setMethod.invoke(obj, - // Boolean.valueOf(values[j])); - // } - // catch (Exception e3) - // { - // } - System.out.println("Exception" + e); - continue; - } - - } - } - resultList.add(obj); - } - } - - } catch (IOException e) { - e.printStackTrace(); - } - return resultList; - } - - /** - * 获取工作簿 - * @param title - * @param columns - * @param list - * @return - * @throws Exception - */ - public static HSSFWorkbook Export(String title, String[] columns, List list) throws Exception { - // 声明一个工作薄 - HSSFWorkbook wb = new HSSFWorkbook(); - // 声明一个单子并命名 - HSSFSheet sheet = wb.createSheet(title); - // 给单子名称一个长度 - sheet.setDefaultColumnWidth((short) 15); - // 生成一个样式 - HSSFCellStyle style = wb.createCellStyle(); - // 创建第一行(也可以称为表头) - HSSFRow row = sheet.createRow(0); - // 样式字体居中 - style.setAlignment(HSSFCellStyle.ALIGN_CENTER); - // 给表头第一行一次创建单元格 - if (null != columns && columns.length > 0) { - for (int i = 0; i < columns.length; i++) { - HSSFCell cell = row.createCell((int) i); - cell.setCellValue(columns[i]); - cell.setCellStyle(style); - } - } - if (CollectionUtils.isNotEmpty(list)) { - // 向单元格里填充数据 - for (int i = 0; i < list.size(); i++) { - row = sheet.createRow(i + 1); - assert columns != null; - for (int j = 0; j < columns.length; j++) { - row.createCell(j).setCellValue(list.get(i)[j]); - } - } - } - return wb; - } - - /** - * 将数据list转换成excel导出的形式 - * - * @param list - * @return - */ - public static List convert2List(List list) { - List result = new ArrayList<>(list.size()); - T obj4Class = list.get(0); - Class classOfT = obj4Class.getClass(); - Field[] declaredFields = classOfT.getDeclaredFields(); - String[] temp; - for (T obj : list) { - temp = new String[declaredFields.length]; - for (int i = 0; i < declaredFields.length; i++) { - String fieldName = declaredFields[i].getName(); - StringBuffer getMethodStr; - // 拼接get方法 - getMethodStr = new StringBuffer(); - getMethodStr.append("get"); - getMethodStr.append(fieldName.substring(0, 1).toUpperCase()); - getMethodStr.append(fieldName.substring(1)); - String value = ""; - Method getMethod; - try { - getMethod = classOfT.getMethod(getMethodStr.toString()); - } catch (NoSuchMethodException e1) { - System.out.println("NoSuchMethodException"); - continue; - } catch (SecurityException e1) { - System.out.println("SecurityException"); - continue; - } - // 执行get方法 - try { - value = String.valueOf(getMethod.invoke(obj, new Object[0])); - value = Objects.equals("null", value) ? null : value; - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - temp[i] = value; - } - result.add(temp); - } - return result; - } } diff --git a/boot-web/src/main/java/com/xwbing/configuration/DispatcherServletConfig.java b/boot-web/src/main/java/com/xwbing/configuration/DispatcherServletConfig.java index ac4f542..16eda56 100644 --- a/boot-web/src/main/java/com/xwbing/configuration/DispatcherServletConfig.java +++ b/boot-web/src/main/java/com/xwbing/configuration/DispatcherServletConfig.java @@ -4,10 +4,12 @@ import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import com.xwbing.handler.LoginInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import java.util.ArrayList; @@ -56,6 +58,19 @@ public class DispatcherServletConfig extends WebMvcConfigurerAdapter { super.addResourceHandlers(registry); } + /** + * 视图配置 + * + * @param registry + */ + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/").setViewName("login.html"); + //添加更多 + registry.setOrder(Ordered.HIGHEST_PRECEDENCE); + super.addViewControllers(registry); + } + /** * 扩展消息转换器,增加fastjson * diff --git a/boot-web/src/main/java/com/xwbing/configuration/ServletConfig.java b/boot-web/src/main/java/com/xwbing/configuration/ServletConfig.java index 698014c..451f270 100644 --- a/boot-web/src/main/java/com/xwbing/configuration/ServletConfig.java +++ b/boot-web/src/main/java/com/xwbing/configuration/ServletConfig.java @@ -18,13 +18,9 @@ public class ServletConfig { private final Logger logger = LoggerFactory.getLogger(ServletConfig.class); @Bean - public CaptchaServlet captchaServlet() { - return new CaptchaServlet(); - } - - @Bean - public ServletRegistrationBean captchaServletRegistrationBean(CaptchaServlet captchaServlet) { + public ServletRegistrationBean captchaServletRegistrationBean() { logger.info("注册验证码servlet ======================= "); + CaptchaServlet captchaServlet = new CaptchaServlet(); ServletRegistrationBean registration = new ServletRegistrationBean(captchaServlet); registration.setEnabled(true); registration.addUrlMappings("/servlet/captcha"); diff --git a/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java b/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java index c354513..6ca4e49 100644 --- a/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java +++ b/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java @@ -26,6 +26,8 @@ public class LoginInterceptor extends HandlerInterceptorAdapter { private static final Set set = new HashSet<>();//拦截器白名单 static { + //映射到登录页面,不拦截 + set.add("/"); //验证码 set.add("/servlet/captcha"); //swagger @@ -33,7 +35,6 @@ public class LoginInterceptor extends HandlerInterceptorAdapter { set.add("/swagger-resources"); set.add("/configuration/ui"); set.add("/configuration/security"); - // } @Override