zoukankan      html  css  js  c++  java
  • java 常用工具类

    1.SqlSessionUtil连接数据库

    package untity;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    /**
     * @description SqlSessionFactory 工厂构建,获取SqlSession对象
     * @auther: CDHONG.IT
     * @date: 2019/10/18-9:46
     **/
    public class SqlSessionUtil {
    
        private static SqlSessionFactory sqlSessionFactory;
    
        static{
            try {
                InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession();
        }
    
    
        public static void main(String[] args) {
            System.out.println(SqlSessionUtil.getSqlSession());
        }
    
    
    }
    mybatis-config.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <properties resource="jdbc.properties" />
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="${driver}"/>
                    <property name="url" value="${url}"/>
                    <property name="username" value="${user}"/>
                    <property name="password" value="${pwd}"/>
                </dataSource>
            </environment>
        </environments>
    
        <mappers>
    
            <mapper resource="StudentMapper.xml" />
            <mapper resource="mappers/AddInvitation.xml"/>
            <mapper resource="mappers/Invitation.xml"/>
            <mapper resource="mappers/Reply.xml"/>
            <mapper resource="mapper/MemberMapper.xml"/>
            <mapper resource="mapper/MemberReply.xml"/>
            <mapper resource="mapper/AdminMapper.xml"/>
            <mapper resource="mapper/UserMapper.xml"/>
    
            <mapper resource="mappers/LoginMapper.xml" />
            <mapper resource="mappers/RegisterMapper.xml" />
            <mapper resource="mappers/RretrievePwd.xml" />
    
        </mappers>
    </configuration>

    依赖
    <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.1</version>
            </dependency>
    jdbc.properties
    driver=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://127.0.0.1:3306/fly_db?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false&zeroDateTimeBehavior=convertToNull
    user=root
    pwd=123

    插件依赖

    <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.17</version>
            </dependency>

    2.GsonUtil json数据工具

    package untity;
    
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.google.gson.JsonPrimitive;
    import com.google.gson.JsonSerializer;
    
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    /**
     * @description
     * @auther: CDHONG.IT
     * @date: 2019/10/18-14:31
     **/
    public class GsonUtil {
        private static Gson gson = new GsonBuilder()
                .registerTypeAdapter(LocalDate.class, (JsonSerializer<LocalDate>) (localDate, type, jsonSerializationContext) -> new JsonPrimitive(localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))))
                .registerTypeAdapter(LocalDateTime.class, (JsonSerializer<LocalDateTime>) (localDateTime, type, jsonSerializationContext) ->  new JsonPrimitive(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))))
                .create();
    
        public static String toJson(Object object){
            return gson.toJson(object);
        }
    
        public static <T> T fromJson(String json,Class<T> clazz){
            return gson.fromJson(json,clazz);
        }
    
    
    }
    ResponseEntity 类
    package entity;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    /**
     * @description
     * @auther: Lily
     * @date: 2019/10/17-10:57
     **/
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class ResponseEntity {
        private int code;
        private String msg;
        private Long count;
        private Object data;
    
        public static ResponseEntity isAdim(Object obj){
            return new   ResponseEntity(2,null,null,obj);
        }
        public static ResponseEntity ok(){
            return new ResponseEntity(0,null,null,null);
        }
        public static ResponseEntity ok(String msg){
            return new ResponseEntity(0,msg,null,null);
        }
        public static ResponseEntity error(String msg){
            return new ResponseEntity(1,msg,null,null);
        }
    
        public static ResponseEntity data(Object obj){
            return new ResponseEntity(0,null,null,obj);
        }
    
        public static ResponseEntity page(long count,Object obj){
            return new ResponseEntity(0,null,count,obj);
        }
    
        public static boolean isSuccess(ResponseEntity responseEntity){
            return responseEntity.getCode() == 2;
        }
        public static boolean isSucce(ResponseEntity responseEntity){
            return responseEntity.getCode() == 0;
        }
    
    }

    依赖

    <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.5</version>
            </dependency>

    3、BaseServlet类

    package web;
    
    
    
    import entity.ResponseEntity;
    import untity.GsonUtil;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.Objects;
    
    /**
     * @description
     * @auther: Lily
     * @date: 2019/10/17-10:55
     **/
    public class BaseServlet extends HttpServlet {
    
        protected HttpServletRequest request;
        protected HttpServletResponse response;
        protected HttpSession session;
        protected final String REDIRECT = "redirect:";
    
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            request = req;
            response = resp;
            session = req.getSession();
            //student/add   ,  student/add?name=aa
            String uri = req.getRequestURI();
            //StringBuffer url = req.getRequestURL();
            //System.out.println(uri);
            //System.out.println(url);
            //通过请求地址获取到对应的方法名称
            String methodName = uri.substring(uri.lastIndexOf("/") + 1);
            try {
                //使用反射获取指定方法名称的方法对象  Class
                Class<? extends BaseServlet> clazz = this.getClass();
                Method method = clazz.getDeclaredMethod(methodName);
                //打破规则,调用私有方法
                method.setAccessible(true);
                //执行方法,获取结果
                Object result = method.invoke(this);
                if(Objects.nonNull(result)){
                    if(result instanceof ResponseEntity){
                        //JSON转换
                        String jsonStr = GsonUtil.toJson(result);
                        //设置返回格式
                        resp.setContentType("application/json;charset=utf-8");
                        //out输出
                        PrintWriter out = resp.getWriter();
                        out.write(jsonStr);
                        out.close();
                    }else if(result instanceof String){
                        String path = result + ".jsp";
                        //重定向
                        if(path.startsWith(REDIRECT)){
                            path = path.substring(path.indexOf("/"));
                            resp.sendRedirect(path);
                            return;
                        }
                        req.getRequestDispatcher(path).forward(req,resp);
                    }else{
                        throw new RuntimeException("数据格式不匹配,想清楚。。");
                    }
                }
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
    
        }
    }

    依赖

    <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>4.0.1</version>
                <scope>provided</scope>
            </dependency>

    4、邮箱工具

    package untity;
    
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.util.Properties;
    
    /**
     * @description
     * @auther: CDHONG.IT
     * @date: 2019/10/22-9:38
     **/
    public class MailUtils {
        private static final String USER = ""; // 发件人称号,同邮箱地址
        private static final String PASSWORD = ""; // 如果是qq邮箱可以使户端授权码,或者登录密码
    
        /**
         *
         * @param to 收件人邮箱
         * @param text 邮件正文
         * @param title 标题
         */
        /* 发送验证信息的邮件 */
        public static boolean sendMail(String to, String text, String title){
            try {
                final Properties props = new Properties();
                props.put("mail.smtp.auth", "true");
                props.put("mail.smtp.host", "smtp.qq.com");
    
                // 发件人的账号
                props.put("mail.user", USER);
                //发件人的密码
                props.put("mail.password", PASSWORD);
    
                // 构建授权信息,用于进行SMTP进行身份验证
                Authenticator authenticator = new Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        // 用户名、密码
                        String userName = props.getProperty("mail.user");
                        String password = props.getProperty("mail.password");
                        return new PasswordAuthentication(userName, password);
                    }
                };
                // 使用环境属性和授权信息,创建邮件会话
                Session mailSession = Session.getInstance(props, authenticator);
                // 创建邮件消息
                MimeMessage message = new MimeMessage(mailSession);
                // 设置发件人
                String username = props.getProperty("mail.user");
                InternetAddress form = new InternetAddress(username);
                message.setFrom(form);
    
                // 设置收件人
                InternetAddress toAddress = new InternetAddress(to);
                message.setRecipient(Message.RecipientType.TO, toAddress);
    
                // 设置邮件标题
                message.setSubject(title);
    
                // 设置邮件的内容体
                message.setContent(text, "text/html;charset=UTF-8");
                // 发送邮件
                Transport.send(message);
                return true;
            }catch (Exception e){
                e.printStackTrace();
            }
            return false;
        }
    
        public static void main(String[] args) throws Exception { // 做测试用
                MailUtils.sendMail("","你好,这是一封测试邮件,无需回复。","测试邮件");
                System.out.println("发送成功");
    
        }
    }
    <dependency>
                <groupId>com.sun.mail</groupId>
                <artifactId>javax.mail</artifactId>
                <version>1.5.3</version>
            </dependency>

    5、手机短信接受工具

    package web;
    import com.aliyuncs.CommonRequest;
    import com.aliyuncs.CommonResponse;
    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.IAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.exceptions.ServerException;
    import com.aliyuncs.http.MethodType;
    import com.aliyuncs.profile.DefaultProfile;
    
    import java.util.ResourceBundle;
    
    /**
     * @Auther: mu_zi
     * @Date: 2019/10/31 14:19
     * @Description:
     */
    public class SendSms {
        private static ResourceBundle rb = ResourceBundle.getBundle("sms");
    
        public static String sendSms(String tel,String code) {
            DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", rb.getString("accessKeyId"), rb.getString("secret"));
            IAcsClient client = new DefaultAcsClient(profile);
    
            CommonRequest request = new CommonRequest();
            request.setMethod(MethodType.POST);
            request.setDomain("dysmsapi.aliyuncs.com");
            request.setVersion("2017-05-25");
            request.setAction("SendSms");
            request.putQueryParameter("RegionId", "cn-hangzhou");
            request.putQueryParameter("PhoneNumbers", tel);
            request.putQueryParameter("TemplateParam", "{"code":""+code+""}");
            request.putQueryParameter("SignName", rb.getString("signName"));
            request.putQueryParameter("TemplateCode",  rb.getString("templateCode"));
            try {
                CommonResponse response = client.getCommonResponse(request);
                // System.out.println(response.getData());
                return response.getData();
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public static void main(String[] args) {
            String code = String.valueOf(new Double(Math.random()*10000).intValue());
            String str = SendSms.sendSms("13628357343", code);
            System.out.println(str);
            //{"Message":"账户余额不足","RequestId":"887695F2-5601-4819-8019-E37F72155831","Code":"isv.AMOUNT_NOT_ENOUGH"}
    
        }
    
    }

    依赖

    <dependency>
                <groupId>com.aliyun</groupId>
                <artifactId>aliyun-java-sdk-core</artifactId>
                <version>4.0.3</version>
            </dependency>

    6、图片验证码

    package web;
    
    import untity.SysUtil;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Random;
    
    /**
     * @description
     * @auther: CDHONG.IT
     * @date: 2019/10/22-9:11
     **/
    @WebServlet("/verifyCodeImg")
    public class VerifyCodeImg extends HttpServlet {
    
        private static final int WIDTH = 140;//设置验证码图片宽度
        private static final int HEIGHT = 45;//设置验证码图片高度
        private static final int RAND_CHAR_SIZE = 4;//设置验证码长度
    
        //验证码的字符库
        private static final String str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    
        //通过随机数取字符库中的字符组合成4位验证码
        private static Random random = new Random();
    
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //创建画布
            BufferedImage bufferedImage = new BufferedImage(WIDTH+10, HEIGHT+20, BufferedImage.TYPE_INT_RGB);
            //获得画笔
            Graphics2D graphics = (Graphics2D)(bufferedImage.getGraphics());
            //填充背景颜色
            graphics.fillRect(0, 0, WIDTH+10, HEIGHT+20);
            //设置画笔颜色随机生成
            graphics.setColor(getRandColor());
            //声明变量存储生成的验证码
            StringBuilder code = new StringBuilder();
            //随机生成4个字符
            for (int i = 1; i <= RAND_CHAR_SIZE; i++) {
                graphics.setFont(new Font("华文新魏", Font.BOLD, 45));  //设置字体
                graphics.setColor(getRandColor());    //随机生成颜色
                //随机生成字符索引
                String cha = String.valueOf(str.charAt(random.nextInt(str.length())));
                //将随机生成的字符写入画布
                graphics.drawString(cha,WIDTH/5*i-20, random.nextInt((HEIGHT+8)/2) + (HEIGHT+8)/2);
                HttpSession session = req.getSession();
                code.append(cha);
            }
    
            System.out.println("验证码:"+code);
            //把生成的验证码存放在Session中
            req.getSession().setAttribute(SysUtil.VERIFY_CODE,code.toString());
    
            //画干扰线:
            graphics.setColor(getRandColor()); //随机生成画笔颜色
            graphics.setStroke(new BasicStroke(3.0f));
            //画干扰线到画布中
            graphics.drawLine(0, random.nextInt(HEIGHT), WIDTH, random.nextInt(HEIGHT));
            graphics.dispose();  //资源销毁
    
            //设置响应头通知浏览器以图片的形式打开
            resp.setContentType("image/jpeg");
    
            //设置响应头控制浏览器不要缓存
            resp.setDateHeader("expries", -1);
            resp.setHeader("Cache-Control", "no-cache");
            resp.setHeader("Pragma", "no-cache");
    
            //将画布写到浏览器中
            ImageIO.write(bufferedImage, "JPEG", resp.getOutputStream());
        }
    
        //生成随机颜色
        private Color getRandColor() {
            return new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255));
        }
    
    }
           <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>4.0.1</version>
                <scope>provided</scope>
            </dependency>

    7、例

    package web;
    
    import entity.ResponseEntity;
    import entity.vo.User;
    import mapper.RegisterMapper;
    import service.RegisterService;
    import untity.GsonUtil;
    import untity.SysUtil;
    
    import javax.servlet.annotation.WebServlet;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @Auther: mu_zi
     * @Date: 2019/10/31 10:04
     * @Description:
     */
    @WebServlet("/register/*")
    public class RegisterServlet extends  BaseServlet{
    
    
        private RegisterService registerService = new RegisterService();
      //图片验证
        public ResponseEntity checkedImgCode(){
            //从后端获取验证码,自动生成的验证码
            String  code =   request.getParameter("imgCode");
            //提取Session中的验证码,用户输入的验证码
            String code1 = (String) session.getAttribute(SysUtil.VERIFY_CODE);
            //忽略验证码的大小写进行判断
            System.out.println(code +"-->"+code1);
            if (!code.equalsIgnoreCase(code1)){
                return ResponseEntity.error("验证码输入有误");
            }
            return  ResponseEntity.ok();
        }
    
        //发短信
        public ResponseEntity sendSms(){
            //获取手机号
            String tel = request.getParameter("tel");
            //随机生成4位数的验证码
            String code = String.valueOf(new Double(Math.random()*10000).intValue());
            //调用发短信的帮助类
            String resultStr = SendSms.sendSms(tel, code);
    
            Map<String,String> resultMap = GsonUtil.fromJson(resultStr, Map.class);
            if(resultMap.get("Message").equals("OK")){
                session.setAttribute(SysUtil.TEL_CODE,code);
                return ResponseEntity.ok("短信发送成功,请注意查收");
            }
            return ResponseEntity.error("短信发送失败,60秒后重试");
        }
    
        //判断手机验证码是否正确
        public  ResponseEntity checkSms(){
            //获取前端传输的数据
            String telCode = request.getParameter("sms");
            //获取存储在Session中的手机验证码
            String code = (String) session.getAttribute(SysUtil.TEL_CODE);
            System.out.println(telCode+"-->"+code);
            //判断验证码是否相同
            if (telCode.equals(code)){
                return ResponseEntity.ok();
            }
            return ResponseEntity.error("输入的验证码不正确");
        }
    
        //手机号注册
        public ResponseEntity insert(){
            String tel = request.getParameter("tel");
            String nickName = request.getParameter("nickName");
            String pwd = request.getParameter("pwd");
            return registerService.regiter(tel,nickName,pwd);
        }
    
    }

    8、静态数据存储工具 eg

    package untity;
    
    /**
     * @description
     * @auther: CDHONG.IT
     * @date: 2019/10/22-9:15
     **/
    public class SysUtil {
    
        public static final String VERIFY_CODE = "verifyCode";  //验证码
        public static final String CURRENT_USER = "currentUser"; //登录存储的用户
        public static final String EMAIL_TOKEN = "emailToken"; //邮箱激活码
        public static final String TEL_CODE = "telCode"; //手机验证 ;
    
        public interface UserStatus{
            int ENABLED = 0;  //启用
            int DISABELD = 1; //禁用
        }
    
        public interface Role{
            int  minus = -1; //为管理员
            int zero = 0;//普通用户
            int integer= 1; //版主
    
        }
    
    }
  • 相关阅读:
    python sys.path.append
    python中的map()函数
    python中的map、filter、reduce函数
    上传文件2.0--drp203
    The import org.apache.commons.fileupload cannot be resolved
    让我会好好学习一阵子的东西
    【JSP】--Error错误页设置,声明式异常--188 drp
    【JSP】--重定向,转发--186 drp
    【JSP】--路径问题--如何去掉../,直接写绝对路径
    主备切换,双机热备,负载均衡,nginx
  • 原文地址:https://www.cnblogs.com/chahune/p/13213073.html
Copyright © 2011-2022 走看看