之前对JavaEE的MVC模式有些许了解,但一直没有很好的掌握,在读代码时候也很模糊不清。因此对MVC又通过各种资料有了全面的理解。

一.首先,需要从了解JavaEE技术开始。JavaEE技术在设计程序时,一般会把程序的结构设计成三层。

●表示层—用户界面和用于生成界面的代码组成。

●中间层—系统的业务和功能代码。

●数据层—完成存储数据库的数据和对数据进行封装。

基于这种程序结构,有了MVC。M即为数据层,包括各种JavaBean以及数据库工具。V即为表示层,通常为Jsp或HTML页面,显示在客户端。C即为中间层,一般为Web层的Servlet组件,由它来处理客户端的各种请求以及数据。

二.MVC的简单应用:

1)Eclipse中的创建项目,项目名chapter11

aaarticlea/png;base64,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" alt="" />

2)模型实体Student

 package com.chapter11.bean;

 import java.sql.Date;

 public class Student {
private int id;
private String name;
private Date birthday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
} }

JavaBean

3)数据库连接工具JdbcUtil

 package com.chapter11.util;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement; public class JdbcUtil {
static{
try{
Class.forName("com.mysql.jdbc.driver");
}catch(Exception e)
{
e.printStackTrace();
}
}
public static Connection getConnection()
{
Connection con=null;
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/sms","root","hanzhao1024");
}catch(Exception e){
e.printStackTrace();
}
return con;
} public static void release(Connection con,Statement stmt,ResultSet rs)
{
try{
if(rs!=null)
{
rs.close();
} }catch(Exception e)
{
e.printStackTrace();
}
try{
if(stmt!=null)
{
stmt.close();
} }catch(Exception e)
{
e.printStackTrace();
}
try{
if(con!=null)
{
con.close();
} }catch(Exception e)
{
e.printStackTrace();
} }
public static void printRs(ResultSet rs)
{
StringBuffer sb=new StringBuffer();
try{
while(rs.next())
{
sb.append("id="+rs.getInt(1)+"");
sb.append("name="+rs.getString(2)+"\n");
}
System.out.println(sb.toString()); }catch(Exception e)
{
e.printStackTrace();
} } }

JdbcUtil

4)数据访问层接口StudentDao

 package com.chapter11.dao;

 import java.sql.SQLException;
import java.util.List;
import java.sql.SQLException; import com.chapter11.bean.Student; public interface StudentDao {
public void insertStudent(Student stu)throws SQLException;
public List queryAllStudents()throws SQLException; }

StudentDao

5)数据访问层接口实现类StudentDaoImpl

 package com.chapter11.dao;

 import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.chapter11.bean.Student;
import com.chapter11.util.JdbcUtil; public class StudentDaoImpl implements StudentDao { Connection con=null;
public StudentDaoImpl(Connection con)
{
this.con=con;
}
PreparedStatement pstmt=null;
ResultSet rs=null;
public void insertStudent(Student stu)throws SQLException
{
String sql="insert into student(name,birthday) value(?,?)";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, stu.getName());
pstmt.setDate(2, stu.getBirthday());
pstmt.executeUpdate();
JdbcUtil.release(null, pstmt, null);
}
public List queryAllStudents()throws SQLException
{
String sql="select*from student";
List students=new ArrayList();
pstmt=con.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
while(rs.next())
{
Student stu=new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
stu.setBirthday(rs.getDate("birthday"));
students.add(stu);
}
JdbcUtil.release(null, pstmt, null);
return students;
} }

StudentDaoImpl

6)增加和删除的业务服务层接口StudentService

package com.chapter11.service;

import java.sql.SQLException;
import java.util.List; import com.chapter11.bean.Student; public interface StudentService {
public void addStudent(Student stu)throws SQLException;
public List findAllStudent()throws SQLException; }

StudentService

7)增加和删除的业务服务层接口StudentServiceImpl

 package com.chapter11.service;

 import java.sql.Connection;
import java.sql.SQLException;
import java.util.List; import com.chapter11.bean.Student;
import com.chapter11.dao.StudentDao;
import com.chapter11.dao.StudentDaoImpl;
import com.chapter11.util.JdbcUtil; public class StudentServiceImpl implements StudentService{
public void addStudent(Student stu)throws SQLException
{
Connection con=JdbcUtil.getConnection();
try{
con.setAutoCommit(false);
StudentDao sdao=new StudentDaoImpl(con);
sdao.insertStudent(stu);
con.commit(); }catch(Exception e)
{
e.printStackTrace();
} }
public List findAllStudent()throws SQLException {
Connection con=JdbcUtil.getConnection();
List students=null;
try{
con.setAutoCommit(false);
StudentDao sdao=new StudentDaoImpl(con);
sdao.queryAllStudents();
con.commit(); }catch(Exception e)
{
e.printStackTrace();
} return students;
} }

StudentServiceImpl

8)Web层控制器Servlet

package com.chapter11.servlet;

import java.io.IOException;
import java.sql.Date;
import java.util.List; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.chapter11.bean.Student;
import com.chapter11.service.*; @WebServlet("/SMSServletController")
public class SMSServletController extends HttpServlet {
private static final long serialVersionUID = 1L; public SMSServletController() {
super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
StudentService ss=new StudentServiceImpl();
String path=request.getServletPath();
path=path.substring(0,path.indexOf("."));
if(path.equalsIgnoreCase("/sms/list"))
{
try
{
List students=ss.findAllStudent();
request.setAttribute("students", students);
forward("list.jsp",request,response); }catch(Exception e)
{
throw new ServletException("error when query!");
}
}else if(path.equalsIgnoreCase("/sms/add"))
{
request.setCharacterEncoding("UTF-8");
String name=request.getParameter("name");
String birthday=request.getParameter("birthday");
Student student=new Student();
student.setBirthday(Date.valueOf(birthday));
student.setName(name);
try{
ss.addStudent(student); }catch(Exception e)
{
e.printStackTrace();
}
response.sendRedirect(request.getContextPath()+"/sms/list.do");
} } private void forward(String url, HttpServletRequest request,
HttpServletResponse response)throws IOException,ServletException{
ServletContext application=getServletContext();
RequestDispatcher ds=application.getRequestDispatcher(url);
ds.forward(request,response); } }

Servlet

9)Web层表示页面

整个过程即为一个基本的MVC设计模式以及代码流程。在此还未解决的问题是最后的表示层页面显示,会在此后逐步解决。

web初学之MVC的更多相关文章

  1. YbSoftwareFactory 代码生成插件【二十一】:Web Api及MVC性能提升的几个小技巧

    最近在进行 YbSoftwareFactory 的流程功能升级,目前已经基本完成,现将用到的一些关于 Web Api 及 MVC 性能提升的一些小技巧进行了总结,这些技巧在使用.配置上也相当的简单,但 ...

  2. Atitit.web三大编程模型 Web Page Web Forms 和 MVC

    Atitit.web三大编程模型 Web Page    Web Forms 和 MVC 1. 编程模型是 Web Forms 和 MVC (Model, View, Controller). 2.  ...

  3. Atitit.web三编程模型 Web Page Web Forms 和 MVC

    Atitit.web三编程模型 Web Page    Web Forms 和 MVC 1. 编程模型是 Web Forms 和 MVC (Model, View, Controller). 2. W ...

  4. java web 初学

    我希望在本学期本堂课上学会使用java web 框架 精通mvc架构模式 学会通过框架和数据库对产品进行构造与编写. 我计划每周用16小时的时间进行学习java web 一周4学时上课时间 周一到周五 ...

  5. PHP做Web开发的MVC框架(Smarty使用说明 )

    PHP做Web开发的MVC框架(Smarty使用说明 ) 一.Smarty简明教程 1.安装演示 下载最新版本的Smarty-3.1.12,然后解压下载的文件.接下来演示Smarty自带的demo例子 ...

  6. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  7. 用maven创建web项目(spring Mvc)

    用maven创建web项目(spring Mvc) 1.打开cmd进入到你要创建maven项目的目录下: 2.输入以下命令.然后根据提示输入相应的groupId.artifactId.version: ...

  8. Java Web开发中MVC设计模式简介

    一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条 ...

  9. [译]Create a Web API in MVC 6

    原文: http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6 ASP.NET 5.0的一个目标是合并MV ...

随机推荐

  1. web页面如何播放amr的音频文件

    这个需求由来已久,公司的语音订单很多,每次客服都是从服务器down下语音来听.很不方便..于是我就上网扒拉看有么有什么web播放器能播放amr格式的音频文件,amr百度百科 总之找了很久.,,然后发现 ...

  2. R语言-数据高级管理

    数学函数 abs() 绝对值 sqrt() 平方 ceiling() 向上取整 floor() 向下取整 trunc() 截取整数部分 round(x,digits = n) 保留几位小数 统计函数 ...

  3. (C++) Include 文件

    1. <> 和 "" 的区别. 2. 有个技巧就是把.h 文件放到 stdafx.h 中,这样很多时候,就不用重复的引用头文件了..因为 stdafx.h 基本上每个头 ...

  4. WindowsForm--Bubble User Control

    创建一个自定义用户控件,拖入一个label:lblWords,和一个richTextBox:txtWords 代码: using System; using System.Collections.Ge ...

  5. 如何利用OEM工具(ORACLE ENTERPRISE MANAGER),增加表空间

  6. HBase读延迟的12种优化套路

    任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结 ...

  7. SQLServer 创建dtsx包更新统计信息(示例)

    http://blog.csdn.net/kk185800961/article/details/43816177(转载) 1 . 打开Microsoft Visual Studio 创建 integ ...

  8. Laravel学习笔记(三)数据库 数据库迁移

    该章节内容翻译自<Database Migration using Laravel>,一切版权为原作者. 原作者:Stable Host, LLC 翻译作者:Bowen Huang 正文: ...

  9. Delphi系统变量:IsMultiThread对MM的影响

    前几日,调试一BUG,过程先不说,最后调试到MM,即Debug dcu,然后进入到GetMem.inc中的Get/FreeMem函数处后,出现AV. 然后一通找...郁闷了N天,后来发现将MM切换到Q ...

  10. Linux 权限设置

    一.文件和目录权限 在Linux系统中,用户可以对每一个文件或目录都具有访问权限,这些访问权限决定了谁能访问,以及如何访问这些文件和目录. 1.文件权限简介 在Linux系统中,每一位用户都有对文件或 ...