MVC之实例操作---MVC设计模式应用

MVC的第一个实例-----一个登陆:

首先我们需要一个VO类:

package com.keith.bean;

public class TUser implements java.io.Serializable {
	private static final long serialVersionUID = 1L;
	
	private Integer userid;
	private String userName;
	private String pwd;

	public TUser() {
	}

	public Integer getUserid() {
		return userid;
	}

	public void setUserid(Integer userid) {
		this.userid = userid;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

}

 需要一个数据库工具类,DBConn:

package com.keith.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConn {
	private static final String DBDRIVER = "com.mysql.jdbc.Driver";
	private static final String DBURL = "jdbc:mysql://127.0.0.1:3306/login";
	private static final String DBUSER = "root";
	private static final String DBPWD = "kejianjun";
	private Connection conn = null;

	public DBConn() {
		try {
			Class.forName(DBDRIVER);
			conn = DriverManager.getConnection(DBURL, DBUSER, DBPWD);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}
	
	public void close() throws Exception{
		if (this.conn != null) {
			try {
				conn.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		}
	}
	public Connection getConn() {
		return conn;
	}

	public void setConn(Connection conn) {
		this.conn = conn;
	}

}

 然后从页面开始index.jsp(客户端验证一下):

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script type="text/javascript">
		function validate(f){
			if (!(/^\w{4,15}$/.test(f.username.value))) {
				alert("用户名必须是4~16位!");
				f.username.focus();
				return false;
			}
			if (!(/^\w{4,15}$/.test(f.pwd.value))) {
				alert("密码必须是4~15位!");
				f.pwd.focus();
				return false;
			}
			return true;
		}
	</script>
  </head>
  
  <body>
  <%
  	List<String> info = (List<String>)request.getAttribute("info");
  	if(info != null){
  		Iterator<String> iter = info.iterator();
  		while(iter.hasNext()){
   %>
  	<h3><font color="red"><%=iter.next() %></font></h3> 
   <%}
   } %>
	<form action="login" method="post" onsubmit="return validate(this)" name="f">
		用户名:<input type="text" name="username"><br />
		密&nbsp;码:<input type="password" name="pwd"><br />
		<input type="submit" value="登陆">&nbsp;&nbsp;&nbsp;
		<input type="reset" value="取消">		
	</form>
  </body>
</html>

 然后通过发出的login请求在web.xml里找到想对应的servlet:

web.xml:

	<servlet>
		<servlet-name>login</servlet-name>
		<servlet-class>com.keith.servlet.LoginServlet</servlet-class>
	</servlet>  
	<servlet-mapping>
		<servlet-name>login</servlet-name>
		<url-pattern>/login</url-pattern>
	</servlet-mapping>
	
	<servlet>

 找到了LoginServlet:

package com.keith.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.keith.bean.TUser;
import com.keith.factory.DAOFactory;

/**
 * 定义Sevlet
 * 
 * @author T
 * 
 */
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		String sucPath = "main.jsp";
		String loginEroPath = "index.jsp";
		String username = req.getParameter("username");
		String pwd = req.getParameter("pwd");
		List<String> info = new ArrayList<String>();
		if (username == null || "".equals(username)) {
			info.add("用户名不能为空!");
		}
		if (pwd == null || "".equals(pwd)) {
			info.add("密码不能为空!");
		}
		//用户名密码通过验证
		if (info.size() == 0) {
			//实例化VO
			TUser user = new TUser();
			//设置username
			user.setUserName(username);
			//设置pwd
			user.setPwd(pwd);
			if (DAOFactory.getIUserDAOInstance().findLogin(user)) {
				info.add("欢迎:" + user.getUserName());
				//保存信息,进行跳转
				req.setAttribute("info", info);
				req.getRequestDispatcher(sucPath).forward(req, resp);
			} else {
				info.add("用户信息错误!");
				req.setAttribute("info", info);
				req.getRequestDispatcher(loginEroPath).forward(req, resp);
			}
		}
	}

}

 通过DAO工厂找到UserDAO的实例:这是DAOFactory:

package com.keith.factory;

import com.keith.dao.IUserDAO;
import com.keith.dao.proxy.UserDAOProxy;

/**
 * 定义工厂类,取得DAO实例
 * @author T
 *
 */
public class DAOFactory {
	/**
	 * 取得DAO实例
	 * @return
	 */
	public static IUserDAO getIUserDAOInstance(){
		//返回代理实例
		return new UserDAOProxy();
	}
}

 返回代理实例,找到userDAO的代理类:

package com.keith.dao.proxy;

import com.keith.bean.TUser;
import com.keith.dao.IUserDAO;
import com.keith.dao.UserDAOImpl;
import com.keith.util.DBConn;

/**
 * DAO代理操作类
 * 
 * @author T
 * 
 */
public class UserDAOProxy implements IUserDAO {
	private DBConn dbc = null;
	private IUserDAO dao = null;

	public UserDAOProxy() {
		//实例化数据库连接
		this.dbc = new DBConn();
		this.dao = new UserDAOImpl(this.dbc.getConn());
	}

	/**
	 * 代理登陆方法
	 */
	public boolean findLogin(TUser user) {
		boolean flag = false;
		try {
			// 调用真实主题
			flag = this.dao.findLogin(user);
			this.dbc.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return flag;
	}

}

 找到UserDAOImpl的并执行它的findLogin()方法:

package com.keith.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.keith.bean.TUser;

public class UserDAOImpl implements IUserDAO {
	private Connection conn = null;
	private PreparedStatement pstm = null;

	public UserDAOImpl(Connection conn) {
		this.conn = conn;
	}

	/**
	 * 登陆
	 * 
	 * @throws SQLException
	 */
	public boolean findLogin(TUser user) {
		boolean flag = false;
		try {
			String sql = "SELECT username,pwd FROM tuser WHERE username=? and pwd=?";
			this.pstm = this.conn.prepareStatement(sql);
			this.pstm.setString(1, user.getUserName());
			this.pstm.setString(2, user.getPwd());
			ResultSet rs = this.pstm.executeQuery();
			if (rs.next()) {
				user.setUserName(rs.getString(1));
				flag = true;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (this.pstm != null) {
					this.pstm.close();
				}
			} catch (SQLException e2) {
				e2.printStackTrace();
			}
		}
		return flag;
	}

}

 实现了IUserDAO接口:

package com.keith.dao;

import java.sql.SQLException;

import com.keith.bean.TUser;

/**
 * userDao接口
 * 
 * @author T
 * 
 */
public interface IUserDAO {
	/**
	 * 用户登录验证
	 * 
	 * @param user
	 * @return
	 */
	public boolean findLogin(TUser user);
}

 以上就是一个MVC的简单实例;

 

Django框架中的Shell应用及MVC设计模式 我们的模型定义放在models.py文件中,视图定义放在views.py文件中,模板放在templates目录中,URL映射放在urls.py文件中。在Django框架中,Shell应用是一种非常强大和灵活的工具,它允许开发者在命令行界面中与应用程序交互,并执行各种操作。在实际开发中,我们可以在Shell应用中执行更复杂的操作,如数据导入、数据清理、调试等。在Django框架中,我们可以按照MVC设计模式来组织应用程序的结构,以便更好地管理代码和实现复杂的业务逻辑。接下来,我们将创建一个简单的模型。 阅读详情

相关推荐

深入理解MVC设计模式及其在Java DJ View中的应用

本文深入探讨了MVC设计模式的核心概念及其在Java DJ View项目中的具体应用。通过分解MVC模式的各个组成部分,包括模型、视图和控制器的职责,文章揭示了它们如何协同工作以实现高度解耦和灵活的设计。文章还详细阐述了观察者模式和策略模式在MVC中的角色,以及它们如何增强应用程序的可维护性和可扩展性。

weixin_30533301的博客 449

MVC模式讲解与实例

MVC模式 1、概念 MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 其中M层处理数据,业务逻辑等;V层处理界面的显示结果;C层起到桥梁的作用,来控制V层和M层通信以此来达到分离视图显示和业务逻辑层。 2.1 MVC流程 1、View接受用户的交互...

JackiAndroid的专栏 6405

简单的MVC框架例子

一个简单的MVC例子:以javabean为基础(一个学生类)通过servlet控制页面跳转(处理业务逻辑、数据库连接等操作),jsp实现动态网页。

JSP( `EL表达式——获取数据` 和 `JSTL标签——展现数据`)(已被替代) 、 `MVC模式` 和 `三层架构`实现增删改查操作

>JSP 及 JSP 原理 > 在 JSP中使用 `EL表达式` 和 `JSTL标签` > `MVC模式` 和 `三层架构` > 完成品牌数据的增删改查功能

habe33的博客 1178

简单的MVC模式小实例

简单的MVC模式小实例 简单的MVC模式小实例 简单的MVC模式小实例

基于MVC模式的实例

基于MVC模式下设计的多个实例 开发环境: Visual Studio 2010(MVC3) SQL2005 运行环境: .net framework 4.0 SQL2005 网站架构: MVC3 EF4.0 SQLSERVER2005 JSON XML 网站结构: 权限:.net membership 文章分类:category.js(json格式存储) 文章内容:表 blog_article,blog_articledetail 以及 视图 blog_varticle 配置信息:general.config

MVC模式(跟着敲小白也能看懂的MVC案例)

MVC模式看不懂?一个案例带你理解,跟着敲下来,小白也能理解了。

EP的别三日 1303

MVC模式练习(游戏案例)

mcv模式练习,以创建游戏角色为案例,有选择菜单,按菜单进行选择,代码按照mvc模式分块

MVC模式实例

MVC是一种架构型模式,它本身不引入新的功能,只是指导我们把web应用结构做的更加合理,实现逻辑与页面相分离。 在MVC模式中,应用程序被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分。 1:模型部分包含了应用程序的业务逻辑和业务数据; 2:视图部分封装了应用程序的输出形式,也就是通常所说的页面或者是界面; 3:控制器部分负责协调模型和视图,...

weixin_30764137的博客 308

gitlib安装、 团队 Git 协作完整教程(企业级标准流程)

最精简的一句话主分支不写代码,每人一条功能分支,每天同步,完成提交合并。

雪的季节 302

iOS安全攻防:从DarkSword漏洞利用链剖析到纵深防御实践

在移动安全领域,内存破坏漏洞(如堆溢出、释放后使用)是攻击者突破系统防线、实现远程代码执行和权限提升的核心技术原理。这些漏洞利用技术通过精心构造的攻击链,能够绕过沙箱、地址空间布局随机化等安全机制,最终威胁设备内核安全,其技术价值在于揭示了系统安全架构的潜在薄弱环节。在iOS应用开发与系统防护中,理解此类攻击链对于构建有效的纵深防御体系至关重要。应用场景涵盖从安全编码、网络通信加固到运行时应用程序自保护等多个层面。本文以DarkSword工具包为例,深入拆解其利用链,并分享如何通过内存安全实践、代码签名强化

weixin_30357231的博客 481

MVC综合案例

mvc

weixin_56777219的博客 1853

Springboot+Vue 实现鸿蒙商城管理系统开发实践

通过使用 Springboot 和 Vue 技术栈,我们成功实现了鸿蒙商城管理系统的开发。系统具备用户管理、商品管理、订单管理、库存管理和统计分析等功能,支持 Web 端和鸿蒙端的访问和操作。在开发过程中,我们充分利用了 Springboot 的快速开发优势和 Vue 的组件化开发特点,提高了开发效率和系统的可维护性。同时,通过与鸿蒙设备的集成,实现了多设备之间的数据交互和协同工作,提升了用户体验。

ZXJ_SXT的博客 1324

MVP和MVC

MVP(Model - View - Presenter)和MVC(Model - View - Controller)是实际项目开发中非常流行的两种设计模式,笔者看过很多文章讨论这两种模式有什么异同,甚至辩论孰强孰弱,看的一头雾水。 大家都认同的一点是MVP和MVC有

广告业的程序员 2313

航测无人机las点云数据生成DEM

“ 做航测的同僚都知道,Pix4D或者CC(ContextCapture)都可以生成DSM,往往高程点提取以及土方计算都需要用到DEM,PhotoScan软件可以提出地面点并只应用地面点连接三角网,然而分类效果差,生成的DEM不管是平整度还是精度,都不理想。而传统等高线生DEM需要耗费较长时间,以下提供一种参考方法,供大家探讨。 ” 1 点云数据 航测类软件大多可以生成点云数据,如Pix4D,PhotoScan,CC等,此次点云数据为citymapper2相片基于CC生产的Las点云。 2 筛选地面点 筛.

qq_43173805的博客 1万+

【应用】什么是Azure?一文读懂微软云的核心逻辑与全球版图

作为微软的核心云计算服务平台,Azure不仅是数字化转型的引擎,更是全球企业在构建、扩展与优化IT基础设施时的首选平台。在这篇文章中,我们将深入探讨Azure云服务平台的各个方面,涵盖其核心优势、架构、功能、应用场景以及未来发展趋势。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1957

MVC设计模式及Web+Mysql版人员管理信息系统

一、MVC设计模式 1、软件设计模式 软件设计模式(Design pattern)又成为设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 设计模式是为了可重用代码、让代码更容易被他人理解、保证代码的可靠性、程序的重用性。 2、MVC的概念 MVC(Model View Controller)是模型-视图-控制器的缩写,一种软件设计典范,用一种业务逻辑、数据、展示界面分离的方法组织代码,将业务逻辑聚集到一个部件中,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻

丶Jan 1229

基于FPGA的7x7矩阵求逆verilog开发

up目录一、理论基础二、核心程序三、测试结果 矩阵求逆,即求矩阵的逆矩阵。矩阵是线性代数的主要内容,很多实际问题用矩阵的思想去解既简单又快捷。逆矩阵又是矩阵理论的很重要的内容,逆矩阵的求法自然也就成为线性代数研究的主要内容之一。设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩B,使得: AB=BA=E。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。其中,E为单位矩阵。典型的矩阵求逆方法有:利用定义求逆矩阵、初等变换法、伴随阵法、恒等变形法等。 逆矩阵的求法有多种,其中重要

FPGA/MATLAB学习教程/源码/项目合作开发 3898

MVC——再探MVC——增删查改

MVC是我大学学的比较弱的,甚至不懂原理。(那时候都在准备蓝桥杯软件杯比赛。) 在重新学肯定要学MVC 现在知道了为什么叫MVC了 MVC是怎么工作的 MVC是一个设计模式 控制器(Controller)和视图(View)通过model传输逻辑和显示互补干扰 第一个例子--增删查改 using System; us...

diaopinglan6176的博客 110

华为OD机试真题 新系统 9月16号 【园区基站节能部署规划】

华为OD机试真题 新系统【园区基站节能部署规划】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【园区基站节能部署规划】多语言题解。

qq_45776114的博客 356

突破Cloudflare 5秒盾:TLS指纹伪装+Playwright行为模拟,爬虫存活率从35%提至78%

TLS指纹精准识别:Cloudflare会解析客户端的TLS Client Hello包(如SSL版本、密码套件、扩展字段),Python的requests/urllib库的TLS指纹是“黑名单级”,请求一出即被拦截;行为特征检测:静态的浏览器伪装(如User-Agent)已失效,Cloudflare会监控页面加载后的行为(是否有鼠标移动、滚动、点击,行为是否机械);JS环境深度验证:通过WebGL、Canvas、字体渲染、Navigator属性生成浏览器指纹,无头浏览器的默认配置会被瞬间识别;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2360

表述MVC与掌握JDBC基本操作

MVC表述 MVC 是(Model View Controller)模型-视图-控制器设计创建 Web 应用程序的模式 ------ 1.模型对象负责在数据库中存取数据,相当与传输数据的载体。(javaBean) ------ 2.视图是用户看到并与之交互的界面,它只是作为一种输出数据并允许用户操纵的方式。(jsp、html) ------ 3.控制器负责从视图读取数据,控制用户输入,...

weixin_44819924的博客 232

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MVC 设计模式

mvc是用的很多的设计模式,一旦搭建好 可以给以后的开发带来很多方便,所以很有必要研究一下。 下面是摘自百度的对mvc设计模式介绍的链接,写的不错。 简单来讲就是把数据、显示、操作分开,model保存数据,view负责显示,control衔接两者。 下次写个mtk的venu

zijian1984的专栏 575

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

初始MVC初识jdbc

1.使用自己的话表述MVC. MVC是Java设计模式中的一种以我个人的话来说,V代表着视图 也就是用户能看到的通过V(视图)我们能知道信息可以直观的了解到信息也就是页面(jsp或者html)再说C(控制) C是各种信息交互的地方C指明了什么信息要到哪里去拿或者把信息传给V 是中间的那一层 M(模型) 是封装了那些信息的一层 。 2.掌握JDBC的基本操作。 对book表中的数据进行增删改查; 我...

weixin_45455354的博客 184

我眼中的ASP.NET.MVC

我眼中的ASP.NET.MVC MVC MVC全名: Model View Controller (Model-模型 View-视图 Controller-控制器)是一种经典的,经久不衰的,屹立不倒的软件设计框架。实现了业务逻辑、数据、界面显示的分离。       Model(模型)是应用程序中用...

靠嘴吃饭 525
上一篇: javaWeb之MVC模式
下一篇: jsp/servlet之过滤器
keithJava
博客等级 码龄16年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值