用户注册,邮箱激活(1),web前端开发如何自学

//查询出指定名称的用户是否存在

List users = userDao.selectUserByCondition(userTemp);

if (users.size() <= 0) {

throw new RuntimeException(“用户名不存在”);

}

User userInDB = users.get(0);

//比较加密后的密码是否一致

if (MD5Util.encode(user.getPassword(), userInDB.getSalt()).equals(userInDB.getPassword())) {

return userInDB;

} else {

throw new RuntimeException(“密码不正确”);

}

}

}

UserServiceImpl


UserServiceImpl中实现用户注册成功时,发送激活邮件功能。

public class UserServiceImpl implements UserService {

private UserDao userDao = new UserDaoImpl();

@Override

public void regist(User user) throws SQLException {

//保存用户信息到数据库

int insertUserRes = userDao.insertUser(user);

if (insertUserRes >= 1) {

//3.发送激活码到邮箱

String subject = “来自微风商城的激活邮箱”;

String content = “点击如下连接激活账户,如果不能点击请复制到浏览器地址栏访问:http://www.wego.com/userServlet?op=active&code=检验码”;

EmailUtil.send(user.getEmail(), subject, content);

} else {

throw new RuntimeException(“用户注册失败”);

}

}

邮箱激活


@WebServlet(urlPatterns = “/userServlet”)

public class UserServlet extends HttpServlet {

private UserService userService = new UserServiceImpl();

@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String op = request.getParameter(“op”);

switch (op) {

case “regist”:

try {

regist(request, response);

} catch (InvocationTargetException | IllegalAccessException | SQLException e) {

e.printStackTrace();

}

break;

case “login”:

try {

login(request,response);

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (InvocationTargetException e) {

e.printStackTrace();

} catch (SQLException throwables) {

throwables.printStackTrace();

}

break;

default:

break;

}

}

private void login(HttpServletRequest request,HttpServletResponse response) throws IllegalAccessException, InvocationTargetException, SQLException, ServletException, IOException {

//获取用户名和密码

User user = new User();

BeanUtils.populate(user, request.getParameterMap());

user = userService.login(user);

if(user == null){

request.setAttribute(“msg”, “用户名或密码不正确!”);

request.getRequestDispatcher(“/login.jsp”).forward(request, response);

return;

}

// 检查用户激活状态

if(user.getStatus() == 0){

request.setAttribute(“msg”, “用户尚未激活,请到邮箱中进行激活!”);

request.getRequestDispatcher(request.getContextPath()+“/login.jsp”).forward(request, response);

return;

}

request.getSession().setAttribute(“user”,user);//将用户信息添加到Session中

//重定向到主页

response.sendRedirect(request.getContextPath()+“/index.jsp”);

}

/**

  • 用户注册

  • @param request

  • @param response

  • @throws ServletException

  • @throws IOException

*/

private void regist(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, InvocationTargetException, IllegalAccessException, SQLException {

//1.校验验证码

String verifyCode = request.getParameter(“verifyCode”);

String verifyCode0 = request.getSession().getAttribute(“verifyCode”).toString();

if (verifyCode == null || verifyCode0 == null || !verifyCode.equalsIgnoreCase(verifyCode0)) {

request.setAttribute(“msg”, “验证码不正确!”);

request.getRequestDispatcher(“/regist.jsp”).forward(request, response);

return;

}

//2.封装校验数据

User user = new User();

BeanUtils.populate(user, request.getParameterMap());

//3.调用Service注册用户

userService.regist(user);
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。有需要面试题资料的朋友点击这里可以免费领取


我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。有需要面试题资料的朋友点击这里可以免费领取

[外链图片转存中…(img-2JSI4AVV-1712379372055)]

  • 11
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
json数据大概是类似这样的。贴一部分出来吧: 看看就知道这个json是不是你们想要的,文件637kb,很齐全,连台湾香港都有: { "adcode": 110000, "level": "province", "center": [116.405285, 39.904989], "name": "北京市", "children": [{ "adcode": 110101, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.418757, 39.917544], "name": "东城区", "bbox": [220997853, 101649345, 51942, 112202], "acroutes": [100000, 110000] }, { "adcode": 110102, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.366794, 39.915309], "name": "西城区", "bbox": [220952804, 101650294, 58693, 101214], "acroutes": [100000, 110000] }, { "adcode": 110105, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.486409, 39.921489], "name": "朝阳区", "bbox": [220975258, 101516417, 219305, 292702], "acroutes": [100000, 110000] }, { "adcode": 110106, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.286968, 39.863642], "name": "丰台区", "bbox": [220754331, 101724157, 308078, 130557], "acroutes": [100000, 110000] }, { "adcode": 110107, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.195445, 39.914601], "name": "石景山区", "bbox": [220797151, 101630263, 109699, 116407], "acroutes": [100000, 110000] }, { "adcode": 110108, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.310316, 39.956074], "name": "海淀区", "bbox": [220749997, 101467201, 258195, 267043], "acroutes": [100000, 110000] }, { "adcode": 110109, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.105381, 39.937183], "name": "门头沟区", "bbox": [220283661, 101449889, 560707, 356985], "acroutes": [100000, 110000] }, { "adcode": 110111, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.139157, 39.735535], "name": "房山区", "bbox": [220285002, 101696885, 617451, 405299], "acroutes": [100000, 110000] }, { "adcode": 110112, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.658603, 39.902486], "name": "通州区", "bbox": [221106523, 101593189, 318276, 425504], "acroutes": [100000, 110000] }, { "adcode": 110113, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.653525, 40.128936], "name": "顺义区", "bbox": [221060118, 101320470, 388946, 295564], "acroutes": [100000, 110000] }, { "adcode": 110114, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.235906, 40.218085], "name": "昌平区", "bbox": [220597587, 101241042, 493265, 347262], "acroutes": [100000, 110000] }, { "adcode": 110115, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.338033, 39.728908], "name": "大兴区", "bbox": [220874650, 101787127, 381087, 377158], "acroutes": [100000, 110000] }, { "adcode": 110116, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.637122, 40.324272], "name": "怀柔区", "bbox": [220926825, 100583340, 448138, 812306], "acroutes": [100000, 110000] }, { "adcode": 110117, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [117.112335, 40.144783], "name": "平谷区", "bbox": [221406836, 101255302, 356418, 339689], "acroutes": [100000, 110000] }, { "adcode": 110118, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [116.843352, 40.377362], "name": "密云区", "bbox": [221210032, 100839679, 632920, 569784], "acroutes": [100000, 110000] }, { "adcode": 110119, "provCode": 110000, "cityCode": 110100, "level": "district", "center": [115.985006, 40.465325], "name": "延庆区", "bbox": [220516782, 100848786, 625419, 516236], "acroutes": [100000, 110000] }], "acroutes": [100000], "bbox": [220283661, 100583324, 1559322, 1580961], "idealZoom": 9 }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值