学生管理系统登录模块项目开发.ppt

上传人:wj 文档编号:16619578 上传时间:2023-07-15 格式:PPT 页数:50 大小:3.26MB
下载 相关 举报
学生管理系统登录模块项目开发.ppt_第1页
第1页 / 共50页
学生管理系统登录模块项目开发.ppt_第2页
第2页 / 共50页
学生管理系统登录模块项目开发.ppt_第3页
第3页 / 共50页
学生管理系统登录模块项目开发.ppt_第4页
第4页 / 共50页
学生管理系统登录模块项目开发.ppt_第5页
第5页 / 共50页
学生管理系统登录模块项目开发.ppt_第6页
第6页 / 共50页
学生管理系统登录模块项目开发.ppt_第7页
第7页 / 共50页
学生管理系统登录模块项目开发.ppt_第8页
第8页 / 共50页
学生管理系统登录模块项目开发.ppt_第9页
第9页 / 共50页
学生管理系统登录模块项目开发.ppt_第10页
第10页 / 共50页
学生管理系统登录模块项目开发.ppt_第11页
第11页 / 共50页
学生管理系统登录模块项目开发.ppt_第12页
第12页 / 共50页
学生管理系统登录模块项目开发.ppt_第13页
第13页 / 共50页
学生管理系统登录模块项目开发.ppt_第14页
第14页 / 共50页
学生管理系统登录模块项目开发.ppt_第15页
第15页 / 共50页
学生管理系统登录模块项目开发.ppt_第16页
第16页 / 共50页
学生管理系统登录模块项目开发.ppt_第17页
第17页 / 共50页
学生管理系统登录模块项目开发.ppt_第18页
第18页 / 共50页
学生管理系统登录模块项目开发.ppt_第19页
第19页 / 共50页
学生管理系统登录模块项目开发.ppt_第20页
第20页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生管理系统登录模块项目开发.ppt

《学生管理系统登录模块项目开发.ppt》由会员分享,可在线阅读,更多相关《学生管理系统登录模块项目开发.ppt(50页珍藏版)》请在冰点文库上搜索。

学生管理系统登录模块项目开发.ppt

学生管理系统登录子模块开发,安徽工商职业学院电子系,开发任务,开发学生管理系统登录子模块完成如下功能:

把登录页的用户登录信息发送到我们设计好的信息校验页连接后台数据库,验证用户的登录信息对验证结果进行服务器跳转处理防止匿名用户的恶意登陆使用Cookie技术保存用户的登录信息,使用户不用输入账户密码直接登录,掌握From表单的发送信息方式掌握Request对象获取用户填写的登录信息掌握如何连接数据库(两种方法、四种数据库)掌握如何对用户登录信息进行校验,开发重点,熟练掌握JDBC-ODBC连接数据库,数据库文件路径的获取深刻理解匿名恶意登录的处理对策熟练使用Cookie存储用户的登录信息掌握调用Cookie中存储的用户信息的相关方法,开发难点,项目前台界面设计复习,项目前台界面设计复习,套用现有模板进行设计(企业开发模板最好)使用FireworksCS4进行切片设计使用DreamweaverCS4进行布局设计使用IEtest软件进行多浏览器测试。

(企业级开发必备步骤),项目前台界面设计复习,前台界面两个细节的处理:

如何将模板中文字、图像进行移位处理背景图像的渐进色处理(切片的选取、背景色的设置、repeat参数的使用),项目前台界面设计复习,经过以上分析,基本上可以得到一个比较“正常”的页面。

希望同学们注意的是:

前台界面设计的美工很重要,内容多而繁杂,有些操作甚至远远超出了我们的课程范围,本课程主要讲解的后台程序的开发,要努力学习后台处理机制的设计。

在公司中一个正规的WEB项目开发,必须有三类人员共同协作才能完成:

前台美工人员(艺术设计专业人员:

对色彩敏感)后台程序开发人员(主要负责内部处理机制和服务器处理)数据库设计人员(负责关系型数据库的设计)本次项目开发,同学们将会将这三类人员的角色全部体验一遍。

后台登陆流程图,login.jsp输入帐号、密码。

Logincheck.jsp进行验证根据验证结果进行转发,Login.jsp(用户登录页),Logincheck.jsp(用户登录信息校验页),登录成功页,DBServer,登录失败页,根据处理结果进行跳转,后台程序开发-发送用户登录信息,使用Form表单提交用户的登录信息:

(login.jsp)使用request.getParameter()方法获取用户填写的登录信息(logincheck.jsp)Stringname=request.getParameter(log_user);Stringpass=request.getParameter(log_pass);,后台程序开发-连接数据库操作,数据库连接一般有3种方法:

利用JDBC-ODBC(第一类)专用驱动程序(第二类)利用数据库厂家提供的函数库,直接编程。

(很少使用),连接效率增高,JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力。

是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一的访问接口。

在这里我们介绍一种通用的数据库连接方法:

连接四种数据库(ACCESS、MYSQL、SQLSERVER、ORACLE),为什么不直接使用ODBC,ODBC不适合在Java中直接使用:

ODBC是一个C语言实现的API,从Java中调用本地的C程序在安全性、完整性、健壮性方面都有缺点。

无法精确实现从ODBCAPI到JavaAPI的翻译(语言的限制:

指针支持)。

ODBC很难学不再是纯Java,JDBC连接数据库的两大类基本操作,JDBC驱动由数据库厂商提供在个人开发与测试中,可以使用JDBC-ODBC桥连方式在生产型开发中,推荐使用纯Java驱动方式,DBServer,DBServer,JDBCAPI,JDBCDriverManager,纯Java驱动,JDBCODBC桥,Java应用程序,ODBC,JDBC程序的工作原理,JDBCAPI提供者:

sun公司(Oracle公司)内容:

供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:

DriverManager类Connection接口Statement接口ResultSet接口DriverManager提供者:

sun公司(Oracle公司)作用:

载入各种不同的JDBC驱动JDBC驱动提供者:

数据库厂商作用:

负责连接各种不同的数据库,SqlServer,Oracle,JDBCAPI,JDBCDriverManager,JDBC驱动,JDBC驱动,Java应用程序,JDBCAPI,JDBCAPI可做三件事:

与数据库建立连接、执行SQL语句、处理结果,Connection,DriverManager,PreparedStatement,ResultSet,DriverManager:

依据数据库的不同,管理JDBC驱动Connection:

负责连接数据库并担任传送数据的任务PreparedStatement:

由Connection产生、负责执行SQL语句ResultSet:

负责保存Statement执行后所产生的查询结果,客户端,数据库服务器,1,2,3,4,JDBC-ODBC方式连接Access数据库,桥连将对JDBCAPI的调用,转换为对另一组数据库连接API的调用优点:

可以访问所有ODBC可以访问的数据库缺点:

执行效率低、功能不够强大(Access例外),JDBC-ODBC桥,Java应用程序,JDBCAPI,ODBCAPI,ODBC层,DBServer,课本上介绍的方式,使用JDBC-ODBC进行桥连1、在控制面板ODBC数据源系统DSN中配置数据源2、编程,通过桥连方式与数据库建立连接,-语法-Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connectioncon=DriverManager.getConnection(jdbc:

odbc:

DataBase,);,JDBC-ODBC桥驱动类的完全限定类名,数据源名称,本项目推荐使用的方式,使用JDBC-ODBC进行桥连1、定义基本的数据库驱动信息与数据库登录信息2、编程,数据库建立连接,-语法-publicstaticfinalStringDBDRIVER=sun.jdbc.odbc.JdbcOdbcDriver;publicstaticStringDBURL=jdbc:

odbc:

Driver=MicrosoftAccessDriver(*.mdb);DBQ=;publicstaticfinalStringDBUSER=;publicstaticfinalStringDBPASS=;Class.forName(DBDRIVER);conn=DriverManager.getConnection(URL,DBUSER,DBPASS);,DBURL+真实的路径,本项目推荐使用的方式,使用JDBC-ODBC进行桥连,-语法-publicstaticfinalStringDBDRIVER=sun.jdbc.odbc.JdbcOdbcDriver;publicstaticStringDBURL=jdbc:

odbc:

Driver=MicrosoftAccessDriver(*.mdb);DBQ=;publicstaticfinalStringDBUSER=;publicstaticfinalStringDBPASS=;Class.forName(DBDRIVER);conn=DriverManager.getConnection(URL,DBUSER,DBPASS);Stringdbpath=application.getRealPath(DatabaseDatabase.mdb);StringURL=DBURL+dbpath;,DBURL+真实的路径,JDBC驱动连接数据库,纯Java驱动由JDBC驱动直接访问数据库优点:

100%Java,快又可跨平台缺点:

访问不同的数据库需要下载专用的JDBC驱动,JDBC驱动,Java应用程序,JDBCAPI,DBServer,JDBC驱动连接数据库,使用纯Java驱动方式进行直连1、下载数据库厂商提供的驱动程序包2、将驱动程序包引入工程中3、编程,通过纯Java驱动方式与数据库建立连接4、基本书写格式与JDBC-ODBC方式完全一致,-语法-publicstaticfinalStringDBDRIVER=“.;publicstaticfinalStringDBURL=“.”publicstaticfinalStringDBUSER=“;publicstaticfinalStringDBPASS=“.;Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);,JDBC驱动连接Oracle数据库,使用纯Java驱动方式进行直连1、下载数据库厂商提供的驱动程序包ojdbc12.jar2、将驱动程序包引入工程中3、编程,通过纯Java驱动方式与数据库建立连接,-语法-publicstaticfinalStringDBDRIVER=“oracle.jdbc.driver.OracleDriver;publicstaticfinalStringDBURL=“jdbc:

oracle:

thin:

localhost:

1521:

huyp”;publicstaticfinalStringDBUSER=“数据库登录用户名(默认scott);publicstaticfinalStringDBPASS=“数据库登录用户密码(默认tiger);Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);,IP,端口号,用户名,JDBC驱动连接MYSQL数据库,使用纯Java驱动方式进行直连1、下载数据库厂商提供的驱动程序包mysql-connector-java-5.1.7-bin.jar2、将驱动程序包引入工程中3、编程,通过纯Java驱动方式与数据库建立连接,-语法-publicstaticfinalStringDBDRIVER=“com.mysql.jdbc.Driver;publicstaticfinalStringDBURL=“jdbc:

mysql:

/localhost:

3306/数据库名称”;publicstaticfinalStringDBUSER=“数据库登录用户名;publicstaticfinalStringDBPASS=“数据库登录用户密码;Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);,六步使用JDBC,加载JDBCDriver获取与数据库Connection创建PreparedStatement对象执行SQL语句处理ResultSet(针对查询语句)关闭Connection,JDBC程序编写过程,JDBC程序的工作模板,tryClass.forName(JDBC驱动类);catch(ClassNotFoundExceptione)System.out.println(无法找到驱动类);tryConnectioncon=DriverManager.getConnection(JDBCURL,数据库用户名,密码);Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery(SELECTa,b,cFROMTable1);while(rs.next()intx=rs.getInt(a);Strings=rs.getString(b);floatf=rs.getFloat(c);con.close();catch(SQLExceptione)e.printStackTrace();,获得数据库连接,发送Sql语句,处理结果,注册JDBC驱动,JDBCURL用来标识数据库,必须处理的异常,释放资源,必须处理的异常,1)加载JDBCDriver,使用DriverManager类加载JDBCDriverDriverManager类是JDBC的管理层,作用于用户和驱动程序之间,它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接.加载Driver类的方式:

Class.forName(“com.db.Driver);所有Driver类都包含一个静态部分,它创建该类的实例,然后在加载该实例时在DriverManager类中进行注册DriverManager类包含一列Driver类,它们已通过调用方法DriverManager.registerDriver对自己进行了注册,TestJDBC1.java,Main:

try/1Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);catch(ClassNotFoundExceptione)e.printStackTrace();/若驱动没找到,则怎么办,TestJDBC1.java,Main:

Connectionconn=null;/2Stringurl=jdbc:

sqlserver:

/127.0.0.1:

1433;databasename=test;conn=DriverManager.getConnection(url,root,);,3)创建Statement对象,Statement对象用于将SQL语句发送到数据库中。

存在三种Statement对象:

StatementPreparedStatement(从Statement继承而来)CallableStatement(从PreparedStatement继承而来)Statement对象由Connection的createStatement()方法创建:

TestJDBC1.java,Main:

/3Statementst=conn.createStatement();,4)执行SQL语句,Statement接口的常用方法:

用于产生单个结果集的语句,例如SELECT语句。

publicResultSetexecuteQuery(Stringsql)throwsSQLException用于执行INSERT,UPDATE或DELETE语句以及SQLDDL语句,例如CREATETABLE和DROPTABLE。

该方法返回一个整数,指示受影响的行数。

对于CREATETABLE或DROPTABLE等不操作行的语句,返回值总为零。

publicintexecuteUpdate(Stringsql)throwsSQLException关闭Statement对象publicvoidclose()throwsSQLException,TestJDBC1.java,Main:

/4Stringsql=select*fromloginuser;ResultSetrs=st.executeQuery(sql);/或者执行更新,删除,插入数据Stringsql=“insertintoemailuservalues(aaa,ccc);introw=st.executeUpdate(sql);,5)处理返回结果(ResultSet),ResultSet包含符合SQL语句条件的所有行,并且它通过一套getXxx()方法提供了对这些行中数据的访问。

取得当前行中第columnIndex列的整数的值。

intgetInt(intcolumnIndex)取得当前行中列名为columnName的整数的值。

intgetInt(StringcolumnName)取得当前行中第columnIndex列的字符串的值。

StringgetString(intcolumnIndex)取得当前行中列名为columnName的字符串的值。

StringgetString(StringcolumnName),ResultSet接口其他常用方法,ResultSet维护指向其当前数据行的光标,光标向下移动一行的方法:

booleannext()关闭ResultSet对象voidclose(),TestJDBC1.java,Main:

/5while(rs.next()System.out.println(rs.getInt

(1)+-+rs.getString(username)+-+rs.getString(userpass);,6)关闭连接,按照创建对象相反的顺序关闭连接rs.close();/若是更新就没有这一步st.close();conn.close();,使用Statement插入数据2-1,代码片断publicstaticvoidmain(Stringargs)Connectioncon=null;Statementst=null;tryStringstrSql=insertintoemailuservalues(军事,网管);tryClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);catch(ClassNotFoundExceptione)System.out.println(无法找到驱动类);con=DriverManager.getConnection(jdbc:

sqlserver:

/127.0.0.1:

1433;database=test,sa,“602);st=con.createStatement();st.executeUpdate(strSql);st.close();catch(SQLExceptionsqlE)sqlE.printStackTrace();finallycon.close();,建立连接,执行sql语句,数据库连接使用完毕,及时释放,载入JDBC驱动类,异常处理,异常处理,综合案例,在servlet中演示第一步:

注册页面(register.jsp)RegisterServlet实现插入值的操作第二步:

查看所有用户信息。

通过超链接-SearchAllServlet实现查询功能,案例小结,发现一些问题:

1:

动态参数的处理statement较麻烦2:

连接数据库的代码类似,重复了。

3:

想把结果返回到页面太麻烦。

-不能到指定页面;-使用out.print(),构建页面太复杂,小结2,在使用纯Java驱动方式进行数据库连接时,如果程序在运行时抛出异常:

java.sql.SQLException:

Nosuitabledriverfoundforjdbc:

microsoft:

sqlserver:

/localhost:

1433;DatabaseName=news那么出错的原因是什么?

如何解决?

请单独建立一个类ConnectionManager,专门负责建立数据库连接、以及关闭连接,并思考这样做带来的好处是什么,找不到合适的驱动类,原因:

没有把数据库驱动包引入工程,好处在于:

既便于管理、又可以提高代码的复用性,完整代码实现,PreparedStatement,PreparedStatement接口(预编译的SQL语句),Statement接口,当SQL语句将运行多次时,尽量使用PreparedStatement,以便提高运行效率,当sql语句中的某个值不固定时,使用PreparedStatementPreparedStatement接口继承Statement接口PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率PreparedStatementpst=conn.preparedStatement(sql);,PreparedStatement,Sql的写法-不固定的值用“?

”代替例如insertintoemailuser(name,pass)values(?

?

)select*fromemailuserwhereuserid=?

为“?

”设置值pst.setInt(序号,值);-序号指的是sql中第几个”?

”号pst.setString(序号,值);pst.setDate(序号,值);常用方法ResultSetexecuteQuery()intexecuteUpdate(),使用PreparedStatement插入数据,publicclassNewsFirstTitleDB2publicstaticvoidmain(Stringargs)Connectioncon=null;PreparedStatementpst=null;trycon=ConnectionManager.getConnection();StringstrSql=insertintoemailuservalues(?

?

?

);pst=con.prepareStatement(strSql);pst.setInt(1,1);pst.setString(2,军事);pst.setString(3,管理员);pStatement.executeUpdate();Pst.close();catch(SQLExceptionsqlE)sqlE.printStackTrace();finallyCon.close();,参数化的查询语句,设置每个?

参数的值,列号从1开始,执行sql语句,使用PreparedStatement删除数据,publicclassNewsFirstTitleDB3publicstaticvoidmain(Stringargs)Connectioncon=null;PreparedStatementpStatement=null;trycon=ConnectionManager.getConnection();StringstrSql=deletefromemailuserwhereusername=?

;pStatement=con.prepareStatement(strSql);pStatement.setString(1,军事);introw=pStatement.executeUpdate();System.out.println(“成功删除了+row+行数据!

);Pst.close();catch(SQLExceptionsqlE)sqlE.printStackTrace();finallycon.close();,返回删除记录的行数,使用PreparedStatement更新数据,publicclassNewsFirstTitleDB4publicstaticvoidmain(Stringargs)Connectioncon=null;PreparedStatementpStatement=null;trycon=ConnectionManager.getConnection();StringSql=updateemailusersetusername=?

whereuserid=?

;pStatement=con.prepareStatement(Sql);pStatement.setString(1,编辑);pStatement.setInt(2,1);introw=pStatement.executeUpdate();System.out.println(成功更

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2