MVC设计模式应用
- MVC登录程序清单
1 User JAVABean 用户登录操作类,跟数据库中表的信息对应 2 DatabaseConnection JavaBean 负责数据库的连接和关闭操作 3 IUserDAO JavaBean 定义登录操作的DAO接口 4 UserDAOImpl JavaBean DAO接口的真实实现类,完成具体的登录验证 5 UserDAOProxy JavaBean 定义代理操作,负责数据库的打开和关闭并且调用真实主体 6 UserDAOFactory JavaBean 工厂类,取得DAO接口的实例 7 LoginServlet Servlet 接收请求参数,进行参数验证,调用DAO完成具体的登录验证,并更具DAO的验证结果返回登录信息 8 index.html jsp 提供用户输入 9 login.jsp jsp 返回信息
User类
/**
*
*/
package org.lh.mvcdemo.vo; /**
* @author huanli2
*
*/
public class User {
private String userid;
private String name;
private String password;
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid; }
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} }
- DateBaseConnectio类
/**
*
*/
package org.lh.mvcdemo.dbc; import java.sql.Connection;
import java.sql.DriverManager; /**
* @author huanli2
*
*/
public class DatabaseConnection {
private static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
private static final String DBURL = "jdbc:mysql://localhost:3306/mydb";
private static final String DBUSER = "root";
private static final String DBPASSWORD = "root";
private Connection conn = null;
public DatabaseConnection() throws Exception{
try{
Class.forName(DBDRIVER);
this.conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
}catch(Exception e){
throw e;
}
}
public Connection getConnection() {
return this.conn;
}
public void close() throws Exception{
if(this.conn!=null){
try{
this.conn.close();
}catch(Exception e){
throw e;
}
}
} }
- IUserDAO类
/**
*
*/
package org.lh.mvcdemo.dao; import org.lh.mvcdemo.vo.User; /**
* @author huanli2
*
*/
public interface IUserDAO {
public boolean findLogin(User user) throws Exception;
}
- UserDAOImpl
/**
*
*/
package org.lh.mvcdemo.dao.ipl; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import org.lh.mvcdemo.dao.IUserDAO;
import org.lh.mvcdemo.vo.User; /**
* @author huanli2
*
*/
public class UserDAOImpl implements IUserDAO{ private Connection conn=null;
private PreparedStatement pstmt = null;
public UserDAOImpl (Connection conn){
this.conn = conn;
}
/* (non-Javadoc)
* @see org.lh.mvcdemo.dao.IUserDAO#findLogin(org.lh.mvcdemo.vo.User)
*/
public boolean findLogin(User user) throws Exception {
// TODO Auto-generated method stub
boolean flag =false;
try{
String sql = "SELECT name FROM info WHERE userid=? AND password=?";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setString(1, user.getUserid());
this.pstmt.setString(2, user.getPassword());
ResultSet rs = this.pstmt.executeQuery();
if(rs.next()){
user.setName(rs.getString(1));
flag=true;
}
}catch(Exception e){
throw e;
}finally{
if(this.pstmt!=null){
try{
this.pstmt.close();
}catch(Exception e){
throw e;
}
}
}
return flag;
} }
UserDAOProxy
/**
*
*/
package org.lh.mvcdemo.dao.proxy; import org.lh.mvcdemo.dao.IUserDAO;
import org.lh.mvcdemo.dao.ipl.UserDAOImpl;
import org.lh.mvcdemo.dbc.DatabaseConnection;
import org.lh.mvcdemo.vo.User; /**
* @author huanli2
*
*/
public class UserDAOProxy implements IUserDAO{
private DatabaseConnection dbc = null;
private IUserDAO dao = null;
public UserDAOProxy(){
try{
this.dbc=new DatabaseConnection();
}catch(Exception e){
e.printStackTrace();
}
this.dao=new UserDAOImpl(this.dbc.getConnection());
} /* (non-Javadoc)
* @see org.lh.mvcdemo.dao.IUserDAO#findLogin(org.lh.mvcdemo.vo.User)
*/
public boolean findLogin(User user) throws Exception {
// TODO Auto-generated method stub
boolean flag = false;
try{
flag = this.dao.findLogin(user);
}catch(Exception e){
throw e;
}finally{
this.dbc.close();
}
return flag;
} }
DAOFactory
/**
*
*/
package org.lh.mvcdemo.factory; import org.lh.mvcdemo.dao.IUserDAO;
import org.lh.mvcdemo.dao.proxy.UserDAOProxy; /**
* @author huanli2
*
*/
public class DAOFactory {
public static IUserDAO getIUserDAOInstance(){
return new UserDAOProxy();
}
}
LoginServlet
package org.lh.mvcdemo.servlet; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.lh.mvcdemo.factory.DAOFactory;
import org.lh.mvcdemo.vo.User; /**
* Servlet implementation class LoginServlet
*/
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String path = "login.jsp";
String userid = request.getParameter("userid");
String userpass = request.getParameter("userpass");
List<String> info = new ArrayList<String>();
if(userid==null||"".equals(userpass)){
info.add("用户id不能为空!");
} if(userpass==null||"".equals(userpass)){
info.add("密码不能为空!");
}
if(info.size()==0){
User user = new User();
user.setPassword(userpass);
user.setUserid(userid);
try{
if(DAOFactory.getIUserDAOInstance().findLogin(user)){
info.add("用户登录成功,欢迎"+user.getName()+"光临");
}else{
info.add("用户登录失败,错误的用户名和密码!");
}
}catch(Exception e){
e.printStackTrace();
}
}
request.setAttribute("info", info);
request.getRequestDispatcher(path).forward(request, response);
// String userid = request.getParameter("userid");
// String userpass = request.getParameter("userpass");
// User user = new User();
// user.setPassword(userpass);
// user.setUserid(userid);
// try{
// if(DAOFactory.getIUserDAOInstance().findLogin(user)){
// System.out.println("用户登录成功,欢迎"+user.getName()+"光临");
// }else{
// System.out.println("用户登录失败,错误的用户名和密码!");
// }
// }catch(Exception e){
// e.printStackTrace();
// }
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(request, response);
} }
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="LoginServlet.do" >
用户Id: <input type="text" name="userid"><br>
密 码<input type="password" name="userpass"><br> <input type="submit" value="登录">
<input type="reset" value="重置">
</form>
</body>
</html>
login.jsp
<%@ page language="java" contentType="text/html; charset=GBK" import="java.util.*"
pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
List<String> info = (List<String>)request.getAttribute("info");
if(info!=null){
Iterator it = info.iterator();
while(it.hasNext()){
%> <h4><%=it.next() %></h4><%
}
}
%>
</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>m</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>org.lh.mvcdemo.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/LoginServlet.do</url-pattern>
</servlet-mapping>
</web-app>
MVC设计模式应用的更多相关文章
- AngularJS_01之基础概述、设计原则及MVC设计模式
1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②K ...
- 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式
作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题. [出现频率] [关键考点] MVC的含义 MVC的结构 ...
- Java Web开发中MVC设计模式简介
一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条 ...
- MVC设计模式与三层架构
三层架构分别是:表示层(Web层).业务逻辑层(BLL层)和数据访问层(DAL层). (1)表示层负责: a.从用户端收集信息 b.将用户信息发送到业务服务层做处理 c.从业务服务层接收处理结果 d. ...
- 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...
- mvc设计模式和mvc框架的区别
Spring中的新名称也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 对于刚刚接触spring的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女 ...
- MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)
设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...
- MVC设计模式(持续更新中)
MVC设计模式--->英文全称为: model(模型) View (视图) Controller(控制) MVC是一种设计思想.这种思想强调实现模型(Model).视图(View)和控制 ...
- iOS中MVC设计模式
在组织大型项目的代码文件时,我们常用MVC的思想.MVC的概念讲起来非常简单,就和对象(object)一样.但是理解和应用起来却非常困难.今天我们就简单总结一下MVC设计理念. MVC(Model V ...
- java MVC设计模式
MVC(Model View Control)模型-视图-控制器 一.MVC与模板概念的理解 MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是 ...
随机推荐
- iOS开发之手势gesture详解(一)
前言 在iOS中,你可以使用系统内置的手势识别(GestureRecognizer),也可以创建自己的手势.GestureRecognizer将低级别的转换为高级别的执行行为,是你绑定到view的对象 ...
- yii使用bootstrap分页样式
Bootstrap是Twitter推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架.Bootstra ...
- hdu 4510(模拟)
小Q系列故事——为什么时光不能倒流 Time Limit: 300/100 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)T ...
- EXT.JS以下两种写法在初始载入时是一样的效果
/* Ext.application({ name: 'MyfirstApplication', launch: function () { Ext.Msg.alert("Hello&quo ...
- QBXT T15214 Day2上午遭遇
题目描述 你是能看到第一题的 friends呢. -- hja ?座楼房,立于城中 . 第?座楼,高度 ℎ?. 你需要一开始选择座楼,跳. 在第 ?座楼准备跳需要 ??的花费. 每次可以跳到任何一个还 ...
- 【APIO2015】Jakarta Skyscrapers
题目描述 印尼首都雅加达市有 $N$ 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 $0$ 到 $N − 1$.除了这 $N$ 座摩天楼外,雅加达市没有其他摩天楼. 有 $M$ 只叫做 ...
- DTrace Oracle Database
http://d.hatena.ne.jp/yohei-a/20100515/1273954199 DTrace で Oracle Database のサーバー・プロセスをトレースしてみた Oracl ...
- 【IE】IE对line-height 失效的的解决方案
微软的IE9 + Extjs3.1 确实头疼.在使用了line-height:20px 的Tree的样式,可是一直没有生效, 以下给出3中解决方式: 方案1.加padding-top: <div ...
- mysql 授权新的root用户
grant all privileges to *.* on system@'localhost' identified by 'woshishui' with grant option;
- mysql生产环境____主从同步修复案例
一. 硬件环境 Master: Dell R720 Intel(R)Xeon(R) CPU E5-2640 v2 @ 2.00GHz MEM 64G.disk 4*2.5 SAS 网络4* 千兆 ...