MVC(Model -View-Controller)实例应用模式
MVC(Model -View-Controller)实例应用模式
以登录为例:
Model:User
- 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;
- }
- }
数据库连接类:
- 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;
- }
- }
View层:登录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 />
- 密 码:<input type="password" name="pwd"><br />
- <input type="submit" value="登陆">
- <input type="reset" value="取消">
- </form>
- </body>
- </html>
配置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>
Controller控制层 servlet
- 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的代理类:
Java代码
- 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()方法:
Java代码
- 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接口:
Java代码
- 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(Model -View-Controller)实例应用模式的更多相关文章
- What is the difference between Reactjs and Rxjs?--React is the V (View) in MVC (Model/View/Controller).
This is really different, React is view library; and Rxjs is reactive programming library for javasc ...
- 深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)
在DRP中终于接触到了MVC,感触是确实这样的架构系统灵活性不少,现在感触最深的就是使用tomcat作为服务器发布比IIS好多了,起码发布很简单,使用起来方便. 首先来简单的学习一下MVC的基础知识, ...
- Model View Controller (MVC) Overview
By Rakesh Chavda on Jul 01, 2015 What is MVC?Model View Controller is a type of user interface archi ...
- MVC模式(Model View Controller)下实现数据库的连接,对数据的删,查操作
MVC模式(Model View Controller): Model:DAO模型 View:JSP 在页面上填写java代码实现显示 Controller:Servlet 重定向和请求的转发: 若 ...
- MVC(Model View Controller)框架
MVC框架 同义词 MVC一般指MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一 ...
- Model View Controller(MVC) in PHP
The model view controller pattern is the most used pattern for today’s world web applications. It ha ...
- Model View Controller
On the iPhone or iPod touch, a modal view controller takes over the entire screen. This is the defau ...
- Qt Model/view 小实例 文件目录浏览器
1. 文件目录浏览器 直接在main.cpp文件中添加下列代码 #include "mainwindow.h" #include <QApplication> #inc ...
- 设计模式 --- 模型-视图-控制器(Model View Controller)
模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已广泛应用于用户交互应用程 ...
- MVC4 Model View Controller分离成独立项目
适合人群:了解MVC项目的程序员 开发工具:vs2012 开发语言:C# 小项目或功能比较单一的项目可以直接新建一个MVC基本项目类型即可,但随着需求不断迭代,项目的功能模块越来越多,甚至有些模块可以 ...
随机推荐
- vue中$refs的使用
vue中$refs获取组件或元素: 获取的元素就相当于是一个原生获取的元素,可以进行操作 this.$refs.ele.style.color = 'red
- 缺少的文件是 ..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props。
报错信息: 严重性 代码 说明 项目级别 文件 行 禁止显示状态 工具错误 这台计算机上缺少此项目引用的 NuGet 程序包.使用“NuGet 程序包还原”可下载这些程序包.有关更多信息,请参见 ht ...
- linux服务器上使用find查杀webshell木马方法
本文转自:http://ju.outofmemory.cn/entry/256317 只要从事互联网web开发的,都会碰上web站点被入侵的情况.这里我把查杀的一些方法采用随记的形式记录一下,一是方便 ...
- springMVC的配置与使用
springMVC的配置与使用 spring mvc 核心类与接口 先来了解一下,几个重要的接口与类.现在不知道他们是干什么的没关系,先混个脸熟,为以后认识他们打个基础. DispatcherServ ...
- CentOS 7系统上添加netcdf库
这里提供两种方法来安装 netcdf: 一是 yum 安装,yum 安装时采用的是系统自带的 gfortran 编译器,版本较旧: 二是采用源码来 Makefile 编译安装的方式,它可以下载最新版的 ...
- node.js http接口调试时请求串行特性分析
缘起: 产品业务上有个类数据库服务的请求时间比较长(类似mysql的sql查询),为了优化减少并发时的请求数,做了一个并发时共用请求的优化. 通过单元测试后,想通过手动模拟看下效果,发现优化一直不能生 ...
- centos7搭建日志服务器
服务器端 修改配置文件 /etc/rsyslog.conf中 $ModLoad imudp $UDPServerRun 514 打开日志服务监听 修改/etc/sysconfig/rsyslog文件 ...
- CISCO 关闭4786端口解决方法
先确认交换机是否支持smart install服务 检查命令如下: switch#show vstack config | inc Role Role:Client (SmartInstall ena ...
- LeakCanary 来检查 Android 内存泄漏
LeakCanary 来检查 Android 内存泄漏
- Java中java.util.concurrent包下的4中线程池代码示例
先来看下ThreadPool的类结构 其中红色框住的是常用的接口和类(图片来自:https://blog.csdn.net/panweiwei1994/article/details/78617117 ...