简介:
学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容。但是我们之前自己编写的应用一般存在无条理性,对于一个小型的网站这样的编写没有任何问题,但是一但我们需要编写大型的web工程的话,我们现有的编写模式会造成web应用的可扩展性较差,而且一但出现问题不能准确的定位出问题出在哪里。
Java是一门应用设计模式比较广泛的语言。目前主流提出的23种设计模式均可在Java语言编写的程序中所应用。目前主流在Java Web应用中应用的最广泛的设计模式便是MVC模式,目前的主流Web框架大多也是基于MVC设计模式所编写的。
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
Java Web应用程序的主要组件:
MVC 是 Model-View-Control 的简称,即模型-视图-控制器。它是一个存在于服务器
表达层的模型,它将应用分开,改变应用之间的高度耦合。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
Java Web解决方案:
(1)视图:jsp或者html页面,显示给用户的页面,供用户进行操作。其中可使用js,css等方法进行美化。
Index.html
<body>
<form action="login.do" method="post"> <!--所提交的表单,action为"login.do",发出请求是post-->
<p>账号:<input type="text" name="id" /></p> <!--所输入的"账号"在提交后的标示是"id",下同 -->
<p>密码:<input type="text" name="password" />
<p><input type="submit" value="登录"> </p> <!--表单提交按钮,显示名称为"登录"-->
</form>
</body>
(2)控制器:在web.xml中把action同servlet连接起来,控制数据的传递。
Web.xml
<servlet>
<servlet-name>MyServlet</servlet-name><!--定义servlet的名称 -->
<servlet-class>cc.MyMVC.servlet.MyServlet</servlet-class><!--对应servlet所属的文件名 -->
</servlet>
<servlet-mapping> <!-- 建立servlet与action之间的映射 -->
<servlet-name>MyServlet</servlet-name> <!-- 映射中servlet的名称,已定义 -->
<url-pattern>/login.do</url-pattern> <!-- 所对应的action -->
</servlet-mapping>
Servlet.java
public void doPost(HttpServletRequest request, HttpServletResponse response)//处理post请求的方法
throws ServletException, IOException {
boolean b=false;
MyPOJO myPOJO=new MyPOJO();//新建MyPOJO类的对象myPOJO
//根据标示名获取JSP文件中表单所包含的参数
String id=request.getParameter("id");
String password=request.getParameter("password");
b=myPOJO.login(id,password);//使用模型对账号和密码进行验证,返回一个boolean类型的对象
if(b){ //如果验证结果为真,跳转至登录成功页面
response.sendRedirect("LoginSuccessful.jsp");
}
else { //如果验证结果为假,跳转至登录失败页面
response.sendRedirect("LoginFailed.jsp");
}
}
(3)模型:建立数据模型,对数据库进行操作,将数据库中的数据同实际项目结合起来。
public class UpdateDb {
Connection conn;
Statement stmt;
ResultSet result;
public void doUpdate(String sql) {
GetConnection getedConnection = new GetConnection();
conn = getedConnection.getConnection();
try {
stmt = conn.createStatement();
stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}}
Java Web 常用MVC框架:
- struts框架:
Struts是最早的java开源框架之一,它是MVC设计模式的一个优秀实现。 Struts定义了通用的Controller(控制器),通过配置文件(通常是 Struts -config.xml)隔离Model(模型)和View(视图),以Action的概念以对用户请求进行了封装,使代码更加清晰易读。 Struts还提供了自动将请求的数据填充到对象中以及页面标签等简化编码的工具。 Struts能够开发大型Java Web项目。
- hibernate框架
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
- spring框架
Spring的一个最大的目的就是使J2EE开发更加容易。同时,Spring之所以与Struts、Hibernate等单层框架不同,是因为Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。可以说Spring是一个提供了更完善开发环境的一个框架,可以为POJO(Plain Old Java Object)对象提供企业级的服务。