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

一、什么是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();
	}
登陆视图,完成登陆后视图将表单提交给控制器LoginCLServlet
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("密码或账号错误");
			}	
		
	}
控制器调用模型UsersService来处理数据,并接受处理结果
/**
	 * 验证用户是否合法的函数
	 * @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;
	}
完成验证之后将结果返回给控制器,控制器根据返回的结果再将相应的结果返回给视图


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值