MVC
MVC含义
一种软件构架,简单的说就是在做软件的时候,可以将软件分为不同的模块,不同的模块实现了不同功能。
MVC 组成部分
Model 模型
View 视图
Controller 控制器
MVC就是三种组成部分的缩写。
MVC 不同模块的功能
Model(模型层) 程序员编写程序应用的功能,数据库设计等。属于后台操作。
View (视图层) 前台界面,也就是用户可以看到的图形见面,一般在web中是一些*.jsp或*.html。
Controller(控制器) 处理前台和后台请求。
MVC 优点
采用MVC的优点太多了,说再多不如你在真正的项目中自己体会,在这里不做太多解释。
MVC 包结构
虽然,这并不能说明所有MVC框架所有的包模式,不过我觉得新手对于这个包结构还是比较容易接受的。
DAO 模式
在DAO层,最主要的作用是:完成数据的操作。在这层,你可以完成对任何表的数据操作,不过个人认为DAO层最大的作用是简单了编程人员的编程逻辑,简单的说就是将一个大的问题,分成了几个比较小的问题,这样不管在测试还是在维护都起着很大的方便。
Factory 工厂
Factory 工厂在这里也可以说成是DAO的工厂,这里Factory仅仅产生了DAO。那么Factory工厂模式有什么好处呢?
在MVC中的Factory 层,你完全可以把它想象成现实中的工厂,生产某些东西,如果在程序中使用工厂模式,你可以简化编程代码,相当与现实中你需要某个产品不需要自己去生产,完全可以去工厂“拿”一个,这样程序的编程更加符合现实中的逻辑。
MVC 总结
本节,我仅仅是将MVC的编辑思想简单的介绍了一下,我没有加入一些详细的例子,因为我觉得你在接触MVC的时候,最好先了解MVC的编程思想,如果你要了解MVC的编程思想之后,你再接触MVC的编程时,你就会觉得特别简单。
最后,希望我这篇文章可以让大家简单的了解MVC的编程模式。
posted @
2011-01-25 09:30 tovep 阅读(2120) |
评论 (9) |
编辑 收藏
摘要: ForEach小结
<c:forEach>标签具有以下一些属性:
var:迭代参数的名称。在迭代体中可以使用...
阅读全文
posted @
2011-01-24 08:37 tovep 阅读(2347) |
评论 (0) |
编辑 收藏
通过以下Servlet程序和web.xml来说明web.xml的配置以及过程
创建一个Login的HTML文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>login.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="
test1" method="
post">
<table border="0" width="379" height="79">
<tr>
<td>帐号:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="5" align="center"><input type="submit" value="登录"></td>
</tr>
</table>
</form>
</body>
</html>
以上HTML标签中要说明的是:
<form>标签中的
action="test_Web_xml" 和 method="post" 分别定义了Html将登陆的信息发送给了谁,以及发送信息的方法!
创建一个Servlet程序
public class LoginServlet extends HttpServlet{
public void
doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = null;
username = request.getParameter("username");
String password = null;
password = request.getParameter("password");
if(username.equals("username")&&password.equals("password")){
request.getRequestDispatcher("成功登陆!!!").forward(request,response);
}else{
request.getRequestDispatcher("登陆失败!!!").forward(request,response);
}
}
}
web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>
Login
</servlet-name>
<servlet-class>
com.rise.LoginServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
Login
</servlet-name>
<url-pattern>
/test1
</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
我理解web.xml的作用就是将页面和后台程序正确连接!!!
通过一张图片说明我理解的web.xml的作用
以上的内容是我自己对web.xml的理解,我觉得很简单,但真正写程序的时候部署程序是非常复杂的!
posted @
2010-12-11 20:43 tovep 阅读(6289) |
评论 (2) |
编辑 收藏
什么是JDBC
JDBC是由一组Java语言编写的类和接口组成,用来处理关系数据库!利用JDBC的API,可用Java语法去访问各种各样的SQL数据库。
个人认为:
把JDBC当做是一门连接Java程序连接数据库的技术不如把JDBC当做连接程序和数据库的桥梁。
以下我要写的例子是用纯Java的Driver来连接数据库的方式。连接的数据库是mysql。
JDBC编程步骤
1.加载数据库驱动(jar文件)
//需要下载一个数据库的jar包,并导入相应的JDBC项目中,创建路径!
Class.forName("com.mysql.jdbc.Driver");
2.获得数据库连接
DriverManager.getConnection("jdbc:mysql://Database_IP:3306/DATABASE","DATAROOT","PASSWORD");//返回Connection————获得数据库连接
3.创建语句
String sql = "SQL_TORUNNING";
向DATABASE发送一个执行语句
Statement stmt = conn.createStatement();//创建一个 Statement 对象来将 SQL 语句发送到数据库.
Statement—————SQL_RUNNING!!!
4.执行查询
ResultSet rs = Statement.executeQuery(SQL_RUNNING);//执行SQL_RUNNING命令,返回ResultSet
//如果执行的数据库语句不是对数据库中的内容进行修改的话,则用 Statement.executeQuery()
//如果执行的数据库语句是修改数据库中的内容进行修改的话,则用 Statement.executeUpdate()
//当然他们返回值的类型也不同!
//根据命令的不同Statement的方法也不同
创建一个表
Statement.execute(create a table)
增删改查Insert、update、delete...
Statement.executeUpdate()
查询语句Select
Statement.executeQuery(Select);
5.遍历结果集
while(ResultSet.next()){
ResultSet.getInt(int);
ResultSet.getString(int);
......
}
6.关闭数据库连接
Connection.close();
步骤分析
(图一)
1.加载数据库驱动
我们来看图一,工厂和几个农村之间有一条河,不能够直接进行沟通,工厂就相当于一个Java程序,而几个农村就相当于不同的数据库;
工厂为B村生产一些材料,但是生产出来之后并不能直接交给B村,然后工厂的厂长就想在工厂和B村之间架设一座桥梁来运送生产出来的材料——我们大可把数据库驱动加载当做这个架设桥梁的想法。
在程序中我们要怎么做呢?
在加载数据库驱动的时候,必须要将相应的mysql-connector-java-5.0.4-bin.jar包,然后将jar包导入相应的项目中如下图
在mysql-connector-java-5.0.4-bin.jar右击建立路径,就相当于import的过程——我不确定这么说对不对,但我是这么理解的。
建立路径后,你的项目将出现一个新的文件,如下图
这样的话,你就可以顺利加载数据库驱动,否则当你在运行的时候会出现找不到Driver.class的异常,也就是无法加载数据库驱动。
Class.forName("com.mysql.jdbc.Driver");
2.获得数据库连接
既然厂长有想法和B村之间架设一座桥梁,那就要和B村商量一下啊!然后,厂长就要去河的对岸,那条河呢?就是在工厂和B村之间的那条河(这条河就相当于Database_IP),然后去找B村的村长(在这里要明白是B村的村长不是A村的,所以不能找错了!!!),找到B村村长,“我要在工厂和B村之间建设一座桥,来运输我们的东西”,下一步谈的当然是条件了,工厂老板说“我要B村出资90%,剩下的由工厂出!!”村长当然不干了,这桥当然也就没法建设了!!!所以只有当两者都满意的情况下才可以建设桥梁(比如,各处50%)其实谈条件的过程就相当于验证数据库的"DATAROOT"和"PASSWORD"!!!只有两者都正确的情况下才可以进行下一步的计划——也就是建设桥梁!!!
在程序中的过程如下:
Connection conn = null;
conn = DriverManager.getConnection("jdbc:mysql://Database_IP:3306/DATABASE","DATAROOT","PASSWORD");
//返回Connection————获得数据库连接
3.创建语句
桥已经建好了,然后工厂要准备一些卡车来运输生产的货物,然后农村需要根据不同的货物来处理这些货物,有些货物直接卸在B村就可以了,但有些货物卸在B村之后,B村要做一些处理然后运回工厂!!!
这个过程在程序是怎么体现的呢?
String sql = "SQL_TORUNNING";
向DATABASE发送一个执行语句
Statement stmt = conn.createStatement();//创建一个 Statement 对象来将 SQL 语句发送到数据库.
Statement—————SQL_RUNNING!!!
4.处理数据库发送来的消息
如果工厂运输到B村的货物,只要B村的村长给工厂开一张条就行了;但也会有一些货物需要运回工厂!!
在程序中:
ResultSet rs = Statement.executeQuery(SQL_RUNNING);//执行SQL_RUNNING命令,返回ResultSet
//如果执行的数据库语句不是对数据库中的内容进行修改的话,则用 Statement.executeQuery()——需要返回一些货物
//如果执行的数据库语句是修改数据库中的内容进行修改的话,则用 Statement.executeUpdate()——开张条就行了
//当然他们返回值的类型也不同!
//根据命令的不同Statement的方法也不同
创建一个表
Statement.execute(create a table)
增删改查Insert、update、delete...
Statement.executeUpdate()
查询语句Select
Statement.executeQuery(Select);
5.处理数据库传回的内容
这个过程由工厂完成,如果是返回的一些货物的话,工厂要做一些处理。
处理的过程:
while(ResultSet.next()){
ResultSet.getInt(int);
ResultSet.getString(int);
......
}
6.关闭数据库
这样的话,工厂和B村的交易就完成,在现实世界中工厂和B村之间的桥梁不会被拆除,因为建一座桥的代价很大,但在程序和数据库之间架设一座桥梁简直太简单了,所以在这里我们要把这座桥梁拆除。
Connection.close();
简单的举了一个例子来说明数据库和程序之间是怎么连接的,望对大家有所帮助。
posted @
2010-12-09 18:37 tovep 阅读(1617) |
评论 (1) |
编辑 收藏