一、什么是MVC模式
MVC是Model-View-Control的简称,即模型-视图-控制器,他是一个存在于服务器表达层的模型,他将应用分开,改变应用之间的高度耦合
1、MVC模式结构
视图:数据的展现
视图是用户看到并与之交互的界面,视图向用户显示相关数据,并能接受用户的输入数据,但它并不接受数据的业务处理,视图可以向模型查询数据状态,但不能改变模型,视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。
模型:应用对象
模型是应用程序的主体部分。模型代表了业务数据和业务逻辑。当数据放生改变时,它要负责通知视图部分;一个模型能为多个视图提供数据,提高了重用性
控制器:逻辑处理,控制实体数据在视图上的显示,调用模型处理业务请求
当用户从浏览器提交表单请求时,控制器接受数据并交给相应的模型来处理,然后模型将结果返回给控制器。
2、MVC模式的运行机制
web用户向服务器提交的所有请求都有控制器来接收,接收到请求后,控制器负责决定应该调用哪个模型来处理,模型进行相应的逻辑处理之后将结果返回给控制器,控制器再将结果呈现给相应的视图并最终呈献给用户。
二、MVC模式实例——用户登陆
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html;charset=utf-8");
- request.setCharacterEncoding("utf-8");
- response.setCharacterEncoding("utf-8");
- PrintWriter out = response.getWriter();
- //从cookie中得到cookie
- String username="";
- String userpwd="";
- Cookie[] cookies=request.getCookies();
- for(Cookie cookie:cookies){
- if(cookie.getName().equals("username")){
- // if(cookie!=null){
- username=cookie.getValue();
- System.out.print(cookie.getValue());
- }
- }
- System.out.println(username);
- //返回一个界面
- out.println("<img src='/ManageUser3.0/images/banner.gif' title='banner'/>");
- out.println("<h1>用户登陆</h1>");
- out.println("<form action='/ManageUser3.0/servlet/LoginCLServlet' method='post'>");
- out.println("用户名:<input type='text' name='username' id='username' value='"+username+"'/><br/>");
- out.println("密 码:<input type='password' name='userpwd' id='userpwd'/><br/>");
- out.println("<input type='checkbox' name='cookie' id='cookie' value='keep'/>在此电脑上保存用户信息<br/>");
- out.println("<input type='submit' value='登陆'><br/>");
- out.println("</form>");
- out.flush();
- out.close();
- }
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html;charset=utf-8");
- request.setCharacterEncoding("utf-8");
- response.setCharacterEncoding("utf-8");
- PrintWriter out = response.getWriter();
- // 接收用于提交的用户名和密码
- String username=request.getParameter("username");
- String userpwd=request.getParameter("userpwd");
- // 接受复选框的信息
- String value=request.getParameter("cookie");
- // System.out.println(value);
- UsersService userservice=new UsersService();
- User user=new User();
- user.setName(username);
- user.setPwd(userpwd);
- if(userservice.checkUser(user)){
- //如果进来,则合法
- if(value!=null&&value.equals("keep")){
- //保存用户信息
- //创建cookie并保存到登陆的浏览器
- Cookie c_name=new Cookie("username",username);
- c_name.setMaxAge(7*3600*24);
- response.addCookie(c_name);
- }
- //跳转最后执行
- response.sendRedirect("/ManageUser3.0/servlet/MainFrame?username="+username);
- // request.getRequestDispatcher("/servlet/MainFrame").forward(request, response);
- }else{
- response.sendRedirect("/ManageUser3.0/servlet/LoginServlet");
- // request.getRequestDispatcher("/servlet/LoginServlet").forward(request,response);
- //不合法
- System.out.println("密码或账号错误");
- }
- }
- /**
- * 验证用户是否合法的函数
- * @author chanxiaoxi
- * @param user
- * @return boolean
- */
- public boolean checkUser(User user){
- boolean b=false;
- String sql="select * from mu_user where user_name=? and user_pwd=?";
- String paras[]={user.getName(),user.getPwd()};
- ResultSet rs=sqlHelper.executeQuery(sql, paras);
- try{
- if(rs.next()){
- b=true;
- }
- }catch(SQLException e){
- e.printStackTrace();
- }finally{
- DBUtil.close(rs, ps, conn);
- }
- return b;
- }