asp简单的网站怎么做,广告设计公司深圳品牌设计公司,网站开发支持上传gif,usp理论案例100例目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 login.jsp 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍#xff1a;CSDN认证博客专家#xff0c;CSDN平台Java领域优… 目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 login.jsp 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍CSDN认证博客专家CSDN平台Java领域优质创作者全网30w粉丝超300w访问量专注于大学生项目实战开发、讲解和答疑辅导对于专业性数据证明一切 主要项目javaweb、ssm、springboot、vue、小程序、python、安卓、uniapp等设计与开发,万套源码成品可供选择学习。 文末获取源码
JavaWeb美食推荐管理系统(源码数据库文档) 项目描述 网络的快速发展从根本上更改了世界各组织的管理方式自二十世纪九十年代开始我国的政府、企事业等单位就设想可以通过互联网系统来进行管理信息。由于以前存在各方面的原因比如网络普及度低、用户不接受、互联网的相关法律法规也不够完善、开发技术也不够成熟等阻碍了互联网在各大机构中的发展速度。进入二十一世纪以后我国经济有了快速的发展限制机构管理的各个难题逐一被解决国内各大机构都加入到了电子信息化的管理模式中来。 以往的美食推荐管理系统相关信息管理都是工作人员手工统计。这种方式不但时效性低而且需要查找和变更的时候很不方便。随着科学的进步技术的成熟计算机信息化也日新月异的发展社会也已经深刻的认识计算机功能非常的强大计算机已经进入了人类社会发展的各个领域并且发挥着十分重要的作用。本系统利用网络沟通、计算机信息存储管理有着与传统的方式所无法替代的优点。比如计算检索速度特别快、可靠性特别高、存储容量特别大、保密性特别好、可保存时间特别长、成本特别低等。在工作效率上能够得到极大地提高延伸至服务水平也会有好的收获有了网络在线美食推荐管理系统的各方面的管理更加科学和系统更加规范和简便。 运行环境 jdk8mysql5.7IntelliJ IDEAtomcat8maven3 项目技术(必填) jsphtmlcssjsjquerySpringSpringMvcMybatis 2 项目截图 JavaWeb美食推荐管理系统 3 核心代码
3.1 Controller package com.controller;import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;/*** 登录相关*/
RequestMapping(users)
RestController
public class UserController{Autowiredprivate UserService userService;Autowiredprivate TokenService tokenService;/*** 登录*/IgnoreAuthPostMapping(value /login)public R login(String username, String password, String captcha, HttpServletRequest request) {UserEntity user userService.selectOne(new EntityWrapperUserEntity().eq(username, username));if(usernull || !user.getPassword().equals(password)) {return R.error(账号或密码不正确);}String token tokenService.generateToken(user.getId(),username, users, user.getRole());return R.ok().put(token, token);}/*** 注册*/IgnoreAuthPostMapping(value /register)public R register(RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapperUserEntity().eq(username, user.getUsername())) !null) {return R.error(用户已存在);}userService.insert(user);return R.ok();}/*** 退出*/GetMapping(value logout)public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok(退出成功);}/*** 密码重置*/IgnoreAuthRequestMapping(value /resetPass)public R resetPass(String username, HttpServletRequest request){UserEntity user userService.selectOne(new EntityWrapperUserEntity().eq(username, username));if(usernull) {return R.error(账号不存在);}user.setPassword(123456);userService.update(user,null);return R.ok(密码已重置为123456);}/*** 列表*/RequestMapping(/page)public R page(RequestParam MapString, Object params,UserEntity user){EntityWrapperUserEntity ew new EntityWrapperUserEntity();PageUtils page userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put(data, page);}/*** 列表*/RequestMapping(/list)public R list( UserEntity user){EntityWrapperUserEntity ew new EntityWrapperUserEntity();ew.allEq(MPUtil.allEQMapPre( user, user)); return R.ok().put(data, userService.selectListView(ew));}/*** 信息*/RequestMapping(/info/{id})public R info(PathVariable(id) String id){UserEntity user userService.selectById(id);return R.ok().put(data, user);}/*** 获取用户的session用户信息*/RequestMapping(/session)public R getCurrUser(HttpServletRequest request){Integer id (Integer)request.getSession().getAttribute(userId);UserEntity user userService.selectById(id);return R.ok().put(data, user);}/*** 保存*/PostMapping(/save)public R save(RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapperUserEntity().eq(username, user.getUsername())) !null) {return R.error(用户已存在);}userService.insert(user);return R.ok();}/*** 修改*/RequestMapping(/update)public R update(RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);UserEntity u userService.selectOne(new EntityWrapperUserEntity().eq(username, user.getUsername()));if(u!null u.getId()!user.getId() u.getUsername().equals(user.getUsername())) {return R.error(用户名已存在。);}userService.updateById(user);//全部更新return R.ok();}/*** 删除*/RequestMapping(/delete)public R delete(RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}
3.2 Service /*** 系统用户*/
public interface UserService extends IServiceUserEntity {PageUtils queryPage(MapString, Object params);ListUserEntity selectListView(WrapperUserEntity wrapper);PageUtils queryPage(MapString, Object params,WrapperUserEntity wrapper);}
3.3 Dao
/*** 用户*/
public interface UserDao extends BaseMapperUserEntity {ListUserEntity selectListView(Param(ew) WrapperUserEntity wrapper);ListUserEntity selectListView(Pagination page,Param(ew) WrapperUserEntity wrapper);}
3.4 spring-mybatis.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:txhttp://www.springframework.org/schema/txxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd!-- 配置数据源 --bean namedataSource classcom.alibaba.druid.pool.DruidDataSource init-methodinit destroy-methodcloseproperty nameurl value${jdbc_url}/property nameusername value${jdbc_username}/property namepassword value${jdbc_password}/!-- 初始化连接大小 --property nameinitialSize value0/!-- 连接池最大使用连接数量 --property namemaxActive value20/!-- 连接池最大空闲 --property namemaxIdle value20/!-- 连接池最小空闲 --property nameminIdle value0/!-- 获取连接最大等待时间 --property namemaxWait value60000/property namevalidationQuery value${validationQuery}/property nametestOnBorrow valuefalse/property nametestOnReturn valuefalse/property nametestWhileIdle valuetrue/!-- 配置间隔多久才进行一次检测检测需要关闭的空闲连接单位是毫秒 --property nametimeBetweenEvictionRunsMillis value60000/!-- 配置一个连接在池中最小生存的时间单位是毫秒 --property nameminEvictableIdleTimeMillis value25200000/!-- 打开removeAbandoned功能 --property nameremoveAbandoned valuetrue/!-- 1800秒也就是30分钟 --property nameremoveAbandonedTimeout value1800/!-- 关闭abanded连接时输出错误日志 --property namelogAbandoned valuetrue/!-- 监控数据库 --property namefilters valuemergeStat//bean!-- Spring整合Mybatis更多查看文档http://mp.baomidou.com --bean idsqlSessionFactory classcom.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBeanproperty namedataSource refdataSource/!-- 自动扫描Mapping.xml文件 --property namemapperLocations valueclasspath:mapper/*.xml/property nameconfigLocation valueclasspath:mybatis/mybatis-config.xml/property nametypeAliasesPackage valuecom..model.*/property nametypeEnumsPackage valuecom.model.enums/property namepluginsarray!-- 分页插件配置 --bean idpaginationInterceptor classcom.baomidou.mybatisplus.plugins.PaginationInterceptor/bean/array/property!-- 全局配置注入 --property nameglobalConfig refglobalConfig //beanbean idglobalConfig classcom.baomidou.mybatisplus.entity.GlobalConfiguration!--AUTO-0(数据库ID自增)INPUT-1(用户输入ID)ID_WORKER-2(全局唯一ID)UUID-3(全局唯一ID)--property nameidType value2 /!--MYSQL-mysqlORACLE-oracleDB2-db2H2-h2HSQL-hsqlSQLITE-sqlitePOSTGRE-postgresqlSQLSERVER2005-sqlserver2005SQLSERVER-sqlserver--!-- Oracle需要添加该项 --!-- property namedbType valueoracle / --!-- 全局表为下划线命名设置 true --!-- property namedbColumnUnderline valuetrue / --property namemetaObjectHandlerbean classcom.config.MyMetaObjectHandler //property/bean!-- MyBatis 动态扫描 --bean classorg.mybatis.spring.mapper.MapperScannerConfigurerproperty namebasePackage valuecom.dao//bean!-- 配置事务管理 --bean nametransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource//bean!-- 事务管理 属性 --tx:advice idtransactionAdvice transaction-managertransactionManagertx:attributestx:method nameadd* propagationREQUIRED/tx:method nameappend* propagationREQUIRED/tx:method namesave* propagationREQUIRED/tx:method nameupdate* propagationREQUIRED/tx:method namemodify* propagationREQUIRED/tx:method nameedit* propagationREQUIRED/tx:method nameinsert* propagationREQUIRED/tx:method namedelete* propagationREQUIRED/tx:method nameremove* propagationREQUIRED/tx:method namerepair propagationREQUIRED/tx:method nameget* propagationREQUIRED read-onlytrue/tx:method namefind* propagationREQUIRED read-onlytrue/tx:method nameload* propagationREQUIRED read-onlytrue/tx:method namesearch* propagationREQUIRED read-onlytrue/tx:method namedatagrid* propagationREQUIRED read-onlytrue/tx:method name* propagationREQUIRED//tx:attributes/tx:advice!-- 配置切面 --aop:configaop:pointcut idtransactionPointcut expressionexecution(* com.service..*.*(..))/aop:advisor pointcut-reftransactionPointcut advice-reftransactionAdvice//aop:config/beans
3.5 spring-mvc.xml ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdmvc:default-servlet-handler/!-- Controller包(自动注入) --context:component-scan base-packagecom.controller/!-- FastJson注入 --mvc:annotation-driven!-- mvc:message-converters register-defaultstrue避免IE执行AJAX时,返回JSON出现下载文件FastJsonbean idfastJsonHttpMessageConverterclasscom.alibaba.fastjson.support.spring.FastJsonHttpMessageConverterproperty namesupportedMediaTypeslist这里顺序不能反一定先写text/html,不然ie下出现下载提示valuetext/html;charsetUTF-8/valuevalueapplication/json;charsetUTF-8/value/list/propertyproperty namefeaturesarray value-typecom.alibaba.fastjson.serializer.SerializerFeature避免循环引用valueDisableCircularReferenceDetect/value是否输出值为null的字段valueWriteMapNullValue/value数值字段如果为null,输出为0,而非nullvalueWriteNullNumberAsZero/value字符类型字段如果为null,输出为,而非null valueWriteNullStringAsEmpty/valueList字段如果为null,输出为[],而非nullvalueWriteNullListAsEmpty/valueBoolean字段如果为null,输出为false,而非nullvalueWriteNullBooleanAsFalse/value/array/property/bean/mvc:message-converters --/mvc:annotation-driven!-- 静态资源配置 --mvc:resources mapping/resources/** location/resources//!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --bean classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/WEB-INF/pages//property namesuffix value.jsp//bean!-- 拦截器配置 --mvc:interceptorsmvc:interceptormvc:mapping path/**/mvc:exclude-mapping path/upload/bean classcom.interceptor.AuthorizationInterceptor//mvc:interceptor/mvc:interceptors!-- 上传限制 --bean idmultipartResolver classorg.springframework.web.multipart.commons.CommonsMultipartResolver!-- 上传文件大小限制为31M31*1024*1024 --property namemaxUploadSize value32505856//bean/beans
3.5 login.jsp
% page languagejava contentTypetext/html; charsetUTF-8pageEncodingUTF-8%
!DOCTYPE html
htmlhead
meta charsetutf-8
title登陆/title
meta nameviewport contentwidthdevice-width, initial-scale1.0
meta namedescription content
meta nameauthor content!-- Le styles --
script typetext/javascriptsrc${pageContext.request.contextPath}/resources/assets2/js/jquery.min.js/script!-- link relstylesheet href${pageContext.request.contextPath}/resources/assets2/css/style.css --
link relstylesheethref${pageContext.request.contextPath}/resources/assets2/css/loader-style.css
link relstylesheethref${pageContext.request.contextPath}/resources/assets2/css/bootstrap.css
link relstylesheethref${pageContext.request.contextPath}/resources/assets2/css/signin.css!-- HTML5 shim, for IE6-8 support of HTML5 elements --
!--[if lt IE 9]script srchttp://html5shim.googlecode.com/svn/trunk/html5.js/script![endif]--
!-- Fav and touch icons --
link relshortcut iconhref${pageContext.request.contextPath}/resources/assets2/ico/minus.png
/head
stylehtml {width: 100%;height: 100%;}body {background-image: url(http://codegen.caihongy.cn/20210205/f4f80f5323bf4b1992cb9fddd10b0b25.jpg) !important;height: 100vh;background-position: center center;background-size: cover;background-repeat: no-repeat;overflow: hidden !important;width: 100%;height: 100%;}.container {padding: 0;margin: 0;display: flex;height: 100%;width: 100%;justify-content: center;align-items: center;}#login-wrapper {display: flex;flex-direction: column;position: inherit;height: auto;width: 400px;margin: 0;padding: 20px 0px 20px 0;border-radius: 32px;border-width: 0;border-style: solid;border-color: rgba(0,0,0,.3);background-color: rgba(255, 255, 255, 1);box-shadow: 0 0 0px rgba(78, 115, 223, 1);}#login-wrapper h1 {line-height: 60px;width: 100%;color: rgba(78, 115, 223, 1);font-size: 20px;margin: 0px 0px ;padding: 0 10px;border-radius: 0;border-width: 0;border-style: solid;border-color: rgba(0,0,0,.3);background-color: rgba(30, 144, 255, 0);box-shadow: 0 0 6px rgba(30, 144, 255, 0);text-align: center;}#loginForm .form-group-l-r {display: flex;flex-wrap: wrap;}#loginForm .form-group {display: flex;align-items: center;flex-wrap: wrap;height: auto;width: 80%;margin: 0 auto;padding: 0 0 10px 0;border-radius: 0;border-width: 0;border-style: solid;border-color: rgba(0,0,0,1);background-color: #fff;box-shadow: 0 0 6px rgba(255,0,0,0);}#loginForm .form-group .label {width: 72px;line-height: 44px;margin: 0;color: rgba(78, 115, 223, 1);font-size: 16px;padding: 0;border-radius: 0;border-width: 0;border-style: solid;border-color: rgba(0,0,0,0);background-color: transparent;box-shadow: 0 0 6px rgba(255,0,0,0);text-align: left;}#loginForm .form-group .form-control-i {width: 100%;height: 44px;margin: 0;color: rgba(78, 115, 223, 1);font-size: 14px;padding: 0 10px;border-radius: 8px;border-width: 1px;border-style: solid;border-color: rgba(78, 115, 223, 1);background-color: #fff;box-shadow: 0 0 0px rgba(30, 144, 255, .5);text-align: left;}#loginForm .form-group .form-control-i:focus {outline: 0 none;}#loginForm .form-group-r {display: flex;align-items: center;width: 80%;height: 44px;margin: 0 auto;padding: 0;border-radius: 0;border-width: 0;border-style: solid;border-color: rgba(0,0,0,1);background-color: #fff;box-shadow: 0 0 6px rgba(255,0,0,0);}#loginForm .form-group-r .checkbox {margin: 0 10px 0 0;padding: 0;display: flex;align-items: center;}#loginForm .form-group-r .checkbox label {color: #606266;font-size: 14px;margin: 0;margin-top: -1px;}#loginForm .form-group-r .checkbox.active label {color: rgba(78, 115, 223, 1);font-size: 14px;}#loginForm .form-group-r .checkbox input {margin: 0;margin-right: 4px;}#loginForm button.pull-right {outline: none;width: 100%;height: 44px;margin: 10px 3% 10px 7%;color: #fff;font-size: 16px;padding: 0 10px;border-radius: 32px 32px 32px 32px;border-width: 0;border-style: solid;border-color: #ccc;background-color: rgba(78, 115, 223, 1);box-shadow: 0 0 0px rgba(255, 0, 0, .5);}#loginForm a.btn-register {display: inline-block;width: 100%;height: 44px;margin: 10px 3% 10px 6%;color: #fff;font-size: 16px;padding: 10px;border-radius: 32px 32px 32px 32px;border-width: 0;border-style: solid;border-color: #ccc;background-color: rgba(76, 141, 174, 1);box-shadow: 0 0 6px rgba(30, 144, 255, .5);display: flex;justify-content: center;align-items: center;text-decoration: none;}#loginForm .codes {display: none;}#loginForm .codes input {width: calc(100% - 84px);height: 44px;margin: 0;color: #1e90ff;font-size: 14px;padding: 0 10px;border-radius: 0;border-width: 1px;border-style: solid;border-color: #1e90ff;background-color: #fff;box-shadow: 0 0 6px rgba(30, 144, 255, 0);outline: none;}#loginForm .codes .nums {width: 84px;height: 44px;margin: 0;color: $template2.back.login.code.nums.color;font-size: $template2.back.login.code.nums.fontSize;padding: 0;border-radius: 0;border-width: 1px 1px 1px 0;border-style: solid;border-color: #1e90ff;background-color: #f5f5f5;box-shadow: 0 0 6px rgba(30, 144, 255, 0);outline: none;}
/style
body!-- Preloader --!-- div idpreloaderdiv idstatusnbsp;/div/div --div classcontainerdiv class idlogin-wrapperh1登陆/h1form idloginForm action methodpostdiv classform-grouplabel classlabel用户名/label input typetext idusername nameusername placeholder用户名classform-control-i required/divdiv classform-grouplabel classlabel密码/label input typepassword namepassword placeholder密码classform-control-i required/divdiv classform-group codesinput styleflex: 1; typetext idcode placeholder请输入验证码div classnums idnums styledisplay: flex;justify-content: center;align-items: center; onclickrandomString()/div/divdiv classform-group-l-rbutton classbtn btn btn-primary pull-right typesubmit onclicklogin()登 录/buttona classbtn-register hrefmodules/yonghu/register.jsp用户注册/a/div /form!-- div classrowdiv classcol-md-4 col-md-offset-4div classaccount-box/div/div/div --/div/div!-- END OF PAPER WRAP --!-- MAIN EFFECT --!--script typetext/javascript src${pageContext.request.contextPath}/resources/assets2/js/preloader.js/script--script typetext/javascriptsrc${pageContext.request.contextPath}/resources/assets2/js/bootstrap.js/script!--script typetext/javascript src${pageContext.request.contextPath}/resources/assets2/js/app.js/script--!--script typetext/javascript src${pageContext.request.contextPath}/resources/assets2/js/load.js/script--!--script typetext/javascript src${pageContext.request.contextPath}/resources/assets2/js/main.js/script--script typetext/javascriptsrc${pageContext.request.contextPath}/resources/js/jquery.form.js/script!--script srchttp://maps.googleapis.com/maps/api/js?sensorfalse typetext/javascript/script --!--script typetext/javascript src${pageContext.request.contextPath}/resources/assets2/js/map/gmap3.js/script --script typetext/javascript% include fileutils/menu.jsp%% include fileutils/baseUrl.jsp%var role ;var accountTableName ;var codes [{num: 1,color: #000,rotate: 10deg,size: 16px}, {num: 2,color: #000,rotate: 10deg,size: 16px}, {num: 3,color: #000,rotate: 10deg,size: 16px}, {num: 4,color: #000,rotate: 10deg,size: 16px}]//渲染角色选择function setRoleOption() {var box document.createElement(div);box.setAttribute(class, form-group-r);for (var i 0; i menus.length; i) {//console.log(menu[i].roleName)var div document.createElement(div);div.setAttribute(class, checkbox);var label document.createElement(label);//label.innerHTML menus[i].roleName;var checkbox document.createElement(input);checkbox.setAttribute(type, radio);checkbox.setAttribute(name, chk);checkbox.setAttribute(value, menus[i].roleName);var attr checkRole( \ menus[i].roleName \,\ menus[i].tableName \);checkbox.setAttribute(onclick, attr);//label.setAttribute(class,checkbox inline);label.innerHTML menus[i].roleName;div.appendChild(checkbox);div.appendChild(label);box.appendChild(div);}$(form .form-group-l-r).before(box);}function checkRole(roleName, tableName) { role roleName;$(#loginForm).attr(action, baseUrl tableName /login);accountTableName tableName;}$(#login-wrapper).on(change, input[typeradio], function () {$(#login-wrapper .form-group-r .checkbox).removeClass(active);$(this).parent().addClass(active);});function login() {if(false) {var arr []for(var i 0;icodes.length;i) {arr.push(codes[i].num)}if(arr.join().toLowerCase() ! $(#code).val().toLowerCase()) {alert(请输入正确的验证码);randomString()window.location.href${pageContext.request.contextPath}/jsp/login.jsp;}}$(#loginForm).ajaxForm(function(res) {if (role || role null) {alert(请选择角色后再登录);} else {if (res.code 0) {alert(登录成功);var username $(#username).val();window.sessionStorage.setItem(accountTableName,accountTableName)window.sessionStorage.setItem(username,username);window.sessionStorage.setItem(token,res.token);window.sessionStorage.setItem(role,role);window.location.href ${pageContext.request.contextPath}/index.jsp;} else {alert(res.msg);}}});}function ready() {setRoleOption();//$(form).attr(action,baseUrl users/login);}document.addEventListener(DOMContentLoaded, ready);function randomString() {var len 4;var chars [a, b, c, d, e, f, g, h, i, j, k,l, m, n, o, p, q, r, s, t, u, v,w, x, y, z, A, B, C, D, E, F, G,H, I, J, K, L, M, N, O, P, Q, R,S, T, U, V, W, X, Y, Z, 0, 1, 2,3, 4, 5, 6, 7, 8, 9]var colors [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f]var sizes [14, 15, 16, 17, 18]var output []for (var i 0; i len; i) {// 随机验证码var key Math.floor(Math.random() * chars.length)codes[i].num chars[key]// 随机验证码颜色var code #for (var j 0; j 6; j) {var key Math.floor(Math.random() * colors.length)code colors[key]}codes[i].color code// 随机验证码方向var rotate Math.floor(Math.random() * 360)var plus Math.floor(Math.random() * 2)if (plus 1) rotate - rotatecodes[i].rotate rotate( rotate deg)// 随机验证码字体大小var size Math.floor(Math.random() * sizes.length)codes[i].size sizes[size] px}var str for(var i 0;icodes.length;i) {str span stylecolor: codes[i].color ;transform: codes[i].rotate ;fontSize: codes[i].size ;padding: 0 3px;display:inline-blockcodes[i].num/span}$(#nums).html().append(str);}randomString();/script/body/html
4 数据库表设计
用户注册实体图如图所示
数据库表的设计如下表
5 文档参考 6 计算机毕设选题推荐
最新计算机软件毕业设计选题大全整理中…
7 源码获取
获取联系方式在文章末尾 如果想入行提升技术的可以看我专栏其他内容