网学网为广大网友收集整理了,基于JSP班级学生管理系统的设计,希望对大家有所帮助!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
4.1.5 查询功能的实现 主要技术环节是如何有效地与数据库连接,并通过使用SQL语句对数据库进行操作。如果用户想要查找某人的信息或者想寻找某个班级中是否存在某人,那么这项功能正好满足使用者的需要。设计思路是从表单中提取用户输入的字符,连接并查询数据库,如果查找到数据库中存在相匹配的记录,将其记录输出,否则返回一条用户信息“不存在”。 具体流程:if(表单为空) { 查询数据库表 }else(不为空) { 查询数据库中有无匹配的记录 String strSQL="select * from individual where zm=''"+new String(zm.getBytes("8859_1"))+"''"; rs=st.executeQuery(strSQL); if(!rs.next())//遍历到数据库末没有匹配记录 { 返回给用户信息:没找到“” } else(记录存在) { 执行查询语句,并刷新数据库。 strSQL="select * from individual where zm=''"+new String(zm.getBytes("8859_1"))+"''"; ResultSet rs10 = st.executeQuery(strSQL);//输出结果集。 } 继续操作:<A href=query.jsp>继续查找</A> //自身连接,刷新后返回到自身。 } 关闭数据库。 4.1.6 留言功能的实现 此模块中通过获取管理员的session值来确定数据库操作的对象。班级管理员可以使用这个功能在本班能留言。 具体实现: <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <%@ page import="java.io.*"%> <% 连接数据库对象; String user_name2=(String)session.getValue("username"); //取得管理员的session值; String Mytear= new String(request.getParameter("MyTeAr").getBytes("8859_1")); //获取表单值; st.executeUpdate("update user_table set talk=''"+Mytear+"'' where user_name=''"+user_name2+"''"); //将获得的表单信息存储到与session值对应的数据库记录中,获取数据库中user_name等于session值的留言记录值; 将结果集输出到客户端。 %> 此系统模块使用的文件如表4-3所示。 表4-3 实现文件 文件 说明 Talk1.jsp输入留言内容。获取数据库记录集,将结果输出到客户端。 Do_talk.jsp 处理talk.jsp中表单中的值,将值存储到数据库。 4.1.7用户权限确认 当用户点击进入一个班级时,他是普通成员还是管理员,他应该有哪些操作权限,此时识别用户身份具有非常重要的意义,只有认清用户的身份之后才能确定该用户能够执行哪些操作。这也是本系统模块设计的重要环节之一。功能实现使用了数据库表关联操作。首先取得用户Session值,然后执行如下语句: ResultSet rs=st.executeQuery("select class_table.class_name from class_table,user_table where class_table.class_name=''"+class_name+"''and class_table.admi=user_table.user_name"); 通过图4-5和图4-6的比较可以看到同一个用户以不同身份进入两个班级时,页面的效果是不同的。被标识为管理员者才有使用删除、留言等功能的特权。 图4-5 管理员登录 图4-6 普通成员 4.1.8 JSP对象的使用 此系统实现多处使用了JSP的对象,如表4-4。 表4-4 jsp对象 对象名称 功能描述 Request 从客户端取得信息 Response 将信息送给客户端 Session 储存在一个Session内的用户信息,该信息仅可被该用户访问 4.1.9 技术要点 1)引用bean 各功能模块中需要频繁的进行数据库操作,如果每遇到要使用数据库便建立一次链接将在一定程度上增大系统开销,加大程序员的工作量,我们这里有效利用了JavaBean文件,使服务器事先建立数据库链接对象,所有的数据操作都使用该链接,从而提高了服务器效率。具体做法以下将做描述。 2)操作数据库 表空间是数据库得逻辑存储设备,它把数据库信息组织成物理存储空间。每一个数据库用户都可以设置一个缺省空间。缺省表空间用于在用户创建数据库对象时(表或索引),如果没有指定表空间时存放数据库对象。创建用户时,如果不加指定,用户的缺省表空间为SYSTEM表空间。JSP与数据库连接的时候,需要使用一个合法的用户登录数据库。此系统模块在数据库 中建立用户名为JSPUSER。使用控制命令:create user JSPUSER identified by JSPUSER; grant connect,resource to JSPUSER.建立并授予用户JSPUSER权限。密码为JSPUSER。 一个访问数据库的程序段,对于不同的行为,要其执行的SQL语句是不同的,其不同主要表现在查询、插入或更新时的参数不同,于是我们引用JAVA类: <%@page import= java.sql.*%> 将数据库的查询、更新方法定义在Bean中。 在系统模块中通过设置session值来确定应该操作数据库中的哪条记录,而且通过两个表之间相同字段的关联提高操作效率。 4.1.10 Bean的使用 JavaBean的价值体现在它的一系列属性里,使用这些属性可以访问JavaBean的设置。用一个人来做类比,如果这个人是一个JavaBean,那么他的姓名、身份证号码和地址就是这些属性。JavaBean已经做好了,你要做的事就是告诉JSP页面它将要使用的bean的名称,这可以通过<jsp:useBean>标记来实现: <jsp:useBean id="localName" class=" lifeng.works.linkDB "" scope="application" />。 在这个系统模块的设计过程中,把连接数据库时需要多次复用连接驱动命令,数据库操作的方法引入Bean中。实践中真正体现了JSP与Bean结合的优势。Bean中定义了查询(executeQuery),更新方法(executeUpdate)。当JSP中执行SQL语言操作数据库时,将自动调用这两个方法。 4.2 数据库的详细设计 4.2.1安装驱动程序 本系统模块用JSP技术编写,那么就必须借助与JDBC(Java DataBase Connectivity)来操作数据库。JDBC是一组API(Application Programming Interface),即应用程序设计接口。JDBC共有四种类型: 类型一,利用桥连接器(Bridge)的概念连接数据库。类型二,运用由数据库厂商提供的用于操作数据库的API函数。类型三,这类驱动程序通过网络协议与中间件连通,中间件负责转换数据库操作信息。类型四,这类驱动不通过任何中间件,而直接以Java数据库驱动程序来执行数据库的访问。 相比之下,此系统选择第三种类型的数据库驱动。它的优点更适合这个系统创建与数据库的连接。 Oracle自带的JDBC驱动程序放在Oracle安装目录\Oracle81\jdbc\lib中。Java环境并不能自动找到该驱动程序。应用时可以在AUTOEXEC.BAT中设置如下: set classpath=c:\oracle\ora81\jdbc\lib\classes111.zip;c:\oracle\ora81\jdbc\lib\classes12.zip;或者把驱动程序压缩包复制到Apache Tomcat服务器下的class目录中。 4.2.2建立用户 JSP与数据库连接的时候,需要使用一个合法的用户登录数据库。此系统模块在数据库 中建立用户名为JSPUSER。使用控制命令:create user JSPUSER identified by JSPUSER; grant connect,resource to JSPUSER.建立并授予用户JSPUSER权限。密码为JSPUSER。 用户的缺省表空间为SYSTEM表空间。 4.2.3 系统表结构 本系统模块建立两个数据库基本表。表CLASS_TABLE存放用户创建班级时输入的基本信息。包括字段:、学校、班级名称、年级、Admi(管理员);表中字段class_name,class_year,Admi,设class_name为主键。表USER_TABLE存放管理员的注册信息。包括字段:用户登录名、真实姓名、生日、工作单位、工作地、Email,Tel,Admi。如图4-7、4-8所示 图4-7 user_table表结构 图4-8 class_table表结构 考虑到节省表空间,防止数据冗余和表之间关联过于复杂,决定将所有的班级成员存放在一张表中,用字段ADMI标识管理员的属性。 4.2.4 操作数据库 在执行查询动作之前,必须在程序中使用Connection对象的createStatement方法,建立Statement对象,以代表执行的SQL语句。 连接驱动,用户登录数据库 Class.forName("oracle.jdbc.driver.OracleDriver"); String m_url="jdbc:oracle:thin:@localhost:1521:lifengDB"; String m_user="JSPUser"; //JSPUser为数据库用户名。 String m_password="JSPUser"; //数据库密码JSPUser。 Connection conDB=DriverManager.getConnection(m_url,m_user,m_password); 建立Statement对象 Statement st=conDB.createStatement(); 执行查询动作,并将查询结果以Resultset对象返回。 Resultset rs = st.executeQuery("select * from banjizhuce"); 取得字段数据。使用ResultSet类的get方法,可以从ResultSet对象中,取得当前记录中各个字段的数据。 利用while取得记录集中的所有记录。在程序中执行数据库查询动作所得到 的查询结果,相当于在程序中建立了一个虚拟数据工作表,既记录集。当需要从 这个虚拟数据工作表中取得记录时,必须先将记录指针移到该记录上,然后利用ResultSet对象的get方法取得。此时必须利用ResultSet . next()方法,配合while循环移动记录指针,逐条将数据从记录中取出。当next()方法将指针移动到最后一条之后时,返回false值。 while (rs.next()) { <tr> <td><%=rs.getString("banjimingcheng")%></td> <td><%=rs.getString("nianji")%></td> </tr> } 关闭数据对象和链接对象 public void jspDestroy() { try { st.close(); conDB.close(); rs.close(); } catch(Exception ex) { System.out.println(ex.toString()); } } 4.2.5数据库接口 JDBC驱动程序连接数据库是通过表4-5中的接口来完成的。所有的驱动程序提供java.sql.*的实现 表4-5 JDBC驱动程序接口 接口名称 功能描述 Java.sql.Driver 提供各种方法,用于读取数据库驱动器的信息。提供connect()方法。 Java.sql.DriverManager 主要用来管理Driver对象连接数据库。 Java.sql.Connection 创建Statement对象。 Java.sql.Statement 对特定的数据库执行SQL语句。 Java.sql.ResultSet 控制一个特定语句的行数据的存取。 第5章 总结 经过三个多月的调查、学习、研究和设计,系统的制作接近了尾声。在这里我将系统设计做如下总结。 1)本系统的功能已经达到设计的要求。系统中各个模块的功能均已实现,为整体系统的构建奠定了基础。 2)系统模块的功能可以被进一步扩展。例如,系统中还可以增加个人名片夹等类似的功能。系统的页面可以设计的更加精美。 3)系统中模块划分明确,模块功能设计有较强的针对性。 4)系统的设计遵循软件开发的全过程,使我对软件系统的开发过程有了更深刻的认识。 5)设计体现出了所使用的编程技术的优点,设计中结合了JavaBean。 6)在系统的设计中能够灵活运用JSP的对象技术,并且使用有效的SQL语言操作后台数据库。 软件的设计没有完美无缺的,这个系统在某些地方可能存在不足,还需要我们进一步的改进和完善。 在这段时间里,我获益非浅,不仅将所学的知识运用到实践,而且更进一步学习了软件开发技术,增强了JSP开发技术的语法基础,能够将其比较灵活地使用。 |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |