MVC设计模式应用实例-登录程序

阅读: 评论:0

MVC设计模式应用实例-登录程序

MVC设计模式应用实例-登录程序

----知道自己错在哪的猿是幸福的。
基本功:

要求会用自己的话讲解、MVC设计模式特点、画出MVC处理流程图:程序编写要靠思想!!!




登录程序流程图:




程序清单及作用:整体编程思想!!!




-- 使用 zz 数据库
use zz;
-- 删除 user 表
drop table user if exists user;
-- 创建 user 表
create table user(userid varchar(30) primary key,name varchar(30) not null,password varchar(30) not null
);
insert into user
(userid, name , password) values
('admin', 'administrator', 'admin');



D:ProgramFileswebdemoWEB-INFclassesUser.java

package zz.vo;
public class User{private String userid;private String name;private String password;public void setUserid(String userid){	// 用户IDthis.userid = userid;}public String getUserid(){return this.userid;}public void setName(String name){this.name = name;}public String getName(){return this.name;}public void setPassword(String password){this.password = password;}public String getPassword(){return this.password;}
}

D:ProgramFileswebdemoWEB-INFclassesDatabaseConnection.java

package zz.dbc;
import java.sql.Connection;
import java.sql.DriverManager;
public class DatabaseConnection{public static final String DBDRIVER = "sql.Driver";public static final String DBURL = "jdbc:mysql://localhost:3306/zz";public static final String DBUSER = "root";public static final String DBPASSWORD = "mysql";public Connection conn = null;public DatabaseConnection()throws Exception{	//在构造方法中进行数据库连接try{Class.forName("DBDRIVER");	// 加载驱动 = Connection(DBURL, DBUSER, DBPASSWORD);	// 连接数据库}catch (Exception e){throw e;}}public Connection getConnection(){	// 取得数据库连接;}public void close()throws Exception{if ( != null){lose();}catch (Exception e){throw e;}}}
}

D:ProgramFileswebdemoWEB-INFclassesIUserDAO.java

package zz.dao;
import zz.vo.User;public interface IUserDAO{/****************执行查询操作*************用户登录验证*@param user 传入VO对象*@return 验证的操作结果*@throws Exception*/public boolean findLogin(User user) throws Exception;
}

D:ProgramFileswebdemoWEB-INFclassesUserDAOImpl.java

package zz.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import zz.dao.IUserDAO;
import zz.vo.User;
// 实现类
public class UserDAOImpl implements IUserDAO{private PreparedStatement pstmt = null;private Connection conn = null;public UserDAOImpl(Connection conn){	// 构造方法中设置数据库连接对象! = conn;}public boolean findLogin(User user)throws Exception{boolean flag = false;try{String sql = "SELECT name From user WHERE userid=? AND password=? ";this.pstmt = prepareStatement(sql);	//实例化this.pstmt.setString(1, Userid());	// 设置useridthis.pstmt.setString(2, Password());	// 设置passwordResultSet rs = uteQuery();	// 取得查询结果if (rs.next()){user.String(1));		// 取得姓名flag = true;}}catch (Exception e){throw e;}finally{if (this.pstmt != null){try{this.pstmt.close();}catch (Exception e){throw e;}}}return flag;}
}

D:ProgramFileswebdemoWEB-INFclassesUserDAOProxy.java

package zz.dao.proxy;
import zz.dao.IUserDAO;
import zz.dao.impl.UserDAOImpl;
import zz.dbc.DatabaseConnection;
import zz.vo.User;
public class UserDAOProxy implements IUserDAO{private DatabaseConnection dbc = null;	// 定义数据库连接private IUserDAO dao = null;		// 定义实现类DAO接口public UserDAOProxy(){try{this.dbc = new DatabaseConnection();	// 实例化数据库连接}catch (Exception e){e.printStackTrace();}this.dao = new UserDAOImpl(Connection());}public boolean findLogin(User user)throws Exception{boolean flag = false;try{flag = this.dao.findLogin(user);	// 调用真实主题}catch (Exception e){e.printStackTrace();}finally{this.dbc.close();}return flag;}
}
工厂类:
package zz.factory;
import zz.dao.IUserDAO;
import zz.dao.proxy.UserDAOProxy;public class UserFactory{public static IUserDAO getIUserDAOInstance()throws Exception{ // 取得DAO实例return new UserDAOProxy();		// 返回代理类实例 }
}

login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html>
<head><title>用户登录程序</title></head>
<script language="JavaScript">function validate(f){if (!(/^w{5,15}$/.test(f.userid.value))){alert("用户ID必须是5-15位!");f.userid.focus();return flase;}if (!(/^w{5,15}$/.test(f.password.value))){alert("密码必须是5-15位!");f.password.focus();return flase;}}
</script><body>
<h2>用户登录程序</h2>
<% request.setCharacterEncoding("GBK");%>
<%List<String> info = (List<String>)Attribute("info");	// 取得属性if (info != null){Iterator<String> iter = info.iterator();while (iter.hasNext()){
%><h4><%&#()%></h4>	
<%}}
%>
<form action= "LoginServlet" method= "post" onSubmit="retrun validate(this)">用户ID<input type="text" name="userid"><br>密  码<input type="password" name="password"><br><input type="submit" value="登录"><input type="reset" value="重置">
</form>
</body>
<html>


	<servlet><servlet-name>login</servlet-name><servlet-class>zz.servlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>login</servlet-name><url-pattern>/LoginServlet</url-pattern></servlet-mapping>
错误:

1、虽然之前的文件全部编译通过,但在DAOFactory.java编译出错:

DAOFactory.java:6: 不兼容的类型
找到: zz.dao.proxy.UserDAOProxy
需要: zz.dao.IUserDAOreturn new UserDAOProxy();              // 返回代理类实例^
1 错误

MLDN李祺老师一针见血指出我的错误:

“检查你的UserDAOProxy是否实现了IUserDAO接口”

 

教训:编译检查调试看包的导入情况也要看接口的实现!



2、找错误找的吐血,不可能出现的错误,但不同目录上的文件啊!!!

修改的是一个文件,编译的是另外一个目录下的文件

Webdemo目录下

和Web-Inf/Classes目录下
当然因为用的是EditPlus编译,如果用IDE,是不会犯这种错误的,但凡事有利有弊,用这种记事本编译更能体会很多运行细节,这是用太依赖IDE的人不能比的。

3、Loging.jsp文件编译错误:

<form action= "LoginServlet" method= "post" onSubmit="retrun validate(this)">

<% request.setCharacterEncoding("GBK");%><!—缺少分号;-->



<form action="LoginServlet.jsp" method= "post" onSubmit=" return validate(this)">

4、Tomcat后台错误:

java.lang.ClassNotFoundException:DBDRIVER

……….

java.lang.NullPointerException

……….


原因:

try{Class.forName(“DBDRIVER”);	// 加载驱动,不要分号&# = Connection(DBURL, DBUSER, DBPASSWORD);	// 连接数据库}catch (Exception e){throw e;}


界面效果图:















本文发布于:2024-02-03 02:02:48,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170689696447908.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:应用实例   模式   程序   MVC
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23