建议是从后往前写,便于调试与debug,先编写Dao层,主要负责与数据库交互,编写sql语句等。然后编写Servicce层,主要负责调用Dao层,再编写Servlet层,其也是主要调用Service和前端的一些数据交互,比如resquet和response等。
放在webapp目录下,因为是网站资源
publicUsergetLoginUser(Connectionconnection,StringuserCode)throwsException;
业务层都会调用Dao层,来获取业务所需的数据。
publicclassUserServiceImplimplementsUserService{privateUserDaouserDao;publicUserServiceImpl(){userDao=newUserDaoImpl();}publicUserlogin(StringuserCode,StringuserPassword){//TODOAuto-generatedmethodstubConnectionconnection=null;Useruser=null;try{connection=BaseDao.getConnection();user=userDao.getLoginUser(connection,userCode);}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}finally{BaseDao.closeResource(connection,null,null);}//匹配密码if(null!=user){if(!user.getUserPassword().equals(userPassword))user=null;}returnuser;}}
前端一启动,执行login.jsp(设置成了首页),直接到web.xml中设置的login.do(servlet映射),调用对应的控制器servlet(LoginServlet),servlet中会调用业务(UserServiceImpl),然后业务会调用想用的Dao(UserDaoImpl)来获取数据。
LogoutServlet
publicclassLogoutServletextendsHttpServlet{@OverrideprotectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{req.getSession().removeAttribute(Constant.USER_SESSION);resp.sendRedirect(req.getContextPath()+"/login.jsp");}@OverrideprotectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{doGet(req,resp);}}注册
编写一个过滤器,并注册
密码修改,需要和数据库打交道,所以还需要走dao层、service层、servlet层这一条线。
publicinterfaceUserDao里
//修改当前用户密码//增删改返回的都是int类型,查找返回对应的实体类;publicintupdatePwd(Connectionconnection,intid,Stringpwd)throwsException;4.编写Dao接口实现类publicclassUserDaoImplimplementsUserDao里
//根据userId修改密码publicbooleanupdatePwd(intid,Stringpwd);
publicbooleanupdatePwd(intid,Stringpwd){booleanflag=false;//使用标志位,判断密码是否修改成功。Connectionconnection=null;try{connection=BaseDao.getConnection();if(userDao.updatePwd(connection,id,pwd)>0)flag=true;}catch(Exceptione){e.printStackTrace();}finally{BaseDao.closeResource(connection,null,null);}returnflag;}