EasyMall注册功能
EasyMall注册功能
1. 环境搭建
- 创建一个EasyMall的web应用
- 配置www.easymall.com网站,并配置为缺省的虚拟主机,将EasyMall配
置为缺省的web应用,在配置index.jsp为缺省的主页。
- 配置web应用:在myeclipse中创建一个web工程EasyMall。
缺省主页:
在web应用中的web.xml中配置如下内容:
- 配置虚拟主机:
- 在[tomcat]/conf/server.xml中配置一个<Host>标签:配置内容如下:
<Host name="www.easymall.com" appBase="D:/www.easymall.com"></Host>、
- 添加缺省虚拟主机,配置如下:
<Engine name="Catalina" defaultHost="www.easymall.com">
iii. 配置hosts文件:
C:\Windows\System32\drivers\etc\hosts
配置内容如下:
127.0.0.1 www.easymall.com
e. 将web应用部署到easymall网站的虚拟主机目录中:
i. 选择发布按钮:
发布web应用时,选择<Custom Location>选项,然后下方的路径变为可修改,修改其中内容为:
D:\www.eaysmall.com\ROOT
这时就会将web应用部署到easymall网站管理的虚拟主机目录下,并且web应用名称改为了ROOT,会作为缺省web应用来使用。
- 页面部署
- easymall网站整体都是由三部分组成,所以导入课前资料中的三部分资料。
i. 将课前资料中head、index、foot目录中全部内容复制粘贴到webroot 目录下,如果出现覆盖,直接选择yes to all.
- 页面分成三部分的原因:
i. 其中头、尾两部分需要经常使用,如果在每一个页面当中都添加上头和为十分繁琐,所以可以通过单独将头和尾提取出,在各个页面分别引入的方式,来降低代码的冗余。
- 修改html页面为jsp页面将三个页面合成一个页面显示: i. 静态引入(静态包含)
- 创建一个index.jsp页面,删除其中除了第一行以外的全部内容
- 将index.html中的内容全部赋值粘贴到index.jsp的第一行之下。
- 将index.html页面删除。
- 剩下的foot、head页面操作与以上3步相同。
在index.jsp中body标签内添加如下内容:
<%@include file="_head.jsp"%>
在body结束标签之上添加如下内容:
<%@include file="_foot.jsp"%>
- regist页面操作
- 创建一个regist.jsp页面,删除其中除了第一行以外的全部内容
- 将regist.html中的内容全部赋值粘贴到regist.jsp的第一行之下。
- 将regist.html页面删除。
- 修改_head.jsp的注册超链接
在_head.jsp中找到注册的超链接按钮,修改其中的href属性值为如下内容:
<a href="<%=request.getContextPath() %>/regist.jsp">注册</a>
- 修改regist.jsp页面
a. 修改form标签中如下内容:
<form action="<%=request.getContextPath() %>/RegistServlet" method="POST">
- 创建RegistServlet.java文件
其中书写如下内容:
|
//1.乱码处理 //响应数据乱码处理 response.setContentType("text/html;charset=utf-8"); //请求乱码处理 request.setCharacterEncoding("utf-8"); //2.获取数据 String username = request.getParameter("username"); String password = request.getParameter("password"); String password2 = request.getParameter("password2"); String nickname = request.getParameter("nickname"); String email = request.getParameter("email"); String valistr = request.getParameter("valistr"); //3.校验 //非空校验 if(WebUtils.isNull(username)){ request.setAttribute("msg", "用户名不能为空"); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; } if(WebUtils.isNull(password)){ request.setAttribute("msg", "密码不能为空"); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; } (校验全部用户信息) //密码一致性 //邮箱格式校验 //验证码校验 //4.注册 //用户名是否存在校验 //如果用户名存在应该拒绝用户注册,提示用户名已存在 //如果用户名不存在完成注册 //5.注册完成,页面跳转 -- 跳转到首页 response.getWriter().write("<h1 align='center'><font color='red'>恭喜注册成功,3秒之后跳转回首页</font></h1>"); response.setHeader("refresh", "3;url=http://www.easymall.com"); |
- 添加用户
- 创建一个easymall数据库,向其中添加数据。通过课前资料中的sql脚本文件添加。
- 创建一个工具类JDBCUtils--获取连接和归还连接
|
/* * 利用c3p0连接池创建连接 * */public class JDBCUtils { private JDBCUtils(){ } private static ComboPooledDataSource source = new ComboPooledDataSource();; /** * 获取一个数据源对象 */ public static ComboPooledDataSource getPool(){ return source; } /** * 使用数据源获取一个连接 * @return 连接对象 * @throws SQLException */ public static Connection getConnection() throws SQLException{ return source.getConnection(); } /** * 关闭资源,归还连接 * @param conn 用户传入的连接对象 * @param stat 用户传入的传输器对象 * @param rs 用户传入的结果集对象 */ public static void close(Connection conn,Statement stat,ResultSet rs){ if(rs != null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ rs = null; } } if(stat != null){ try { stat.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ stat = null; } } |
|
if(conn != null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ conn = null; } } } } |
- 引入所需jar包:
- 引入c3p0的配置文件,并修改其中的数据库名称
i. 内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/easymall</property>
<property name="user">root</property>
<property name="password">root</property> </default-config>
e. 检验用户名是否(</c3p0-config>)存在:
|
Connection conn = null; PreparedStatement stat = null; ResultSet rs = null; //实现一个工具类创建连接 try { conn = JDBCUtils.getConnection(); stat = conn.prepareStatement("select * from user where username = ?"); stat.setString(1, username); rs = stat.executeQuery(); //如果rs中有数据则证明用户名存在提示用户重新注册 if(rs.next()){ request.setAttribute("msg", "用户名已存在"); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; }else{ //如果用户名不存在则完成注册 //插入用户传入的数据 stat = conn.prepareStatement("insert into user values(null,?,?,?,?)"); stat.setString(1, username); stat.setString(2, password); |
|
stat.setString(3, nickname); stat.setString(4, email); stat.executeUpdate(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ JDBCUtils.close(conn, stat, rs); } |
- 修改regist.jsp页面
在table的第一行添加如下内容:
|
<tr > <td class="tds" colspan="2" style="text-align:center" > <font color='red'> <%=request.getAttribute("msg")== null?"":request.getAttribute("msg") %> </font> </td> </tr> |
- 在regist.jsp页面中添加如下代码:、
- 添加jQuery函数库:在webRoot下新建一个js目录,其中添加jquery-1.4.2.js文件。在head标签中书写如下代码:
<script type="text/javascript" src="js/jquery-1.4.2.js">
</script>
- 添加js代码:
|
var formObj = { checkForm : function(){ var canSub = true; //非空校验 canSub = this.checkNull("username","用户名不能为空!") && canSub; canSub = this.checkNull("password","密码不能为空!") && canSub; canSub = this.checkNull("password2","确认密码不能为空!") && canSub; canSub = this.checkNull("nickname","昵称不能为空!") && canSub; canSub = this.checkNull("email","邮箱不能为空!") && canSub; canSub = this.checkNull("valistr","验证码不能为空!") && canSub; //密码一致性校验 canSub = this.checkPassword() && canSub; //邮箱格式校验 canSub = this.checkEmail() && canSub; return canSub; }, checkEmail : function(){ var reg = /\w+@\w+(\.\w+)+/; var email = $("input[name='email']").val(); if(!reg.test(email)){ this.setMsg("email", "邮箱格式不正确"); //如果邮箱格式不正确则返回false值,阻止用户提交。 return false; } //如果邮箱格式正确则返回true值,阻止用户提交。 |
|
return true; }, checkPassword : function(){ var password = $("input[name='password']").val(); var password2 = $("input[name='password2']").val(); if(password != password2){ this.setMsg("password2", "两次密码不一致!"); //如果用户密码不一致则返回false值,阻止用户提交。 return false; } //如果用户两次密码一致,则允许用户提交。 return true; }, checkNull : function(name,msg){ var tag = $("input[name='"+name+"']").val(); //清空消息,只需要将msg书写双引号就可以了 this.setMsg(name, ""); if(tag == ""){ this.setMsg(name,msg); //如果用户信息为空则返回false值,阻止用户提交。 return false; } //如果用户信息不为空则返回true值,阻止用户提交。 return true; }, //消息提示方式,将用户所需提示信息提取成一个方法,方便使用。 setMsg : function(name,msg){ $("input[name='"+name+"']").nextAll("span").text(msg).css("color","red"); } } //文档就绪事件 $(function(){ //为页面中的input框绑定离焦事件 $("input[name='username']").blur(function(){ formObj.checkNull("username","用户名不能为空!"); }); $("input[name='password']").blur(function(){ formObj.checkNull("password","密码不能为空!"); }); $("input[name='password2']").blur(function(){ formObj.checkNull("password2","确认密码不能为空!"); formObj.checkPassword(); }); $("input[name='nickname']").blur(function(){ formObj.checkNull("nickname","昵称不能为空!"); }); $("input[name='email']").blur(function(){ formObj.checkNull("email","邮箱不能为空!"); formObj.checkEmail(); }); $("input[name='valistr']").blur(function(){ formObj.checkNull("valistr","验证码不能为空!"); }); }); |
添加验证码
- 修改regist.jsp页面
|
<tr> <td <td> <input <img <span></span> </td> </tr> |
- 将工具类VarifyCode.java文件放入cn.tedu.utils包中
- 创建一个ValidateServlet,在其中添加代码如下:
|
//控制浏览器不能使用缓存,如果使用缓存则图片不会重新加载, //可能会造成图片和真正验证码信息不一致。 response.setHeader("Cache-control", //创建一个验证码图片 VerifyCode vc = vc.drawImage(response.getOutputStream()); //获取自动生成的纯文本验证码 String code = vc.getCode(); // System.out.println("执行成功~!"); |
- regist.jsp页面中添加js代码:以下代码添加在文档就绪事件中。
|
//为图片添加单击事件 $("#img").click(function(){ var var time = date.toLocaleString(); //加载验证码servlet //在加载过程中,由于src中的值没有变化,所以会导致图片不更新, //如果不添加这个时间值,则每次都会被认为是一个没有变化的请求路径。 $(this).attr("src","<%=request.getContextPath()%>/ValidateServlet?time="+time); }); |
EasyMall注册功能
2019年4月10日 8:58
1. 环境搭建
- 创建一个EasyMall的web应用
- 配置www.easymall.com网站,并配置为缺省的虚拟主机,将EasyMall配
置为缺省的web应用,在配置index.jsp为缺省的主页。
- 配置web应用:在myeclipse中创建一个web工程EasyMall。
缺省主页:
在web应用中的web.xml中配置如下内容:
- 配置虚拟主机:
- 在[tomcat]/conf/server.xml中配置一个<Host>标签:配置内容如下:
<Host name="www.easymall.com" appBase="D:/www.easymall.com"></Host>、
- 添加缺省虚拟主机,配置如下:
<Engine name="Catalina" defaultHost="www.easymall.com">
iii. 配置hosts文件:
C:\Windows\System32\drivers\etc\hosts
配置内容如下:
127.0.0.1 www.easymall.com
e. 将web应用部署到easymall网站的虚拟主机目录中:
i. 选择发布按钮:
发布web应用时,选择<Custom Location>选项,然后下方的路径变为可修改,修改其中内容为:
D:\www.eaysmall.com\ROOT
这时就会将web应用部署到easymall网站管理的虚拟主机目录下,并且web应用名称改为了ROOT,会作为缺省web应用来使用。
- 页面部署
- easymall网站整体都是由三部分组成,所以导入课前资料中的三部分资料。
i. 将课前资料中head、index、foot目录中全部内容复制粘贴到webroot 目录下,如果出现覆盖,直接选择yes to all.
- 页面分成三部分的原因:
i. 其中头、尾两部分需要经常使用,如果在每一个页面当中都添加上头和为十分繁琐,所以可以通过单独将头和尾提取出,在各个页面分别引入的方式,来降低代码的冗余。
- 修改html页面为jsp页面将三个页面合成一个页面显示: i. 静态引入(静态包含)
- 创建一个index.jsp页面,删除其中除了第一行以外的全部内容
- 将index.html中的内容全部赋值粘贴到index.jsp的第一行之下。
- 将index.html页面删除。
- 剩下的foot、head页面操作与以上3步相同。
在index.jsp中body标签内添加如下内容:
<%@include file="_head.jsp"%>
在body结束标签之上添加如下内容:
<%@include file="_foot.jsp"%>
- regist页面操作
- 创建一个regist.jsp页面,删除其中除了第一行以外的全部内容
- 将regist.html中的内容全部赋值粘贴到regist.jsp的第一行之下。
- 将regist.html页面删除。
- 修改_head.jsp的注册超链接
在_head.jsp中找到注册的超链接按钮,修改其中的href属性值为如下内容:
<a href="<%=request.getContextPath() %>/regist.jsp">注册</a>
- 修改regist.jsp页面
a. 修改form标签中如下内容:
<form action="<%=request.getContextPath() %>/RegistServlet" method="POST">
- 创建RegistServlet.java文件
其中书写如下内容:
|
//1.乱码处理 //响应数据乱码处理 response.setContentType("text/html;charset=utf-8"); //请求乱码处理 request.setCharacterEncoding("utf-8"); //2.获取数据 String username = request.getParameter("username"); String password = request.getParameter("password"); String password2 = request.getParameter("password2"); String nickname = request.getParameter("nickname"); String email = request.getParameter("email"); String valistr = request.getParameter("valistr"); //3.校验 //非空校验 if(WebUtils.isNull(username)){ request.setAttribute("msg", "用户名不能为空"); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; } if(WebUtils.isNull(password)){ request.setAttribute("msg", "密码不能为空"); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; } (校验全部用户信息) //密码一致性 //邮箱格式校验 //验证码校验 //4.注册 //用户名是否存在校验 //如果用户名存在应该拒绝用户注册,提示用户名已存在 //如果用户名不存在完成注册 //5.注册完成,页面跳转 -- 跳转到首页 response.getWriter().write("<h1 align='center'><font color='red'>恭喜注册成功,3秒之后跳转回首页</font></h1>"); response.setHeader("refresh", "3;url=http://www.easymall.com"); |
- 添加用户
- 创建一个easymall数据库,向其中添加数据。通过课前资料中的sql脚本文件添加。
- 创建一个工具类JDBCUtils--获取连接和归还连接
|
/* * 利用c3p0连接池创建连接 * */public class JDBCUtils { private JDBCUtils(){ } private static ComboPooledDataSource source = new ComboPooledDataSource();; /** * 获取一个数据源对象 */ public static ComboPooledDataSource getPool(){ return source; } /** * 使用数据源获取一个连接 * @return 连接对象 * @throws SQLException */ public static Connection getConnection() throws SQLException{ return source.getConnection(); } /** * 关闭资源,归还连接 * @param conn 用户传入的连接对象 * @param stat 用户传入的传输器对象 * @param rs 用户传入的结果集对象 */ public static void close(Connection conn,Statement stat,ResultSet rs){ if(rs != null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ rs = null; } } if(stat != null){ try { stat.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ stat = null; } } |
|
if(conn != null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ conn = null; } } } } |
- 引入所需jar包:
- 引入c3p0的配置文件,并修改其中的数据库名称
i. 内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/easymall</property>
<property name="user">root</property>
<property name="password">root</property> </default-config>
e. 检验用户名是否(</c3p0-config>)存在:
|
Connection conn = null; PreparedStatement stat = null; ResultSet rs = null; //实现一个工具类创建连接 try { conn = JDBCUtils.getConnection(); stat = conn.prepareStatement("select * from user where username = ?"); stat.setString(1, username); rs = stat.executeQuery(); //如果rs中有数据则证明用户名存在提示用户重新注册 if(rs.next()){ request.setAttribute("msg", "用户名已存在"); request.getRequestDispatcher("/regist.jsp").forward(request, response); return; }else{ //如果用户名不存在则完成注册 //插入用户传入的数据 stat = conn.prepareStatement("insert into user values(null,?,?,?,?)"); stat.setString(1, username); stat.setString(2, password); |
|
stat.setString(3, nickname); stat.setString(4, email); stat.executeUpdate(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ JDBCUtils.close(conn, stat, rs); } |
- 修改regist.jsp页面
在table的第一行添加如下内容:
|
<tr > <td class="tds" colspan="2" style="text-align:center" > <font color='red'> <%=request.getAttribute("msg")== null?"":request.getAttribute("msg") %> </font> </td> </tr> |
- 在regist.jsp页面中添加如下代码:、
- 添加jQuery函数库:在webRoot下新建一个js目录,其中添加jquery-1.4.2.js文件。在head标签中书写如下代码:
<script type="text/javascript" src="js/jquery-1.4.2.js">
</script>
- 添加js代码:
|
var formObj = { checkForm : function(){ var canSub = true; //非空校验 canSub = this.checkNull("username","用户名不能为空!") && canSub; canSub = this.checkNull("password","密码不能为空!") && canSub; canSub = this.checkNull("password2","确认密码不能为空!") && canSub; canSub = this.checkNull("nickname","昵称不能为空!") && canSub; canSub = this.checkNull("email","邮箱不能为空!") && canSub; canSub = this.checkNull("valistr","验证码不能为空!") && canSub; //密码一致性校验 canSub = this.checkPassword() && canSub; //邮箱格式校验 canSub = this.checkEmail() && canSub; return canSub; }, checkEmail : function(){ var reg = /\w+@\w+(\.\w+)+/; var email = $("input[name='email']").val(); if(!reg.test(email)){ this.setMsg("email", "邮箱格式不正确"); //如果邮箱格式不正确则返回false值,阻止用户提交。 return false; } //如果邮箱格式正确则返回true值,阻止用户提交。 |
|
return true; }, checkPassword : function(){ var password = $("input[name='password']").val(); var password2 = $("input[name='password2']").val(); if(password != password2){ this.setMsg("password2", "两次密码不一致!"); //如果用户密码不一致则返回false值,阻止用户提交。 return false; } //如果用户两次密码一致,则允许用户提交。 return true; }, checkNull : function(name,msg){ var tag = $("input[name='"+name+"']").val(); //清空消息,只需要将msg书写双引号就可以了 this.setMsg(name, ""); if(tag == ""){ this.setMsg(name,msg); //如果用户信息为空则返回false值,阻止用户提交。 return false; } //如果用户信息不为空则返回true值,阻止用户提交。 return true; }, //消息提示方式,将用户所需提示信息提取成一个方法,方便使用。 setMsg : function(name,msg){ $("input[name='"+name+"']").nextAll("span").text(msg).css("color","red"); } } //文档就绪事件 $(function(){ //为页面中的input框绑定离焦事件 $("input[name='username']").blur(function(){ formObj.checkNull("username","用户名不能为空!"); }); $("input[name='password']").blur(function(){ formObj.checkNull("password","密码不能为空!"); }); $("input[name='password2']").blur(function(){ formObj.checkNull("password2","确认密码不能为空!"); formObj.checkPassword(); }); $("input[name='nickname']").blur(function(){ formObj.checkNull("nickname","昵称不能为空!"); }); $("input[name='email']").blur(function(){ formObj.checkNull("email","邮箱不能为空!"); formObj.checkEmail(); }); $("input[name='valistr']").blur(function(){ formObj.checkNull("valistr","验证码不能为空!"); }); }); |
添加验证码
- 修改regist.jsp页面
|
<tr> <td <td> <input <img <span></span> </td> </tr> |
- 将工具类VarifyCode.java文件放入cn.tedu.utils包中
- 创建一个ValidateServlet,在其中添加代码如下:
|
//控制浏览器不能使用缓存,如果使用缓存则图片不会重新加载, //可能会造成图片和真正验证码信息不一致。 response.setHeader("Cache-control", //创建一个验证码图片 VerifyCode vc = vc.drawImage(response.getOutputStream()); //获取自动生成的纯文本验证码 String code = vc.getCode(); // System.out.println("执行成功~!"); |
- regist.jsp页面中添加js代码:以下代码添加在文档就绪事件中。
|
//为图片添加单击事件 $("#img").click(function(){ var var time = date.toLocaleString(); //加载验证码servlet //在加载过程中,由于src中的值没有变化,所以会导致图片不更新, //如果不添加这个时间值,则每次都会被认为是一个没有变化的请求路径。 $(this).attr("src","<%=request.getContextPath()%>/ValidateServlet?time="+time); }); |
处理浏览器缓存
response.setHeader("Cache-control", "no-cache");
response.setDateHeader("Expires", -1);
EasyMall注册功能的更多相关文章
- python实现软件的注册功能(机器码+注册码机制)
http://www.cnblogs.com/cquptzzq/p/5940583.html 一.前言: 目的:完成已有python图像处理工具的注册功能 功能:用户运行程序后,通过文件自动检测认证状 ...
- Winform 注册机通用软件注册功能之建立有效的软件保护机制
本文转载:http://www.cnblogs.com/umplatform/archive/2013/01/23/2873001.html 众所周知,一些共享软件往往提供给使用者的是一个功能不受限制 ...
- springMVC+Java验证码完善注册功能
这篇文章简单的写了一个java验证码,为之前写过的springMVC注册功能加上验证码,验证码的作用就不多说了,防止机器人程序恶意注册什么的.. 其中User.java,加上了password和cod ...
- gitlab 取消注册功能
gitlab 默认安装完成以后是允许用户注册,公司内部使用所以准备禁用了注册功能,只允许管理员从后台开通权限: 1.进入"Admin Area" 2.在左边菜单栏最低下点击&quo ...
- 7、ABPZero系列教程之拼多多卖家工具 修改注册功能
本篇开始进入重头戏,之前的几篇文章都是为了现在的功能作准备.前面教程已经讲到修改User表结构,接下来就需要修改注册逻辑代码. 注册页面 修改Register.cshtml,备注如下代码: 文件路径: ...
- Node.js基础学习四之注册功能
前言:在Node.js学习(二)和(三)中介绍了如何在Node.js 中获取登录的用户名和密码与数据库进行验证并返回数据给客户端 需求:实现注册功能 为了区分登录和注册是两个不同的请求,在端口后面加上 ...
- python作业(二)实现注册功能和登陆功能
#1.实现注册功能 输入:username.passowrd,cpassowrd #最多可以输错3次 #3个都不能为空 #用户名长度最少6位, 最长20位,用户名不能重复 #密码长度最少8位,最长15 ...
- php post接口,注册功能
功能描述:仅输入手机号和密码,实现注册功能.手机号有简单的验证,不可重复输入,否则会报500错误. 在使用 RestClient 进行post测试时,如果你把参数放在 [Headers]区块了,那么, ...
- SpringBoot注册登录(三):注册--验证账号密码是否符合格式及后台完成注册功能
SpringBoot注册登录(一):User表的设计点击打开链接SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接 SpringBoot注册登录(三):注册 ...
随机推荐
- Redis的基本知识
Redis: 1. 概念:开源的高性能键值对数据库, 提供多种键值对数据类型:字符串.(离散)哈希.列表.集合.有序集合类型 内部储存与持久化:内存的读写速度远高于磁盘:自身提供持久化机制(RDB.A ...
- linux - man 提示:-bash: man: command not found
在执行man命令时,提示:-bash: man: command not found 原因1:没有配置path环境 解决:vi /etc/profile JAVA_HOME=/usr/java/jdk ...
- python字符串常用操作
#### 1) 判断类型 - 9 | 方法 | 说明 || --- | --- || string.isspace() | 如果 string 中只包含空格,则返回 True | | string.i ...
- Java与C/C++有什么区别?
(1)Java为解释型语言,其运行过程为:程序源代码经过Java编译器编译成字节码,然后由JVM解释执行.而C/C++为编译型语言,源代码经过编译和链接生成可执行的二进制代码,因此,Java的执行速度 ...
- for循环:用turtle画一颗五角星2
import turtle turtle.setup(600,400,0,0) turtle.bgcolor('red') turtle.pencolor('yellow') turtle.fillc ...
- springboot +redis配置
springboot +redis配置 pom依赖 <dependency> <groupId>org.springframework.boot</groupId> ...
- dos脚本7章
一.交互界面设计 没啥说的,看看高手设计的菜单界面吧: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...
- C# 检查数字
#region 检查数字 public bool IsNumeric(string value) { bool result; try { int x = int.Parse(value); resu ...
- erlang link 与 monitor
erlang设计中,通常会有这样一个需求: 某一个进程必须依赖于令一个进程的概念,在这样的情况下就必须对两个进程之间建立一个监控或者说连接关系,以监听对方的死亡情况. erlang 提供了两个这样的方 ...
- token简单的使用
这里对token的简单的使用进行测试和描述 其原理就不在这里描述了! 具体测试流程:用户在前端请求登录——>在后台验证通过后根据用户ID生成token——>请求返回时将token带给前端并 ...