精华内容
下载资源
问答
  • 工具包实现验证码RandomImage.java package www.hbsi.csdn.util; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.Random; import javax....

    User表

    User.java

    package user.domain;
    
    import java.io.Serializable;
    import java.util.Date;
    
    public class User implements Serializable{
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
        
    	private Integer id;
    	private String name;
    	private String pass;
    	private Date birth;
    	public User(){
    		super();
    	}
    	public User(Integer id, String name, String pass, Date birth) {
    		super();
    		this.id = id;
    		this.name = name;
    		this.pass = pass;
    		this.birth = birth;
    	}
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getPass() {
    		return pass;
    	}
    	public void setPass(String pass) {
    		this.pass = pass;
    	}
    	public Date getBirth() {
    		return birth;
    	}
    	public void setBirth(Date birth) {
    		this.birth = birth;
    	}
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", name=" + name + ", pass=" + pass
    				+ ", birth=" + birth + "]";
    	}
    	
    }
    


    UserDao.java

    package user.dao;
    
    import java.util.List;
    
    import user.domain.User;
    
    public interface UserDao {
        /**
    	 * 根据用户和密码查询用户信息
    	 */
    	User checkLogin(String name,String pass);
    	
    }
    

    实现接口的类UserDaoImp.java

    package user.imp;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import user.dao.UserDao;
    import user.domain.User;
    import util.DBConn;
    
    public class UserDaoImp implements UserDao {
    	private Connection conn;
    	private PreparedStatement pstmt;
    	private ResultSet rs;
    
    	public User checkLogin(String name, String pass) {
    		User entity=null;
    		String sql="select id,name,pass from user where name=? and pass=?";
    		conn=DBConn.getConn();
    		try {
    			pstmt=conn.prepareStatement(sql);
    			int index=1;
    			pstmt.setString(index++,name);
    			pstmt.setString(index++,pass);
    			rs=pstmt.executeQuery();
    			while(rs.next()){
    				entity=new User();
    				entity.setId(rs.getInt("id"));
    				entity.setName(rs.getString("name"));
    				entity.setPass(rs.getString("pass"));
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally{
    			DBConn.release(rs, pstmt);
    		}
    		
    		
    		return entity;
    	}
    
    }
    

    工具包DBConn.java

    package util;
    
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Properties;
    
    public class DBConn {
     private static Connection conn;
     private DBConn(){
    	 
     }
     public static Connection getConn(){
    	 if(conn==null){
    		 //创建集合对象
    		 Properties properties=new Properties();
    		 try {
    			 //装载
    			properties.load(DBConn.class.getClassLoader().getResourceAsStream("db.properties"));
    		    //加载驱动程序
    			Class.forName(properties.getProperty("driverClassName"));
    			//获取连接对象
    			conn=DriverManager.getConnection(properties.getProperty("url"),properties.getProperty("user"),properties.getProperty("pass"));
    		 } catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	 }
    	 return conn;
     }
     public static void update(String sql,Object params[],PreparedStatement pstmt) throws Exception{
    	 pstmt=getConn().prepareStatement(sql);
    	 for (int i = 0; i < params.length; i++) {
    		pstmt.setObject(i+1, params[i]);
    	}
    	 pstmt.executeUpdate();
    	 release(null,pstmt);
     }
    public  static void release(ResultSet rs, PreparedStatement pstmt) {
         if (rs!=null) {
    		try {
    			rs.close();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	if (pstmt!=null) {
    		try {
    			pstmt.close();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    }
    

    工具包实现验证码RandomImage.java


    package www.hbsi.csdn.util;
    
    import java.awt.Color;
    
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.util.Random;
    
    import javax.servlet.http.HttpSession;
    
    /**
     * 验证码
     * @author yanmei
     *
     */
    public class RandomImage {
    private final static int W=80;
    private final static int H=30;
    public static BufferedImage createImage(HttpSession session){
    	//创建图片
    	BufferedImage image=new BufferedImage(W, H, BufferedImage.TYPE_INT_RGB);
    	//得到图形绘制的对象
    	Graphics g=image.getGraphics();
    	//设置背景颜色
    	setBackGroud(g);
    	//设置边框
    	setBorder(g);
    	//绘制内容
    	StringBuffer sb=drawContent(g);
    	session.setAttribute("checkCode", sb);
    	//绘制干扰线
    	drawDisturbline(g);
    	return image;
    }
    private static void drawDisturbline(Graphics g) {
    	g.setColor(Color.blue);
    	Random r=new Random();
    	for (int i = 0; i < 4; i++) {
    		int x1 = r.nextInt(W);
    		int y1 = r.nextInt(H);
    		int x2 = r.nextInt(W);
    		int y2 = r.nextInt(H);
    		g.drawLine(x1, y1, x2, y2);
    	}
    }
    private static StringBuffer drawContent(Graphics g) {
    	// TODO Auto-generated method stub
    	
    	//字节资源
    	String re = "u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a\u7740\u4e2a\u5730\u5230\u5927\u91cc\u8bf4\u5c31\u53bb\u5b50\u5f97\u4e5f\u548c\u90a3\u8981\u4e0b\u770b\u5929\u65f6\u8fc7\u51fa\u5c0f\u4e48\u8d77\u4f60\u90fd\u628a\u597d\u8fd8\u591a\u6ca1\u4e3a\u53c8\u53ef\u5bb6\u5b66\u53ea\u4ee5\u4e3b\u4f1a\u6837\u5e74\u60f3\u751f\u540c\u8001\u4e2d\u5341\u4ece\u81ea\u9762\u524d\u5934\u9053\u5b83\u540e\u7136\u8d70\u5f88\u50cf\u89c1\u4e24\u7528\u5979\u56fd\u52a8\u8fdb\u6210\u56de\u4ec0\u8fb9\u4f5c\u5bf9\u5f00\u800c\u5df1\u4e9b\u73b0\u5c71\u6c11\u5019\u7ecf\u53d1\u5de5\u5411\u4e8b\u547d\u7ed9\u957f\u6c34\u51e0\u4e49\u4e09\u58f0\u4e8e\u9ad8\u624b\u77e5\u7406\u773c\u5fd7\u70b9\u5fc3\u6218\u4e8c\u95ee\u4f46\u8eab\u65b9\u5b9e\u5403\u505a\u53eb\u5f53\u4f4f\u542c\u9769\u6253\u5462\u771f\u5168\u624d\u56db\u5df2\u6240\u654c\u4e4b\u6700\u5149\u4ea7\u60c5\u8def\u5206\u603b\u6761\u767d\u8bdd\u4e1c\u5e2d\u6b21\u4eb2\u5982\u88ab\u82b1\u53e3\u653e\u513f\u5e38\u6c14\u4e94\u7b2c\u4f7f\u5199\u519b\u5427\u6587\u8fd0\u518d\u679c\u600e\u5b9a\u8bb8\u5feb\u660e\u884c\u56e0\u522b\u98de\u5916\u6811\u7269\u6d3b\u90e8\u95e8\u65e0\u5f80\u8239\u671b\u65b0\u5e26\u961f\u5148\u529b\u5b8c\u5374\u7ad9\u4ee3\u5458\u673a\u66f4\u4e5d\u60a8\u6bcf\u98ce\u7ea7\u8ddf\u7b11\u554a\u5b69\u4e07\u5c11\u76f4\u610f\u591c\u6bd4\u9636\u8fde\u8f66\u91cd\u4fbf\u6597\u9a6c\u54ea\u5316\u592a\u6307\u53d8\u793e\u4f3c\u58eb\u8005\u5e72\u77f3\u6ee1\u65e5\u51b3\u767e\u539f\u62ff\u7fa4\u7a76\u5404\u516d\u672c\u601d\u89e3\u7acb\u6cb3\u6751\u516b\u96be\u65e9\u8bba\u5417\u6839\u5171\u8ba9\u76f8\u7814\u4eca\u5176\u4e66\u5750\u63a5\u5e94\u5173\u4fe1\u89c9\u6b65\u53cd\u5904\u8bb0\u5c06\u5343\u627e\u4e89\u9886\u6216\u5e08\u7ed3\u5757\u8dd1\u8c01\u8349\u8d8a\u5b57\u52a0\u811a\u7d27\u7231\u7b49\u4e60\u9635\u6015\u6708\u9752\u534a\u706b\u6cd5\u9898\u5efa\u8d76\u4f4d\u5531\u6d77\u4e03\u5973\u4efb\u4ef6\u611f\u51c6\u5f20\u56e2\u5c4b\u79bb\u8272\u8138\u7247\u79d1\u5012\u775b\u5229\u4e16\u521a\u4e14\u7531\u9001\u5207\u661f\u5bfc\u665a\u8868\u591f\u6574\u8ba4\u54cd\u96ea\u6d41\u672a\u573a\u8be5\u5e76\u5e95\u6df1\u523b\u5e73\u4f1f\u5fd9\u63d0\u786e\u8fd1\u4eae\u8f7b\u8bb2\u519c\u53e4\u9ed1\u544a\u754c\u62c9\u540d\u5440\u571f\u6e05\u9633\u7167\u529e\u53f2\u6539\u5386\u8f6c\u753b\u9020\u5634\u6b64\u6cbb\u5317\u5fc5\u670d\u96e8\u7a7f\u5185\u8bc6\u9a8c\u4f20\u4e1a\u83dc\u722c\u7761\u5174\u5f62\u91cf\u54b1\u89c2\u82e6\u4f53\u4f17\u901a\u51b2\u5408\u7834\u53cb\u5ea6\u672f\u996d\u516c\u65c1\u623f\u6781\u5357\u67aa\u8bfb\u6c99\u5c81\u7ebf\u91ce\u575a\u7a7a\u6536\u7b97\u81f3\u653f\u57ce\u52b3\u843d\u94b1\u7279\u56f4\u5f1f\u80dc\u6559\u70ed\u5c55\u5305\u6b4c\u7c7b\u6e10\u5f3a\u6570\u4e61\u547c\u6027\u97f3\u7b54\u54e5\u9645\u65e7\u795e\u5ea7\u7ae0\u5e2e\u5566\u53d7\u7cfb\u4ee4\u8df3\u975e\u4f55\u725b\u53d6\u5165\u5cb8\u6562\u6389\u5ffd\u79cd\u88c5\u9876\u6025\u6797\u505c\u606f\u53e5\u533a\u8863\u822c\u62a5\u53f6\u538b\u6162\u53d4\u80cc\u7ec6";
    	//获取字符的长度
    	int length=re.length();
    	//随机操作对象
    	Random r=new Random();
    	//存储字符的对象
    	StringBuffer sb=new StringBuffer();
    	for (int i = 0; i < 4; i++) {
    		//随机产生数字
    		int index=r.nextInt(length);
    		//获取字符
    		char c=re.charAt(index);
    		sb.append(c);
    	}
    	g.setColor(Color.black);
    	g.drawString(sb.toString(),20,20);
    	return sb;
    }
    private static void setBorder(Graphics g) {
    	g.setColor(Color.black);
    	g.drawRect(0, 0, W-2, H-2);
    	
    }
    private static void setBackGroud(Graphics g) {
    	// 绘制矩形
    	g.setColor(Color.yellow);
    	g.fillRect(0, 0, W, H);
    	
    }
    }
    
    ImageServlet.java
    package www.csdn.day36.servlet;
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.io.IOException;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import www.hbsi.csdn.util.RandomImage;
    
    public class ImageServlet extends HttpServlet {
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		// 禁止浏览器缓存数据
    		response.setHeader("expires", "0");
    		response.setHeader("Cache-Control", "no-cache");
    		response.setHeader("Pragma", "no-cache");
    
    		// 1.通知浏览器以图片的方式打开数据
    		response.setContentType("image/jpeg");
    
    		// 把图片显示给浏览器
    		ImageIO.write(RandomImage.createImage(request.getSession()), "jpeg",
    				response.getOutputStream());
    
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		this.doGet(request, response);
    	}
    
    }
    

    db.properties
    url=jdbc\:mysql\://localhost\:3306/csdn?useUnicode\=true&characterEncoding\=UTF-8
    user=root
    pass=113
    

    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <display-name></display-name>
      <servlet>
        <servlet-name>DemoServlet</servlet-name>
        <servlet-class>www.csdn.day36.servlet.DemoServlet</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>ImageServlet</servlet-name>
        <servlet-class>www.csdn.day36.servlet.ImageServlet</servlet-class>
      </servlet> 
      <servlet>
        <servlet-name>Servlet1</servlet-name>
        <servlet-class>www.csdn.day36.servlet.Servlet1</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>www.csdn.day36.servlet.LoginServlet</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>ChaServlet</servlet-name>
        <servlet-class>www.csdn.day36.servlet.ChaServlet</servlet-class>
      </servlet>
    
    
    
    
    
      <servlet-mapping>
        <servlet-name>DemoServlet</servlet-name>
        <url-pattern>/servlet/DemoServlet</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>ImageServlet</servlet-name>
        <url-pattern>/servlet/ImageServlet</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>Servlet1</servlet-name>
        <url-pattern>/servlet/Servlet1</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login.do</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>ChaServlet</servlet-name>
        <url-pattern>/chalogin.do</url-pattern>
      </servlet-mapping>	
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    

    ChaServlet.java

    package www.csdn.day36.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class ChaServlet extends HttpServlet {
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		 Cookie cookies[]=request.getCookies();
             if(cookies!=null){
            	 for(Cookie cookie:cookies){
            		 if("loginData".equals(cookie.getName())){
            			 String value=cookie.getValue();
            			 String data[]=value.split(":");
            			 String name=data[0];
            			 String pass=data[1];
            			 request.setAttribute("name", name);
            			 request.setAttribute("pass", pass);
            		 }
            	 }
             }
    		
    		request.getRequestDispatcher("./login.jsp").forward(request, response);
    	}
    
    	
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		this.doGet(request, response);
    	}
    
    }
    


    LoginServlet.java

    package www.csdn.day36.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import user.dao.UserDao;
    import user.domain.User;
    import user.imp.UserDaoImp;
    
    
    public class LoginServlet extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		UserDao userDao = new UserDaoImp();
    		String checkCode = request.getParameter("checkCode");
    		StringBuffer createCheckCode = (StringBuffer) request.getSession()
    				.getAttribute("checkCode");
    		String ccode = createCheckCode.toString();
    		// System.out.println(ccode+"============="+checkCode);
    		response.setContentType("text/html");
    		response.setCharacterEncoding("UTF-8");
    		PrintWriter out = response.getWriter();
    
    		// 判断验证码
    		if (ccode.equals(checkCode)) {
    			// 获取登陆的名称
    			String name = request.getParameter("name");
    			// 获取登陆的密码
    			String pass = request.getParameter("pass");
    
    			User entity = userDao.checkLogin(name, pass);
    			if (entity != null) {
    				// 运行cookie保存数据
    				Cookie cookie = new Cookie("loginData", name + ":" + pass);
    				//System.out.println(cookie);
    				cookie.setMaxAge(7 * 24 * 60 * 60);
    				response.addCookie(cookie);
    				out.print("用户名存在");
    			} else {
    				out.print("用户名和密码错误");
    			}
    
    		} else {
    			out.print("验证码错误");
    		}
    		out.close();
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		this.doGet(request, response);
    	}
    
    }
    
    login.js

    var errorDom;
    window.onload = function() {
        //alert("12123");
    	errorDom = document.getElementById("error");
    	var loginBtnDom = document.getElementById("loginBtn");
    	loginBtnDom.onclick = loginCustomer;
    };
    
    var loginCustomer = function() {
    	var name=document.getElementById("cname").value;
    	var pass=document.getElementById("cpass").value;
    	var checkCode = document.getElementById("checkCode").value;
    	//alert(checkCode);
    	var xmlHttp = getXMLHttp();
    	var data="name="+encodeURIComponent(name)+"&pass="+encodeURIComponent(pass)+"&checkCode="+encodeURIComponent(checkCode)+"&oper=login";
    	xmlHttp.open("GET", "./login.do?"+data);
    
    	xmlHttp.send();
    
    	xmlHttp.onreadystatechange = checkLogin;
    
    };
    
    var checkLogin = function() {
    	if (this.readyState == 4 && this.status == 200) {
    		errorDom.innerText= this.responseText;
    	}
    };
    
    util.js
    function getXMLHttp() {
    	var xmlHttp;
    	try {
    		// firefox Opera
    		xmlHttp = new XMLHttpRequest();
    	} catch (e) {
    		try {
    			// IE
    			xmlHttp = new ActiveXObject("MSXML2.XMLHTTP5.0");
    		} catch (ex) {
    			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}
    	return xmlHttp;
    }
    
    

    index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    
      </head>
      
      <body>
      	<a href="./chalogin.do">查询</a>
      </body>
    </html>
    

    主页面login.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'login.jsp' starting page</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    
      </head>
      
      <body>
         <div align="center">
            <form action="./login.do" method="post">
    				<table border="1px" cellpadding="0" cellspacing="0">
    					<tr>
    						<td>用户名:</td>
    						<td colspan="2"><input type="text" id="cname" value="${name}"/></td>
    					</tr>
    					<tr>
    						<td>密码:</td>
    						<td colspan="2"><input type="password" id="cpass"  value="${pass}"/></td>
    					</tr>
    					<tr>
    						<td>验证码:</td>
    						<td colspan="2"><input type="text" id="checkCode" /></td>
    						<td><img alt="验证码" src="./servlet/ImageServlet" /></td>
    					</tr>
    					<tr align="center">
    						<td colspan="3"><input type="button" value="登录" id="loginBtn" />
    							<span id="error" style="font-size:12px; color: blue;"></span></td>
    					</tr>
    				</table>
    			</form>
         </div>
      </body>
    </html>
    




    展开全文
  • struts的action类获取验证码并判断,jsp生成验证码,怎样才能将jsp生成的验证码放到action类中判断??
  • 在微信小程序中怎样实现获取验证码的倒计时功能捏,倒计时的原理是一样一样的,就是某些地方需要注意。 第一步:结构 <view class='get-code' wx:if="{{!isShow}}" bindtap='getCode'>获取验证码</view...

    在微信小程序中怎样实现获取验证码的倒计时功能捏,倒计时的原理是一样一样的,就是某些地方需要注意。

    第一步:结构

    <view class='get-code' wx:if="{{!isShow}}"  bindtap='getCode'>获取验证码</view>
    <view class='get-code' wx:if="{{isShow}}">{{sec}}秒后重新发送</view>

      注意:微信小程序中要用到两个按钮,不像HTML里面直接一个按钮就解决了。如果非要一个按钮的话,就需要把不变的内容即“获取验证码”与“秒后重新发送”装在一个数组里面,然后判断什么时候选择显示哪一个

      备注:用wx:if条件渲染来判断某个按钮是否显示与隐藏。。{{ sec }}是要动态显示的秒数,只绑定一个view的点击事件就不怕重复点击了。。。

    第二步:样式就不用说了,自己定义。主要是js。我是把这个获取验证码的函数作为公用的部分,所以新建一个公用的js文件放在你想放的目录下,然后js代码:

    function getCode(_this,num){
        _this.setData({
            isShow: true                    //按钮1隐藏,按钮2显示
        })
        var remain=num;             //用另外一个变量来操作秒数是为了保存最初定义的倒计时秒数,就不用在计时完之后再手动设置秒数
        var time = setInterval(function () {
            if (remain == 1) {
                clearInterval(time);            
                _this.setData({
                    sec: num,
                    isShow: false
                })
                return false      //必须有
            }
            remain--;
            _this.setData({
                sec: remain
            })
        }, 1000)    
    }
    module.exports = {
        getCode                  //此js模块化  也可以写成getCode:getCode
    }

     

    第三步:在需要getCode函数的页面的js中引入该公用js文件,比如:

    var code=require('../../public/js/com.js')

        备注:用一个变量来存,我自己认为是为了好调用里面模块

    第四步:在Page中申明:

    data: {
        isShow:false,         //默认按钮1显示,按钮2不显示
        sec:"4"        //设定倒计时的秒数
    },
    getCode:function(){
        var _this=this;    //防止this对象的混杂,用一个变量来保存
        var time=_this.data.sec  //获取最初的秒数
        code.getCode(_this,time);  //调用倒计时函数
    },

     

    最后就成功了。

    问题:点击view之后怎样获取该view的text值?待解决

     

    转载于:https://www.cnblogs.com/zjjDaily/p/8033816.html

    展开全文
  • 点击的时候改变验证码图片:  改一下src属性,url?一个随机数(防止缓存) <a href="javascript:;" @click="changeCodeImg()"><img :src="codeImg" alt="图片加载失败" /></a> c...

    直接放在<img src="文件名"/> 就可以了,不用去调接口之类的

    点击的时候改变验证码图片:

      改一下src属性,url?一个随机数(防止缓存)

    <a href="javascript:;" @click="changeCodeImg()"><img :src="codeImg" alt="图片加载失败" /></a>
    created(){
        this.codeImg="url";
    },
    data:function(){
      return {
        codeImg:'',
      }
    },

     methods:{
      changeCodeImg:function(){
        var num=Math.ceil(Math.random()*10);//生成一个随机数(防止缓存)
        this.codeImg='url?'+num;
      }
    }

     

     

    点击之后,改变

    转载于:https://www.cnblogs.com/rachelch/p/8085016.html

    展开全文
  • 通过btn.InvokeMember以后还是只能得到toget.jpg,请问各位改怎么修改? 网页如下:<img id="imgyzm" src="images/toget.jpg" onclick="document.getElementById('yzmdiv').style.display='block';...
  • 谷歌验证的密钥忘了 请问怎样才可以通过时间和对应的验证码算出16位的密钥?
  • 用loadRunner11怎样测登录时包含验证码的网站 1、如果有解决方法请讲的清楚一点 , 验证码线上环境 无法 被屏蔽 2、网上找了一下,有一个方法是:添加一个页面将验证码的输出到页面,然后用loadrunner获取到 ,不过...
  • autoit 下载图片验证码

    千次阅读 2016-11-23 16:03:06
    autoit 下载图片验证码自动化测试中,我做了验证码识别的功能,那么接下来就是怎么获取验证码图片了,还好autoit 里面提供了一些方法。下面就介绍一下怎样利用autoit 下载验证码图片: 先说思路: 右键点击验证码 ...

    autoit 下载图片验证码

    自动化测试中,我做了验证码识别的功能,那么接下来就是怎么获取验证码图片了,还好autoit 里面提供了一些方法。下面就介绍一下怎样利用autoit 下载验证码图片:

    • 先说思路:
      右键点击验证码
      使用↓箭头选择菜单
      使用Enter确认
      等待窗口出现
      激活窗口

    具体操作步骤

    注意打开窗口时,需要把窗口最大化,这样你的验证码图片的位置才是固定的。
    *Mouse Click ## 鼠标操作关键字,右键点击 1050,420 这个坐标,(图片验证码的位置,各个网站的验证码或者其他图片需要你们自己去调试)
    *Mouse Move ##把你的光标移动到其他地方,防止影响菜单选择,如果你的光标刚好在菜单的某个位置上,那么你选择保存图片的时候可能失败。
    *send {DOWN} ##按向下箭头 ↓ 选择菜单。
    *send {ENTER} ##按Enter 选择
    *sleep 1s ## 等待1s
    *Win Wait ##等待title 是 [另存为] 的窗口出现
    *Win Active ## 激活 [另存为] 的窗口
    *Control Set Text ##设置文本,主要用来设置文件保存路径
    *Control Click ##点击保存按钮
    *sleep 3s ##等待下载图片,不要立即关闭浏览器,否则不会下载图片。

    展开全文
  • c# 登录带验证码网站

    2019-06-29 05:25:07
    前面提到怎样获取网站的临时会话id和如何获取网站的验证码,下面代码比较简单,直接利用得到的验证码登录网站 如果要实现完全不用人工参与直接登录带验证码的网站,需要验证码识别技术,以后有机会献上代码! ...
  • 大家好,我是M1ko。在互联网时代的今天,假设一个App不接入...正好通过一个模拟登录校园网软件,来给大家演示怎样在网页上抓取我们想要的数据,以及将数据Post给server。假设有什么错误或改进欢迎大家指正=-= ,假设...
  • 在分析第三方短信服务商的手机验证码送达率的问题之前,我们需要了解用户获取验证码的技术实现原理是怎样的: 用户发出“获取验证码”请求→产品系统依据预设规则生成一条验证码并连同用户手机号码等内容通过短信...
  • 为了防止用户无休止的获取短信验证码,或者是误操作。造成验证码混乱的情况。我们一般在获取验证码功能的Button上面加上倒计时功能,从而限制用户获取验证码的间隔。 今天这篇文章,是介绍怎样使用CountDo...
  • 验证码获取方式无非就两种,一种是后台提供一个接口,返回图片的地址和验证码,然后你去请求验证码再显示出来。另一种是直接的在本地生成验证码。后台提供的话,肯定对前端开发人员来说方便很多,拿到直接使用,而...
  • 在很多项目里面都会有一个登录页面,而登录页面一般都会有一个验证码来登录的时候验证,而验证码怎样生成的呢?首先要生成验证码就要编写一个公共静态类,公共静态类是来获取生成那时候随机的字符串、随机数的长度...
  • 本人效仿试了一下,访问两个 servlet 得到的 session 并不是同一个(所以也无法取出验证码), 于是乎我又查了资料,发现获取同一个 session 还得靠 cookie,而 kookie 一般是浏览器去处理, 而我所使用的并不是浏览器...
  • 随着时间的发展,越来越多的手机号加入我们的生活,一些199/198/191开头的手机号 在获取验证码的时候,发现是无法接收到验证码的,这是因为后天验证手机时,将199/198等这些字段的手机号给过滤了,那些以前的验证...
  • ###开篇 ...上面两张图展示的就是一个注册账号时发生手机短信验证码的界面,而获取验证码的倒计时就是用的定时器来实现的。 ####定时器简单实现验证码倒计时 为了能够很好的演示,我们新建一个工程...
  • 代理ip的使用是爬虫工作必须使用的爬取辅助工具,...网络爬虫开展后会出现认证信息时进行破解,通常为验证码和用户登录,在破解的同时促进获取频率, 二、如何获得充足稳定的代理IP 1、抓取免费代理 一般是找某些
  • 代理ip的使用是爬虫工作必须使用的爬取辅助工具,大数据的...网络爬虫开展后会出现认证信息时进行破解,通常为验证码和用户登录,在破解的同时促进获取频率, 二、如何获得充足稳定的代理IP 1、抓取免费代理 一般是
  • 英语课程遍地都是,参与者也从几岁的小娃娃到研究生不等,学员时间上的安排也会与...首先你需要在乐享其约、的官网上联系后台管理人员,获取模板的验证码。在工作人员的指导下,将模板正确导入到微信公众号的平台上。
  • 首先要知道注册用户的当前手机号,但是现在大部分的手机卡都是无法直接获取手机号的,所以在点击一键注册的时候,会发现系统会提示要发送一条短信,我认为,是向服务器端发送了一条短信,这条短信可能什么内容都没有...
  • 既然不允许我们在子线程中操控UI界面,那么,像我们平时所见的点击获取验证码,不断更新UI界面的操作又怎样实现的呢?这里就用到了我们的Handler消息传递的机制。二、Handler消息传递机制介绍Handler类的主要作用有...
  • 我们常见的软件设计中使用倒计时的地方主要有:获取验证码时、阅读某个页面完成任务时和常见的考试问答类等等方向。由此我们可见倒计时主要是有规避了在短时间内的不正常访问和满足系统期望对用户的页面停留时间做...
  • 问题1:刚上线了一个APP,注册是直接在登录界面输入手机号,获取短信验证码就可以进入系统,这两天突然发现有恶意的批量注册,查看日志,半小时就有几千条注册信息,阿里云上的短信费用一下就被花完了 问题2:由于...

空空如也

空空如也

1 2 3 4
收藏数 67
精华内容 26
关键字:

怎样获取验证码