深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)

2014-11-23 23:31:12 · 作者: · 浏览: 0

在DRP中终于接触到了MVC,感触是确实这样的架构系统灵活性不少,现在感触最深的就是使用tomcat作为服务器发布比IIS好多了,起码发布很简单,使用起来方便。


首先来简单的学习一下MVC的基础知识,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑和数据显式分离的方法组织代码,将业务逻辑被聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑。


概览

\


MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中,MVC是分层的思想的体现,但是区别于三层设计模式(区别以后再和大家分享)。



\


MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式。



实例解析


UML图:大家熟悉MVC的调用流程逻辑


\



第一:JSP:由页面指令和HTML组成的查询界面query_condention.jsp,也就是咱们现在的html页和asp页面类似。



<%@ page language="java" contentType="text/html;charset=GBK"%>

	
		学生信息
	
	
		
  
出生日期:


第二:控制层 SearchStudentServlet用来接受客户的请求,来处理流程,调用Model(StudentManager.java),转发到要请求的后台服务器的student_list.jsp页面




import java.text.*;
import java.util.*;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;

import com.bjpowernode.exam.model.*;
import com.bjpowernode.exam.manager.*;

public class SearchStudentServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)	
	throws ServletException, IOException {
		doPost(request, response);
	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		
		String sBeginDate = request.getParameter("beginDate");
		String sEndDate = request.getParameter("endDate");
		
		Date beginDate = new Date();
		Date endDate = new Date();
		try {
			beginDate = new SimpleDateFormat("yyyy-MM-dd").parse(sBeginDate);
		 	endDate = new SimpleDateFormat("yyyy-MM-dd").parse(sEndDate);
		 }catch(Exception e) {
			e.printStackTrace();		 
		 }	 
		
		StudentManager studentManager = new StudentManagerImpl();
		List
  
    studentList = studentManager.findStudentList(beginDate, endDate);
		
		//将学生列表设置到requet范围中
		//request.setAttribute("student_list", studentList);
		
		//转发,转发是在服务器端转发的,客户端是不知道的
		//request.getRequestDispatcher("/student_list.jsp").forward(request, response);
		
		
		//将studentList放到session中
		HttpSession session = request.getSession();
		session.setAttribute("student_list", studentList);
		
		//重定向,不会共享request
		//以下写法错误,该 "/"代表了8080端口
		//response.sendRedirect("/student_list.jsp");
		response.sendRedirect(request.getContextPath() + "/student_list.jsp");
	}
}
  

第三 :student_list.jsp页面接收数据形成html,返回到浏览器,渲染在界面上



<%@ page language="java" contentType="text/html;charset=GBK"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="com.bjpowernode.exam.model.*"%>
<%@ page import="com.bjpowernode.exam.manager.*"%>

	
		学生信息
				
	
	
		
  
     studentList = (List)request.getAttribute("student_list");
				List
   
     studentList = (List)session.getAttribute("student_list"); for (Iterator
    
      iter=studentList.iterator(); iter.hasNext();) { Student student = iter.next(); %> 
    
   
  
   <% //List
     <% long b = 1000L*60L*60L*24L*365L; long a = System.currentTimeMillis() - student.getBirthday().getTime(); %> 
      <% } %> 
   
学生代码 姓名 性别 出生日期 联系电话 家庭住址 班级名称 年龄
<%=student.getStudentId()%> <%=student.getStudentName()%> <%=student.getSex()%> <%=new SimpleDateFormat("yyyy-MM-dd").format(student.getBirthday())%> <%=student.getContactTel()%> <%=student.getAddress()%> <%=student.getClasses().getClassesName()%><%=a/b%>



在View的student_list. jsp页面中是大量的html和java代码的混合,在查询条件界面query_condention.jsp主要是html,因为不涉及后台数据的交互.



第四:xml配置Servlet:


  

  
	
    
    
     SearchStudentServlet
     
    
     SearchStudentServlet
     
   
	
    
    
     SearchStudentServlet
     
    
     /SearchStudentServlet
     
   
	

  


第五:显示查询结果

n块 嶂  j龟  z{b 欹'  剁^     *'逗% -棺ФX ;)Q+nu轫1┶   1P  n块 i1P /椴阼 脎 沱-    in块ズ   Java》系类博客,共同学习、提高,敬请期待!