<p:colorscheme colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"> </p:colorscheme>
我们以登录为例,讲解MVC
模式的运用
<p:colorscheme colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"> </p:colorscheme>
•文字说明
客户进入登陆界面(视图),利用用户名和密码来登录系统,跳转到Servlet(控制器),通过Servlet传递参数来JavaBean(模型),JavaBean通过验证后,采取跳转不同的界面,即没有查询到数据,则显示登录失败的页面(视图)。否则通过权限值的不同跳转到不同的权限界面(视图)。
分析设计
<p:colorscheme colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00">
- 1.数据库设计
- 2.MVC模式的分离
- 设计模式的选用
- 6.通过不同的异常和属性值控制导向不同的方向(策略模式)
<p:colorscheme colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"></p:colorscheme>
数据库设计
数据库名:company
表名:user
user的字段:
username:varchar(20) primary key
password:varchar(20)
priority:int default 0 //优先级的最低为0
MVC模式的分离
控制器:com.eimhe.controler.LoginAction
模型:com.eimhe.model.User
com.eimhe.model.Query
com.eimhe.model.QueryBeanFactory
com,eimhe.model.ConnectionPool
视图:errors.jsp
login.jsp
nonresult.jsp
welcome.jsp
welcomeadmin.jsp
welcomemanage.jsp
为不同的服务设计设计接口(接口模式)
主要的设计业务方法:query(:HttpServletRequest):User
接口:
java 代码
- package com.eimhe.model;
-
- import java.sql.SQLException;
-
- import javax.servlet.http.HttpServletRequest;
-
- import com.eimhe.exception.FieldLengthException;
-
- public interface Query {
- public User query(HttpServletRequest request)throws SQLException,FieldLengthException;
- }
其中
FieldLengthException的声明:
java 代码
- package com.eimhe.exception;
-
- public class FieldLengthException extends Exception {
- public FieldLengthException(String message)
- {
- super(message);
- }
- }
共享数据库链接池(享元模式)
类名:com.eimhe.model.ConnectionPool
方法:public static Connection getConnection() throws SQLException;
代码:
java 代码
- package com.eimhe.model;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
-
- public class ConnectionPool {
- public static Connection getConnection()throws SQLException
- {
- try
- {
- Class.forName("com.mysql.jdbc.Driver");
- return DriverManager.getConnection("jdbc:mysql://localhost:3306/company","root","123456");
- }catch(ClassNotFoundException e)
- {
- System.err.println(e);
- }
- throw new SQLException();
-
- }
- }
产生抽象类型的对象(工厂模式)
利用工厂方法来实例化抽象对象,我们采取内置类的方式来实现接口对象
public class QueryBeanFactory {
public static Query createQuery()
{
return new Query()
{
…….
};
}
}
实现代码:
java 代码
- package com.eimhe.model;
-
- import java.sql.CallableStatement;
- import java.sql.Connection;
- import java.sql.ResultSet;
- import java.sql.SQLException;
-
- import javax.servlet.http.HttpServletRequest;
-
- import com.eimhe.exception.FieldLengthException;
-
- public class QueryBeanFactory {
- public static Query createQuery()
- {
- return new Query()
- {
- private Connection con;
- private CallableStatement call;
- private ResultSet resultSet;
- public User query(HttpServletRequest request)throws SQLException,FieldLengthException
- {
-
- con=ConnectionPool.getConnection();
- call=con.prepareCall("");
- resultSet=call.executeQuery();
- User user=new User();
- String username=request.getParameter("username");
- String password=request.getParameter("password");
- int uLen=username.length();
- int pLen=password.length();
- if(uLen==0 || uLen>20 || pLen==0 || pLen>20)
- {
- throw new FieldLengthException("Fields' length is error!");
- }
- if(!resultSet.next())
- {
- throw new SQLException("Sorry!query: non result!");
- }
- user.setUsername(username);
- user.setPassword(password);
- user.setPriority(resultSet.getInt("priority"));
- return user;
- }
- };
- }
- }
<p:colorscheme colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"> </p:colorscheme>
JDBC中的桥接模式
JDBC通过方法桥接对象:
DriverManager.getConnection() -> Connection.prepareCall()->CallableStatement.executeQuery()->ResultSet
产生特定的Bean(生成器模式)
我们这里通过是用户名和密码的验证的方式来产生User对象,通过实现Query接口的query方法来实现User对象的生成。
通过不同的异常和属性值控制导向不同的方向
若验证成功的话,通过优先数的高低定向到不同的页面。
若验证有问题的话,没有结果的,抛出一个SQLException的异常,并传递信息。若是字符长度不符合的话,那么也会抛出一个FieldLengthException的异常。同样是说不同的异常有不同的页面给出!
LoginAction(控制器):
java 代码
- package com.eimhe.controler;
-
- import java.io.IOException;
- import java.sql.SQLException;
-
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import com.eimhe.exception.FieldLengthException;
- import com.eimhe.model.Query;
- import com.eimhe.model.QueryBeanFactory;
- import com.eimhe.model.User;
-
- public class LoginAction extends HttpServlet {
-
-
-
-
- public LoginAction() {
- super();
- }
-
-
-
-
- public void destroy() {
- super.destroy();
-
- }
-
-
-
-
-
-
-
-
-
-
-
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- doPost(request,response);
- }
-
-
-
-
-
-
-
-
-
-
-
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- Query queryBean=QueryBeanFactory.createQuery();
- try
- {
- User user=queryBean.query(request);
- if(user.getPriority()==2)
- {
- response.sendRedirect("./welcomeadmin.jsp");
- return;
- }
- else if(user.getPriority()==1)
- {
- response.sendRedirect("./welcomemanager.jsp");
- return;
- }
- response.sendRedirect("./welcome.jsp");
- }catch(FieldLengthException e)
- {
- System.err.println(e);
- response.sendRedirect("./nonresult.jsp");
- }catch(SQLException e)
- {
- System.err.println(e);
- response.sendRedirect("./nonresult.jsp");
- }
-
- }
-
-
-
-
-
-
- public void init() throws ServletException {
-
- }
-
- }
分享到:
- 2007-04-11 10:26
- 浏览 4177
- 评论(0)
- 论坛回复 / 浏览 (0 / 4224)
- 查看更多
相关推荐
- **Spring MVC 架构**:理解 MVC 模式如何与 Spring 集成,以及如何实现控制层和视图层。 - **Controller 实现**:创建和配置控制器类,定义请求映射和处理器方法。 - **View Resolver 配置**:设置视图解析器,以...
**标题解析:** "mvc - redis队列dome" 暗示了这是一个关于使用Model-View-Controller(MVC)架构模式与Redis构建队列的示例项目。MVC是一种广泛应用于Web开发的设计模式,它将应用程序分为三个主要部分:模型、视图...
下面通过一个音乐商店的实例来讲解MVC的实现过程。 概览 MVC模式的主要组成部分是模型(Model)、视图(View)和控制器(Controller)。模型负责数据的存储和访问,视图负责用户界面的渲染,控制器负责处理用户...
本教程以英文形式呈现,深入浅出地讲解了Spring MVC的各个关键概念和技术。 1. **Spring MVC简介** Spring MVC是一种轻量级的模型-视图-控制器(MVC)框架,它允许开发者将业务逻辑、数据处理和用户界面分离,从而...
标题“mvc jsp servlet 实例”揭示了本教程的核心内容,即关于Model-View-Controller(MVC)设计模式的实际应用,主要涉及到Java Web开发中的三大组件:Model、View和Controller。在这个实例中,开发者将学习如何...
MVC,即Model-View-Controller,是一种软件设计模式,常用于构建可维护性和可扩展性高的Web应用程序。在J2EE环境中,MVC模式是开发大型企业级应用的重要框架之一。它将应用程序的业务逻辑、用户界面和控制逻辑分离,...
### MyEclipse 开发基于 MVC 模式的 WEB 应用实例讲解 #### 一、概述 MVC(Model-View-Controller)模式是一种常见的软件架构模式,尤其适用于Web应用程序的开发。它通过将应用程序分为三个核心组成部分来提高代码...
本文将详细讲解JSP+Servlet如何实现MVC(Model-View-Controller)架构的改良版原理。 首先,理解MVC模式至关重要。MVC是一种设计模式,用于分离应用程序的数据模型、用户界面和控制逻辑。Model代表业务数据和业务...
ASP.NET MVC 5 是微软开发的一个强大的Web应用程序框架,它结合了ASP.NET Web Forms和ASP.NET MVC的优点,为开发者提供了一种模型-视图-控制器(Model-View-Controller)的架构模式,用于构建可维护、可扩展和高度...
它源自于MVC(Model-View-Controller)模式,但针对UI开发进行了优化,使得业务逻辑和界面表现更加解耦。 在MVVM模式中,有三个主要组成部分: 1. **Model(模型)**:这是应用的核心,包含实际的数据和业务逻辑。...
在JavaWeb开发中,Model2模式是MVC(模型-视图-控制器)设计模式的一种实现,它在传统的JavaWeb应用程序中广泛使用。MVC模式是软件工程中用于分离业务逻辑、用户界面和数据管理的有效工具,使得代码更加模块化,易于...
ASP.NET MVC 2.0 实现用户登录与注销功能实例讲解 ASP.NET MVC 2.0 是一个基于模型视图控制器(MVC)模式的Web应用程序框架,它提供了一种灵活、可扩展的方式来构建Web应用程序。在这篇文章中,我们将讨论如何使用...
在Web开发领域,Model-View-Controller(MVC)模式是一种广泛采用的设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),以实现业务逻辑、数据处理和用户界面的分离。...
实例可能包含JSP脚本元素、表达式语言(EL)、自定义标签库(JSTL)以及Model-View-Controller(MVC)设计模式的应用。 3. **EJB开发**:EJB是J2EE的核心组件,用于构建可扩展、安全和事务性的后端业务逻辑。实例...
1. **MVC 模式**:Model-View-Controller 是一种软件设计模式,用于分离应用程序的数据模型、用户界面和业务逻辑。Spring MVC 将这些职责分配到不同的组件,使得代码更易于管理和测试。 2. **DispatcherServlet**:...
在本实例中,我们将深入理解Spring MVC的基本概念,以及如何在一个实际项目中运用它。 首先,Apache Tomcat 是一个广泛使用的开源Java Servlet容器,它实现了Servlet和JavaServer Pages (JSP) 规范,是搭建Spring ...
MVC模式(Model-View-Controller)是设计模式的一种,常用于Web开发,分离业务逻辑、视图呈现和用户交互控制。 3. **.NET Framework**:这是一个由Microsoft开发的全面的开发平台,包括.NET CLR(Common Language ...
提到.MVC(Model-View-Controller)框架,它是.NET平台上的一个重要部分,用于构建可维护的Web应用程序。MVC模式将应用程序逻辑分为三个主要组件:模型负责数据管理,视图呈现用户界面,控制器处理用户输入并协调...
该标题暗示我们讨论的主题与MVC(Model-View-Controller)模式有关,这是一种广泛应用于Web开发中的设计模式。MVC将应用程序的数据处理、用户界面和控制逻辑分离,使得代码更易于维护和扩展。在本课程中,我们将深入...
10-29 2 svn常用操作 实例讲解1 10-29 3 svn常用操作 实例讲解2 10-29 4 svn常用操作 实例讲解3 10-29 5 svn常用操作 实例讲解4 10-30 1 linux简介 10-30 2 虚拟机安装 linux安装 10-30 3 常用命令 远程控制软件使用...