美文网首页
web开发常见问题及解决方案

web开发常见问题及解决方案

作者: 麦兜叮叮当 | 来源:发表于2018-01-13 12:45 被阅读0次

[图片上传中...(20141016114451816.png-5cba10-1516454690386-0)]

js以流的方式传递图片给后台

  • html
<input type="file" accept="image/*"  onchange="saveimage(this)" >
  • js
function saveimage(obj){
                         console.log("进入方法....");
     
            if(window.FileReader){
                var image = obj.files[0];
                var reader = new FileReader();
                 //读取文件过程方法
                reader.onloadstart = function (e) {
                    console.log("开始读取....");
                }
                reader.onprogress = function (e) {
                    console.log("正在读取中....");
                }
                reader.onabort = function (e) {
                    console.log("中断读取....");
                }
                reader.onerror = function (e) {
                    console.log("读取异常....");
                }
                reader.onload = function(e){
                    console.log("FileReader成功拿到");
                    var img = document.getElementById("preview");
                    img.src = e.target.result;
                    uploadImage(this.result);
                }
                reader.readAsArrayBuffer(image);
            } else {
                alert("您的浏览器暂不支持图片上传,请更换浏览器!");
            }
        }
        
        function uploadImage(data){
            console.log(data);
            $.ajax({
                url: "/expert.do?op=saveImage",
                type: "POST",
                data:data, 
                processData:false,
                contentType: false,
                success: function(path){
                    //图片路径
                    console.log("成功, 路径是 = " + path);
                    $('#image_path_id').val(path);
                },
                error: function(){
                    console.log("失败");
                }
            });
        }
  • servlert
    /**
     * 保存图片
     */
    public ActionForward saveImage(ActionMapping mapping,
            ActionForm form, HttpServletRequest request,
            HttpServletResponse response) {

        
        try {
            InputStream input = request.getInputStream();
            File f = new File(ServerConfig.IMAGE_SAVE_PATH);
            if(!f.exists()){
                f.mkdir();
            }
            String uuid = UUID.randomUUID().toString();
            File image = new File(ServerConfig.IMAGE_SAVE_PATH + File.separator + uuid + ".jpg");
            OutputStream file = new FileOutputStream(image);
        
            byte[] buff = new byte[4096];  
            int len = 0;  
            
            while((len=input.read(buff))!=-1){  
                file.write(buff, 0, len);  
            }  
            input.close();  
            file.close();
            ResponseUtil.write(response, image.getPath());
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return null;

    }


   /**
     * html显示图片,后台以流的形式获取
     *
     * @return
     */
    public ActionForward image(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
        String imageName = request.getParameter("image");
        if (imageName == null || imageName.equals("")) {
            return null;
        }
        String imagePath = ServerConfig.IMAGE_SAVE_PATH;
        if (imagePath.length() != 0 && !imagePath.substring(imagePath.length() - 1, imagePath.length()).equals("/")) {
            imagePath = imagePath + File.separator;
        }
        File f = new File(imagePath + "images");
        if (!f.exists()) {
            f.mkdir();
        }
        FileInputStream in;
        try {
            //图片读取路径
            //in=new FileInputStream("E:\\picture\\"+photoName);
            in = new FileInputStream(imagePath + "images" + File.separator + imageName);
            int i = in.available();
            byte[] data = new byte[i];
            in.read(data);
            in.close();
            //写图片
            OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
            outputStream.write(data);
            outputStream.flush();
            outputStream.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
  • html拿到图片,以流的形式从后台传输到页面
<img src="/job.do?op=image&amp;image=a200524d-9cbe-44c9-864b-09b712a523b6.jpg">

结束

html富文本之wangEditor

  • 配置文件以及下载地址


    image.png
image.png

下载地址:https://pan.baidu.com/s/1c3UT0Uc

  • html
  <div id="editor-container" class="edit2" style="width:950px;padding-left:20px;">
        <div id="editor-trigger"><p>请输入内容</p></div>
    </div></td>
  • js
<script type="text/javascript">
    
      // 阻止输出log
        // wangEditor.config.printLog = false;

        var editor = new wangEditor('editor-trigger');

        // 上传图片
        editor.config.uploadImgUrl = '/upload';
        editor.config.uploadParams = {
            // token1: 'abcde',
            // token2: '12345'
        };
        editor.config.uploadHeaders = {
            // 'Accept' : 'text/x-json'
        }
        // editor.config.uploadImgFileName = 'myFileName';

        // 隐藏网络图片
        // editor.config.hideLinkImg = true;

        // 插入代码时的默认语言
        // editor.config.codeDefaultLang = 'html'

        // 只粘贴纯文本
        // editor.config.pasteText = true;

        // 跨域上传
        // editor.config.uploadImgUrl = 'http://localhost:8012/upload';

        // 第三方上传
        // editor.config.customUpload = true;

        //普通菜单配置
        editor.config.menus = [
                'bold',
                'underline',
                'italic',
                'strikethrough',
                'eraser',
                'forecolor',
                'bgcolor'
         ];
        

        // onchange 事件
        editor.onchange = function () {
            console.log(this.$txt.html());
        };
        editor.create();
</script>
  • 获取富文本内容
var text = editor.$txt.html();
  • 效果图


    738886C7-B2DC-4BD0-BE48-B1F29C5136A5.png
  • 官方使用手册
https://www.kancloud.cn/wangfupeng/wangeditor2/113969

结束

jQuery EasyUI简单使用

下载完成之后,得到 image.png download-1.png

压缩包,解压后,得到一个【jquery-easyui-1.4.1】文件夹,里面有如下图所示的文件:

  • 引入必要的js和css样式文件
 <!-- 引入JQuery -->
 2   <script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.4.1/jquery.min.js"></script>
 3   <!-- 引入EasyUI -->
 4   <script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.4.1/jquery.easyui.min.js"></script>
 5   <!-- 引入EasyUI的中文国际化js,让EasyUI支持中文 -->
 6   <script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.4.1/locale/easyui-lang-zh_CN.js"></script>
 7   <!-- 引入EasyUI的样式文件-->
 8   <link rel="stylesheet" href="${pageContext.request.contextPath}/jquery-easyui-1.4.1/themes/default/easyui.css" type="text/css"/>
 9   <!-- 引入EasyUI的图标样式文件-->
10   <link rel="stylesheet" href="${pageContext.request.contextPath}/jquery-easyui-1.4.1/themes/icon.css" type="text/css"/>

在jsp文件中引用了这些文件之后,就可以使用EasyUI了。

  • easyUI 验证控件应用、自定义、扩展验证 手机号码或电话话码格式
    效果图
20141016114451816.png 20141016114821574.png

代码

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  
<title>Insert title here</title>  
    <link rel="stylesheet" type="text/css" href="jquery-easyui-1.4/themes/default/easyui.css"/>      
    <link rel="stylesheet" type="text/css" href="jquery-easyui-1.4/themes/icon.css"/>      
    <script type="text/javascript" src="jquery-easyui-1.4/jquery.min.js"></script>      
    <script type="text/javascript" src="jquery-easyui-1.4/jquery.easyui.min.js"></script>      
    <script type="text/javascript" src="jquery-easyui-1.4/locale/easyui-lang-zh_CN.js"></script>    
</head>  
<body>  
 <h2>Custom ValidateBox Tooltip</h2>  
    <p>This sample shows how to display another tooltip message on a valid textbox.</p>  
    <div style="margin:20px 0;"></div>  
    <div class="easyui-panel" title="Register" style="width:400px;padding:10px 60px 20px 60px">  
        <table cellpadding="5">  
            <tr>  
                <td>User Name:</td>  
                <td><input class="easyui-validatebox textbox" data-options="required:true,validType:'length[3,10]'"></td>  
            </tr>  
            <tr>  
                <td>Email:</td>  
                <td><input class="easyui-validatebox textbox" data-options="prompt:'Enter a valid email.',required:true,validType:'email'"></td>  
            </tr>  
            <tr>  
                <td>Birthday:</td>  
                <td><input class="easyui-datebox"></td>  
            </tr>  
            <tr>  
                <td>URL:</td>  
                <td><input class="easyui-validatebox textbox" data-options="prompt:'Enter your URL.',required:true,validType:'url'"></td>  
            </tr>  
            <tr>  
                <td>Phone:</td>  
                <td><input class="easyui-validatebox textbox" data-options="prompt:'Enter your phone number.',required:true"></td>  
            </tr>  
              
             <tr>  
                <td>extneds 联系电话 test:</td>  
                <td><input class="easyui-validatebox" data-options="validType:'phoneRex'"></td>  
            </tr>  
        </table>  
    </div>  
    <style scoped="scoped">  
        .textbox{  
            height:20px;  
            margin:0;  
            padding:0 2px;  
            box-sizing:content-box;  
        }  
    </style>  
    <script>  
      
      
     //自定义验证  
    $.extend($.fn.validatebox.defaults.rules, {  
    phoneRex: {  
        validator: function(value){  
        var rex=/^1[3-8]+\d{9}$/;  
        //var rex=/^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;  
        //区号:前面一个0,后面跟2-3位数字 : 0\d{2,3}  
        //电话号码:7-8位数字: \d{7,8  
        //分机号:一般都是3位数字: \d{3,}  
         //这样连接起来就是验证电话的正则表达式了:/^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/          
        var rex2=/^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;  
        if(rex.test(value)||rex2.test(value))  
        {  
          // alert('t'+value);  
          return true;  
        }else  
        {  
         //alert('false '+value);  
           return false;  
        }  
            
        },  
        message: '请输入正确电话或手机格式'  
    }  
});  
  
        $(function(){  
            $('input.easyui-validatebox').validatebox({  
                tipOptions: {    // the options to create tooltip  
                    showEvent: 'mouseenter',  
                    hideEvent: 'mouseleave',  
                    showDelay: 0,  
                    hideDelay: 0,  
                    zIndex: '',  
                    onShow: function(){  
                        if (!$(this).hasClass('validatebox-invalid')){  
                            if ($(this).tooltip('options').prompt){  
                                $(this).tooltip('update', $(this).tooltip('options').prompt);  
                            } else {  
                                $(this).tooltip('tip').hide();  
                            }  
                        } else {  
                            $(this).tooltip('tip').css({  
                                color: '#000',  
                                borderColor: '#CC9933',  
                                backgroundColor: '#FFFFCC'  
                            });  
                        }  
                    },  
                    onHide: function(){  
                        if (!$(this).tooltip('options').prompt){  
                            $(this).tooltip('destroy');  
                        }  
                    }  
                }  
            }).tooltip({  
                position: 'right',  
                content: function(){  
                    var opts = $(this).validatebox('options');  
                    return opts.prompt;  
                },  
                onShow: function(){  
                    $(this).tooltip('tip').css({  
                        color: '#000',  
                        borderColor: '#CC9933',  
                        backgroundColor: '#FFFFCC'  
                    });  
                }  
            });  
        });  
    </script>  
</body>  
   
</body>  
</html>  

网页验证码生成

  • 后台生成验证码
@Controller
@RequestMapping("/code")
public class SecCodeController {

    @RequestMapping
    public void generate(HttpServletResponse response){
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        String code = drawImg(output);
        
        Subject currentUser = SecurityUtils.getSubject();  
        Session session = currentUser.getSession();
        session.setAttribute(Const.SESSION_SECURITY_CODE, code);
        
        try {
            ServletOutputStream out = response.getOutputStream();
            output.writeTo(out);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    private String drawImg(ByteArrayOutputStream output){
        String code = "";
        for(int i=0; i<4; i++){
            code += randomChar();
        }
        int width = 70;
        int height = 25;
        BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
        Font font = new Font("Times New Roman",Font.PLAIN,20);
        Graphics2D g = bi.createGraphics();
        g.setFont(font);
        Color color = new Color(66,2,82);
        g.setColor(color);
        g.setBackground(new Color(226,226,240));
        g.clearRect(0, 0, width, height);
        FontRenderContext context = g.getFontRenderContext();
        Rectangle2D bounds = font.getStringBounds(code, context);
        double x = (width - bounds.getWidth()) / 2;
        double y = (height - bounds.getHeight()) / 2;
        double ascent = bounds.getY();
        double baseY = y - ascent;
        g.drawString(code, (int)x, (int)baseY);
        g.dispose();
        try {
            ImageIO.write(bi, "jpg", output);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return code;
    }
    
    private char randomChar(){
        Random r = new Random();
        String s = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789";
        return s.charAt(r.nextInt(s.length()));
    }
}
  • html加载验证码
<img style="height:22px;" id="codeImg" alt="点击更换"
                                title="点击更换" src="" />
        $(document).ready(function() {
            changeCode();
            $("#codeImg").bind("click", changeCode);
        });

        function changeCode() {
            $("#codeImg").attr("src", "code.do");
        }

就这么简单,验证码就出来了。
结束

相关文章

网友评论

      本文标题:web开发常见问题及解决方案

      本文链接:https://www.haomeiwen.com/subject/barcoxtx.html