1. 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;
} }
  1. 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;
}
}
} }
  1. IUserDAO类
/**
*
*/
package org.lh.mvcdemo.dao; import org.lh.mvcdemo.vo.User; /**
* @author huanli2
*
*/
public interface IUserDAO {
public boolean findLogin(User user) throws Exception;
}
  1. 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>
密&nbsp;&nbsp;码<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设计模式应用的更多相关文章

  1. AngularJS_01之基础概述、设计原则及MVC设计模式

    1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②K ...

  2. 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式

    作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题. [出现频率] [关键考点] MVC的含义 MVC的结构 ...

  3. Java Web开发中MVC设计模式简介

    一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条 ...

  4. MVC设计模式与三层架构

    三层架构分别是:表示层(Web层).业务逻辑层(BLL层)和数据访问层(DAL层). (1)表示层负责: a.从用户端收集信息 b.将用户信息发送到业务服务层做处理 c.从业务服务层接收处理结果 d. ...

  5. 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销

    第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...

  6. mvc设计模式和mvc框架的区别

    Spring中的新名称也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 对于刚刚接触spring的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女 ...

  7. MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)

    设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...

  8. MVC设计模式(持续更新中)

    MVC设计模式--->英文全称为: model(模型)  View (视图)  Controller(控制)   MVC是一种设计思想.这种思想强调实现模型(Model).视图(View)和控制 ...

  9. iOS中MVC设计模式

    在组织大型项目的代码文件时,我们常用MVC的思想.MVC的概念讲起来非常简单,就和对象(object)一样.但是理解和应用起来却非常困难.今天我们就简单总结一下MVC设计理念. MVC(Model V ...

  10. java MVC设计模式

    MVC(Model View Control)模型-视图-控制器 一.MVC与模板概念的理解 MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是 ...

随机推荐

  1. fork()函数的执行过程、孤儿进程和僵尸进程

    说起fork就不得不提COW(Copy On Write),就是“写时拷贝”.也就是当fork发生时,子进程根本不会去拷贝父进程的内存页面,而是与父进程共享.当子进程或父进程需要修改一个内存页面时,L ...

  2. AC日记——Number Sequence hdu 1711

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. 346. Moving Average from Data Stream

    /* * 346. Moving Average from Data Stream * 2016-7-11 by Mingyang * 这里注意的就是(double) sum / count * su ...

  4. MySQL的1067错误

    1.打开my.ini文件,找到default-storage-engine=InnoDB这一行,把它改成default-storage-engine=MyISAM.*** my.ini必须为ansi格 ...

  5. Unity -- 用EasyAR制作出AR红包

    第一部分:前言 实现功能:打开APP或运行该demo后,会从天而降红包,有些红包是空的(大一点的),抖动的红包里面“有钱”,点击之后会产生相应的交互.   第二部分:预览 所用到的资源:   红包模型 ...

  6. Mac下export生效

    在Terminal下用export PS1=XXX   修改完后,本次生效,但是重新启动Teminal后又恢复到默认格式.如何才能永久保存自定义的提示符格式呢? 1,~下面本来没有 .bash_pro ...

  7. eclipse下的ssh框架整合过程及測试

    最近在搭建Stuts2+hibernate+spring的框架,网上看的教程,大部分都是非常easy的步骤.没有比較具体的步骤以及每一个步骤完毕之后怎样检查是否配置成功.下面是笔者依据自己搭建的过程进 ...

  8. Mybatis分页插件-PageHelper的使用

    转载:http://blog.csdn.net/u012728960/article/details/50791343 Mybatis分页插件-PageHelper的使用 怎样配置mybatis这里就 ...

  9. OpenGL之路(七)为立方体加入丰富色彩

    在立方体的六个面贴上不同的颜色,假设想达到混合颜色的效果,能够參照立方体的前面代码在每一行前都加上颜色 代码例如以下 #include <gl/glut.h> #pragma commen ...

  10. Android最佳实践之Material Design

    Material概述及主题 学习地址:http://developer.android.com/training/material/get-started.html 使用material design ...