servlet登陆功能实现二——MVC模式

一、什么是MVC模式

MVC是Model-View-Control的简称,即模型-视图-控制器,他是一个存在于服务器表达层的模型,他将应用分开,改变应用之间的高度耦合

1、MVC模式结构
视图:数据的展现
视图是用户看到并与之交互的界面,视图向用户显示相关数据,并能接受用户的输入数据,但它并不接受数据的业务处理,视图可以向模型查询数据状态,但不能改变模型,视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。
模型:应用对象
模型是应用程序的主体部分。模型代表了业务数据和业务逻辑。当数据放生改变时,它要负责通知视图部分;一个模型能为多个视图提供数据,提高了重用性
控制器:逻辑处理,控制实体数据在视图上的显示,调用模型处理业务请求
当用户从浏览器提交表单请求时,控制器接受数据并交给相应的模型来处理,然后模型将结果返回给控制器。
2、MVC模式的运行机制
web用户向服务器提交的所有请求都有控制器来接收,接收到请求后,控制器负责决定应该调用哪个模型来处理,模型进行相应的逻辑处理之后将结果返回给控制器,控制器再将结果呈现给相应的视图并最终呈献给用户。

二、MVC模式实例——用户登陆

[java]  view plain copy
  1. public void doPost(HttpServletRequest request, HttpServletResponse response)  
  2.             throws ServletException, IOException {  
  3.         response.setContentType("text/html;charset=utf-8");  
  4.         request.setCharacterEncoding("utf-8");  
  5.         response.setCharacterEncoding("utf-8");  
  6.         PrintWriter out = response.getWriter();  
  7.         //从cookie中得到cookie  
  8.         String username="";  
  9.         String userpwd="";  
  10.         Cookie[] cookies=request.getCookies();  
  11.         for(Cookie cookie:cookies){  
  12.             if(cookie.getName().equals("username")){  
  13. //          if(cookie!=null){  
  14.                 username=cookie.getValue();  
  15.                 System.out.print(cookie.getValue());  
  16.             }  
  17.         }  
  18.         System.out.println(username);  
  19.         //返回一个界面  
  20.         out.println("<img src='/ManageUser3.0/images/banner.gif' title='banner'/>");  
  21.         out.println("<h1>用户登陆</h1>");  
  22.         out.println("<form action='/ManageUser3.0/servlet/LoginCLServlet' method='post'>");  
  23.         out.println("用户名:<input type='text' name='username' id='username' value='"+username+"'/><br/>");  
  24.         out.println("密     码:<input type='password' name='userpwd' id='userpwd'/><br/>");  
  25.         out.println("<input type='checkbox' name='cookie' id='cookie' value='keep'/>在此电脑上保存用户信息<br/>");  
  26.         out.println("<input type='submit' value='登陆'><br/>");  
  27.         out.println("</form>");  
  28.         out.flush();  
  29.         out.close();  
  30.     }  
登陆视图,完成登陆后视图将表单提交给控制器LoginCLServlet
[java]  view plain copy
  1. public void doGet(HttpServletRequest request, HttpServletResponse response)  
  2.             throws ServletException, IOException {  
  3.   
  4.         response.setContentType("text/html;charset=utf-8");  
  5.         request.setCharacterEncoding("utf-8");  
  6.         response.setCharacterEncoding("utf-8");  
  7.         PrintWriter out = response.getWriter();  
  8. //      接收用于提交的用户名和密码  
  9.         String username=request.getParameter("username");  
  10.         String userpwd=request.getParameter("userpwd");  
  11. //      接受复选框的信息  
  12.         String value=request.getParameter("cookie");  
  13. //      System.out.println(value);  
  14.           
  15.         UsersService userservice=new UsersService();  
  16.         User user=new User();  
  17.         user.setName(username);  
  18.         user.setPwd(userpwd);  
  19.           
  20.         if(userservice.checkUser(user)){  
  21.             //如果进来,则合法  
  22.             if(value!=null&&value.equals("keep")){  
  23.                 //保存用户信息  
  24.                 //创建cookie并保存到登陆的浏览器  
  25.                 Cookie c_name=new Cookie("username",username);  
  26.                 c_name.setMaxAge(7*3600*24);  
  27.                 response.addCookie(c_name);  
  28.             }  
  29.                 //跳转最后执行  
  30.                 response.sendRedirect("/ManageUser3.0/servlet/MainFrame?username="+username);  
  31. //              request.getRequestDispatcher("/servlet/MainFrame").forward(request, response);  
  32.             }else{  
  33.                 response.sendRedirect("/ManageUser3.0/servlet/LoginServlet");  
  34. //              request.getRequestDispatcher("/servlet/LoginServlet").forward(request,response);  
  35.                 //不合法  
  36.                 System.out.println("密码或账号错误");  
  37.             }     
  38.           
  39.     }  
控制器调用模型UsersService来处理数据,并接受处理结果
[java]  view plain copy
  1. /** 
  2.      * 验证用户是否合法的函数 
  3.      * @author chanxiaoxi 
  4.      * @param user 
  5.      * @return boolean 
  6.      */  
  7.     public boolean checkUser(User user){  
  8.         boolean b=false;  
  9.         String sql="select * from mu_user where user_name=? and user_pwd=?";  
  10.         String paras[]={user.getName(),user.getPwd()};  
  11.         ResultSet rs=sqlHelper.executeQuery(sql, paras);  
  12.         try{  
  13.             if(rs.next()){  
  14.                 b=true;  
  15.             }  
  16.         }catch(SQLException e){  
  17.             e.printStackTrace();  
  18.         }finally{  
  19.             DBUtil.close(rs, ps, conn);  
  20.         }  
  21.         return b;  
  22.     }  
完成验证之后将结果返回给控制器,控制器根据返回的结果再将相应的结果返回给视图
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值