发表于: 2017-09-14 16:02:35

2 724


今天做的事:

还是调用第三方api

首先短信验证有点问题,先放到后面解决

然后邮箱验证和短信验证同理,搁置不管

最后就是图片上传

今天优化了之前的图片上传

public String putPicture(){//路径需要转换
       //用来存文件名
       String key = null;
       try{//图片上传逻辑块
           //打开文件选择对话框
           UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
           JFileChooser fileChooser = new JFileChooser();
           fileChooser.showOpenDialog(null);
           String filePath = "" + fileChooser.getSelectedFile();
           String fileName = "" + fileChooser.getSelectedFile().getName();
           System.out.println("选择文件路径: " + filePath);
           System.out.println("选择文件的文件名: " + fileName);
   
           String newURL = filePath.replaceAll("\\\\","/");
           System.out.println("转义后的文件路径:" + newURL);
   
   
           //构造一个带指定Zone对象的配置类
           Configuration cfg = new Configuration(Zone.zone1());
//...其他参数参考类注释
   
           UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
           String accessKey = "rGaYK9w52Bp0mVwlsvlSfvyr-Ba5KSw1n7FxajQR";
           String secretKey = "kxnCINxurLUPkxAnat7L60bl9dvZWV7NSPLLcZB0";
           String bucket = "picture-test";
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
//        String localFilePath = "D:\\image\\1.jsp";
//默认不指定key的情况下,以文件内容的hash值作为文件名
           key = fileName;
   
           Auth auth = Auth.create(accessKey, secretKey);
           String upToken = auth.uploadToken(bucket);
   
           try {
Response response = uploadManager.put(newURL, key, upToken);
               //解析上传成功的结果
               DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
               System.out.println(putRet.key);
               System.out.println(putRet.hash);
           } catch (QiniuException ex) {
Response r = ex.response;
               System.err.println(r.toString());
               try {
System.err.println(r.bodyString());
               } catch (QiniuException ex2) {
//ignore
               }
}
}catch (Exception e){
e.printStackTrace();
       }
return "外网链接拼接字段" + key;
   }


这里使用了文件选择对话框以及转义(参考志勇的小课堂视频)

首先说一下文件选择对话框

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
这是把外观设置成你所使用的平台的外观,也就是你这个程序在哪个平台运行,显示的窗口,对话框外观将是哪个平台的外观.

这个是java的设置图形界面外观的。

showOpenDialog是JFileChooser对象用于弹出窗口选择文件使用

剩下的都有相关注解,不一一说明。


最后返回一个String类型的url,存储到数据库中,可以获取外网链接中的图片资源(待测试)


目前测试这个文件选择对话框跑不起来,不清楚为什么,也不浪费时间找问题了,搁置


然后是之前一直困扰我的短信验证问题,请教了几位师兄,得到了很好的解决。

@RequestMapping(value = "/a/stu",method = RequestMethod.POST)
public String insertStu(Student student, Integer checking,HttpServletRequest request){
       logger.info("Enter Controller.insertStu()");
       logger.info("student=============>" + student);
       logger.info("checking=============>" + checking);
//        boolean flag1 = sS.sendMessage(student.getTel(), verify);
       HttpSession session = request.getSession();
       Integer verify = (int)session.getAttribute("verify");
       logger.info("verify=============>" + verify);
       boolean flag2 = (checking.equals(verify)) ? true : false;
       logger.info("flag2=============>" + flag2);
       //返回的外网链接插入到学生信息中
       //这个图片调用因为有个文档交互的窗口,所以不知为什么总是跑不起来,所以就搁置了。
//        String pictureurl = sS.putPicture();
//        student.setImage(pictureurl);
       boolean flag3 = sS.sendEmail(student.getEmail());
       try {
           if (flag2 == true && flag3 == true ) {
              int i =sS.insert(student);
               if(i > 0) {
                  logger.info("插入♂学生成功~");
                   return "redirect:/a/success";
               }
           }
       }catch (Exception e){
          e.printStackTrace();
       }
       return "redirect:/a/error";
   }

//获取验证码
   @RequestMapping(value = "/a/tel",method = RequestMethod.GET)
public void getVerify(String tel,HttpServletRequest request){
       logger.info("Enter Controller.getVerify()");
       logger.info("tel==============>" + tel);
       //验证码
       Integer verify = (int)((Math.random()*9+1)*100000);
       sS.sendMessage(tel,verify);
       HttpSession session = request.getSession();
       session.setAttribute("verify",verify);
   }

这里使用session传递随机验证码。

然后生成6位随机数的时候,我一开始是这么写的

Integer verify = (int)(Math.random()*1000000);

但是有的时候生成五位验证码,因为random方法有一定的局限性,所以做了上面的修改。


最后获取短信验证码这个按钮功能还是需要前端的ajax的异步实现(目前能想到的最好的办法)


<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%--
 Created by IntelliJ IDEA.
 User: yubotao
 Date: 2017/09/12
 Time: 14:41
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>插学生~</title>

   <script src="${pageContext.request.contextPath}/cs10/jquery.min.js"></script>
   <script type="text/javascript">
       $(function () {
              $('#sendCode').click(

                function () {
                        var data={
                        tel:$("#tel").val()
                          }
                       $.ajax({
                       type:"GET",
                       url: "${pageContext.request.contextPath}/a/tel",
                       data:data,
                       dataType:JSON,
                       success:function () {
                           alert("success");
                       }
                    })
                   }
                  );

                });
   </script>
</head>
<body>
<h2>夭寿啦,插学生啦!</h2>
<form action="${pageContext.request.contextPath}/a/stu" method="post">
   name:<input name="name" type="text"/><br>
   age:<input name="age" type="text"/><br>
   sex:<input name="sex" type="text"/><br>
   profession:<input name="profession" type="text"/><br>
   introduce:<input name="introduce" type="text"/><br>
   studying:<input name="studying" type="text"/><br>
   tel:<input id="tel" name="tel" type="text"/><br>
   verify:<input name="checking" type="text"/>
   <input type="button" value="获取验证码" id="sendCode">
   <br>
   Email:<input name="email" type="text"/><br>
   createAt:<input name="createAt" type="text"/><br>
   createBy:<input name="createBy" type="text"/><br>
   <input type="submit" name="Submit" value="注册学生">
   <input type="reset" name="Submit2" value="重填">
</form>
</body>
</html>


使用ajax需要引用文件。

jquery.min.js

不过ajax这些代码的原理是啥没搞清,也先不浪费时间去看了。


就这样,简单的demo测试通过

注册后会出现成功的界面,这里就不贴了。


对了,中间有一段过程是插入不成功,然后程序还不报错,直接跳转到错误界面,这个就有点伤了,最后搜了一下,将Spring的日志级别调整到debug级别,然后才发现错误,是一个字段之前更改类型了,最后插入的时候有问题,但是因为try-catch块加上日志级别是INFO,所以就看不到具体细节的问题。


更改日志级别也是一项比较有用的技能。


最后就是图片互传,我自己看看有没有多余时间实现。


提交代码了,小马哥给审核一下。


明天计划:开始任务8.


问题:那个文件选择对话框,跑不起来。


收获:获取短信验证码按钮功能;更改Spring日志级别为debug来发现问题;使用session传值,不过session没仔细看,有时间需要补一下session的知识。




返回列表 返回列表
评论

    分享到