当前位置: 首页 > wzjs >正文

网站建设分金手指专业七杭州市建设工程招标

网站建设分金手指专业七,杭州市建设工程招标,房山区做网站,专业建站网网站运营推广一、核心功能实现 1. 用户注册功能 前端实现 用户名实时校验:通过AJAX异步请求检查用户名是否已存在。 function checkName() {$.ajax({url: /users/checkUserName?uname uname,success: function(resp) {if (resp.code 200) alert("用户名可用");el…

一、核心功能实现

1. 用户注册功能

前端实现
  • 用户名实时校验:通过AJAX异步请求检查用户名是否已存在。

    function checkName() {$.ajax({url: '/users/checkUserName?uname=' + uname,success: function(resp) {if (resp.code == 200) alert("用户名可用");else $("#info").html("<font color='red'>用户名已被注册</font>");}});
    }

  • 密码一致性校验:提交前验证两次输入的密码是否一致

    if (ps != rps) {alert("两次密码输入不一致");return;
    }

  • 表单提交:使用serialize()方法序列化表单数据并发送POST请求。

    $.ajax({url: '/users/register',data: $("#form-reg").serialize(),success: function(resp) {if (resp.code == 200) window.location.href = "/login.html";}
    });

后端实现
  • 控制器层:处理注册请求,返回JSON结果。

    @RestController
    @RequestMapping("/users")
    public class UserController {@PostMapping("/register")public JsonResult register(User user) {boolean flag = userService.register(user);return flag ? new JsonResult(OK) : new JsonResult(FALL);}
    }

  • 服务层:密码加密(MD5加盐)及用户数据持久化。

    public boolean register(User user) {String md5Password = getMd5Password(user.getPassword(), user.getUsername());user.setPassword(md5Password);return userMapper.insert(user) > 0;
    }

  • 数据层:通过MyBatis操作数据库。

    <insert id="register">INSERT INTO t_user (username, password, salt) VALUES (#{username}, #{password}, #{salt});
    </insert>


2. 用户登录功能

前端实现
  • 回车键触发登录:监听键盘事件,回车键提交表单。

    $(window).keydown(function(e) {if (e.keyCode == 13) $("#btn-login").click();
    });

  • 登录请求:提交用户名和密码至后端验证。

    $.ajax({url: '/users/login',data: $("#form-login").serialize(),success: function(resp) {if (resp.code == 200) window.location.href = "/index.html";}
    });

后端实现
  • 控制器层:验证用户信息并存储会话。

    @PostMapping("/login")
    public JsonResult login(User user, HttpSession session) {User dbUser = userService.login(user);session.setAttribute("uid", dbUser.getUid());return new JsonResult(OK);
    }

  • 服务层:校验用户状态与密码。

    public User login(User user) {User dbUser = userMapper.getUserByUsername(user.getUsername());if (dbUser == null) throw new UserNotFoundException("用户不存在");if (!validatePassword(user.getPassword(), dbUser.getSalt(), dbUser.getPassword())) {throw new PasswordNotMatchException("密码错误");}return dbUser;
    }


二、安全与优化策略

1. 密码安全

  • 加密方式:使用MD5加盐(盐值为用户名)加密密码。

    private String getMd5Password(String password, String salt) {for (int i = 0; i < 3; i++) {password = DigestUtils.md5DigestAsHex((salt + password + salt).getBytes());}return password;
    }

  • 改进建议:推荐使用BCrypt等更安全的哈希算法,并生成随机盐值。

2. 防御措施

  • SQL注入防护:通过MyBatis参数绑定(#{param})避免注入。

  • 会话管理:用户登录后通过Session存储UID,敏感操作需校验Session有效性。

  • 输入校验:后端需重复验证用户名和密码格式(如长度、特殊字符)。


三、页面状态管理

1. 动态菜单显示

  • 未登录状态:显示“登录”和“注册”链接。

    if (id == 0) {$("#mymenu").append("<li><a href='/login'>登录</a></li>");
    }

  • 已登录状态:显示用户ID和“退出”按钮。

    if (id != 0) {$("#mymenu").append("<li>用户ID:" + id + "</li>");$("#mymenu").append("<li><a href='javascript:logout()'>退出</a></li>");
    }


四、商品检索功能

1. 前端实现

  • 搜索表单提交:跳转至搜索页并携带参数。

    <form action="/search.html" onsubmit="return validateSearch()"><input type="text" id="search" name="keyword"><button type="submit">搜索</button>
    </form>

  • 解析URL参数:获取关键字并发送请求。

    const keyword = new URLSearchParams(window.location.search).get("keyword");
    $.ajax({url: '/product/search?keyword=' + keyword,success: function(resp) { /* 渲染结果 */ }
    });

2. 后端实现

  • 模糊查询:通过SQL的LIKE实现。

    <select id="searchProducts">SELECT * FROM t_product WHERE title LIKE CONCAT('%', #{keyword}, '%');
    </select>


文章转载自:

http://TugOvmMC.bkppb.cn
http://i6ZMvFko.bkppb.cn
http://2t52EpUO.bkppb.cn
http://u6IzVhoN.bkppb.cn
http://R4mSjH72.bkppb.cn
http://QxsN1R2U.bkppb.cn
http://qbYlToNn.bkppb.cn
http://ugROBpl9.bkppb.cn
http://8MftggEl.bkppb.cn
http://oebPe8HA.bkppb.cn
http://IXMB6TsO.bkppb.cn
http://LjM3T1U9.bkppb.cn
http://0AeqfFqV.bkppb.cn
http://dQy2JV4Q.bkppb.cn
http://hbGbePxG.bkppb.cn
http://7BnpOPDf.bkppb.cn
http://5ZQ2EHWO.bkppb.cn
http://gCda7mJR.bkppb.cn
http://76KpPyzz.bkppb.cn
http://BFwGwdNS.bkppb.cn
http://uXUQogRs.bkppb.cn
http://TDPgr1zd.bkppb.cn
http://wNw1aAne.bkppb.cn
http://61Ks0FR2.bkppb.cn
http://jNvN0KMS.bkppb.cn
http://9vUdKVrr.bkppb.cn
http://qAie2oxv.bkppb.cn
http://FcwWq5rN.bkppb.cn
http://X567IRLU.bkppb.cn
http://9ceAEAHv.bkppb.cn
http://www.dtcms.com/wzjs/628605.html

相关文章:

  • 无锡网站的建设内网网站怎么建设
  • 网站用品哪里进货好黄骅市医院
  • 网站建设非功能需求江苏元鼎建设工程有限公司网站
  • 做程序题的国外网站南京it培训机构
  • 建立网站是什么建立的什么app推广佣金多
  • 微商城网站建设服务俄语网站里做外贸shop
  • 如何更改网站图标私有云 搭建wordpress
  • 盆景网站建设swot分析手机app应用制作
  • 网站开发 怎样做费用结算商业网点的定义
  • 公司网站设计与管理在线视频制作
  • 注册一个网站要多少钱网站中文通用网址域名
  • 南京企业网站制作价格蓝色大气网站源码
  • 网站开发jsp怎么快速刷排名
  • 滨海新区做网站云浮营销建站公司
  • 四模网站凡科网站制作教程
  • 柳市外贸网站建设seo搜索优化招聘
  • 旅游网站建设开题报告乐清市重大新闻
  • 网站维护 推广做外单网站
  • 电商设计参考网站app 网站可以做的免费推广
  • 河北沧州建设官方网站丰城网站建设公司
  • 网站的建设可以起到什么作用水滴保险官方网站
  • 手机网站开发报价做钢材的网站有哪些
  • 建设企业网站的原因wordpress需要备案
  • 网站制作app开发公司长沙定制网站
  • vs2008怎么做网站商务网页设计与制作课后答案
  • 做网站怎么删除图片加盟店排行榜加盟项目排行榜
  • 购物网站做推广厦门企业自助建站
  • frontpage建设网站的图片门户网站建设会议纪要
  • 做简历的网站都有哪些wordpress qq登录微信登录
  • 网站备案去哪用wordpress二级导航栏