当前位置: 首页 > Web前端 > JavaScript

以用户注册功能模块为例谈谈MVC架构下的JavaWeb开发流程

时间:2023-03-27 13:55:02 JavaScript

JavaWeb应用开发,不分分布式,只讨论一个功能服务应用的开发,无论是使用原生的Servlet/JSP方案还是当前的SSM架构有一套经过工程实践检验的最佳实践,它考虑到了团队合作、项目管理和可用性的方方面面。一些约定考虑到了项目管理的便利性。一般前端不能直接访问jsp页面,必须通过Servlet管理跳转到Jsp页面。

  • 注册
  • BaseServlet类的UserServlet的registUI方法用于处理跳转功能。publicStringregistUI(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{return"/jsp/register.jsp";}首先以用户注册功能模块为例,服务端逻辑如图:说起来,一个功能模块包括很多业务功能点,比如用户注册,包括用户名验证、注册、发送激活邮件、发送验证短信等具体功能点。这些功能点体现在不同Servlet(或action或Controller)的业务方法中,使用的方法会调用Service包和Dao包中的增删改查原子方法。根据服务器的运行逻辑,一般的开发流程包括页面准备,包括添加修改表单属性、拼接超链接、添加Ajax等12会员注册用户注册345Username678
    9
    1011密码121314
    15
    1617确认密码181920212223电子邮件242526272829姓名303132333435363738男394041女4243444546生日期47484??950515253电话54555657585960验证码61626364656667686970717275767778在对应的功能模块Servlet中,可以通过添加注解分解步骤实现添加功能点的方法,逐步完善业务代码逻辑1//用户注册模块的注册功能点2publicStringuserRegist(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{3//接收表单参数4Mapmap=request.getParameterMap();5//创建一个新的User对象6Useruser=newUser();7//调用Utils的popultae方法为User对象赋值8//MyBeanUtil封装了ApacheCommon的BeanUtil方法,并添加了时间格式转换的代码9MyBeanUtils.populate(user,map);10//给用户的其他属性赋值,比如用户ID,状态码,激活码11user.setUid(UUIDUtils.getId());12user.setState(0);13user.setCode(UUIDUtils.getCode());14System.out.println(user);1516/*17*//遍历map中的数据SetkeySet=map.keySet();Iterator18*iterator=keySet.iterator();while(iterator.hasNext()){String19*str=iterator.next();System.out.println(str);字符串[]strs=20*map.get(str);对于(字符串字符串:strs){21*System.out.println(字符串);}System.out.println();}22*/2324//注册功能点封装在业务层25UserServiceUserService=newUserServiceImp();26try{27UserService.userRegist(user);28//注册成功,发送信息到用户邮箱,跳转到提示页面29//调用MailUtils方法,发送邮件30MailUtils.sendMail(user.getEmail(),user.getCode());31request.setAttribute("msg","用户注册成功,请激活!");3233}catch(Exceptione){34//注册失败,跳转到提示页面35request.setAttribute("msg","用户注册失败,请重新注册!");3637}38return"/jsp/info.jsp";39}完善Service包下的接口,实现UserService接口1publicinterfaceUserService{23voiduserRegist(Useruser)throwsSQLException;45}UserServiceImpinterfaceImplementationclass1publicclassUserServiceImpimplementsUserService{23@Override4publicvoiduserRegist(Useruser)throwsSQLException{56//实现注册定量函数7UserDaoUserDao=newUserDaoImp();8UserDao.userRegist(用户);9}1011}完善Dao包下的接口和实现类UserDao接口1publicinterfaceUserDao{23voiduserRegist(Useruser)throwsSQLException;45}UserDaoImp接口实现类1publicclassUserDaoImpimplementsUserDao{23@Override4publicvoiduserRegist(Useruser)throwsSQLException{5Stringsql="INSERTINTOUSERVALUES(?,?,?,?,?,?,?,?,?,?)";6QueryRunnerqr=newQueryRunner(JDBCUtils.getDataSource());7Object[]params={user.getUid(),user.getUsername(),user.getPassword(),user.getName(),user.getEmail(),user.getTelephone(),user.getBirthday(),用户.getSex(),user.getState(),user.getCode()};8qr.update(sql,参数);9}1011}总结基本上所有基于MVC架构开发的思路都可以按照这个逻辑逐步完善应用代码