




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
....../...XX科技大学数据库课程设计报告系院应用科学学院年级2013级专业信息与计算科学131802学号201318030204学生姓名XXXXXX指导教师姓名XXXXXX课程设计〔论文题目XX科技大学学生管理系统目录TOC\o"1-3"\h\u第一章绪论11.1研究的背景及意义11.1.1选题的背景11.1.2研究的意义11.2系统目标21.3应用技术21.3.1Servlet技术21.3.2JSP技术31.3.3JDBC31.3.4MySQL31.3.5myEclipse31.3.6Tomcat41.3.7JSTL标签41.3.8XML4第二章需求分析52.1功能需求52.1.1系统模块分解52.1.2功能需求描述52.2非功能需求82.2.1性能需求82.2.2其它需求8第三章总体设计103.1运行环境103.2模块结构11第四章数据库设计124.1概念结构设计124.1.1设计思路124.1.2E-R图124.2逻辑结构设计15设计思路154.3物理结构设计154.3.1存取方式154.3.2存储结构15第五章界面设计185.1界面关系图185.2界面设计成果195.2.1登录界面195.2.2功能菜单界面20第六章详细设计256.1登录注册设计276.1.1算法描述276.1.2程序流程图276.1.3关键类说明286.2用户管理设计286.2.1程序流程图286.2.2关键类说明29第七章编码307.1部分核心代码307.1.1用JDBC连接JAVAweb和数据库307.1.2登录注册、页面管理347.2代码优化和开发需知事项40第七章总结41参考文献42.........第一章绪论1.1研究的背景及意义1.1.1选题的背景随着教育事业的不断发展,学校的规模不断扩大,学生数量及其信息量的急剧增加,有关学生的各种信息处理也随之展开。学生管理信息系统应运而生了,它可用来管理学生信息与提高系统管理工作的效率。学生信息管理系统把VisualBasic〔前台开发与MYSQL〔后台管理有机地结合,并运用流行的ADO等相关技术,完成学生信息的规范管理、科学统计和快速查询,从而可大大减少该管理上的工作量。数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据库存储的效率,保证数据的完整性和一致性。同时,合理的数据结构也将有利于程序的顺利实现。1.1.2研究的意义学生学籍管理系统,可用于学校等机构的学生信息管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。该软件用java语言编写,用SQLServer2012数据库作为后台的数据库进行信息的存储,用SQL语句完成添加,查询,修改,删除的操作。用JDBC驱动实现前台Java与后台SQL数据库的连接。Java语言跨平台性强,可以在Windows等系统下使用,方便简单,安全性好。......1.2系统目标该系统主要建立一个基于B/S模式的实验室信息管理系统,用户和管理员不需要下载客户端就可以通过浏览器访问学生管理系统,快捷方便,从网页获取当前的学生信息,及时的更新信息,修改信息,保证信息的正确性和时效性,从而更好更快捷更便利的管理学生信息,实现学生信息的直观可视化和及时可靠化,本系统主要针对与系统相关的两类用户实现信息的管理:1.对于实验室管理人员:可以登陆到管理员页面,可以方便的进行学籍信息管理、班级信息管理、成绩信息管理、用户管理和系统管理。2.对于教师:教师可以进行注册成为网站的用户,并可以通过登录进入普通用户界面以后来学籍信息管理、班级信息管理、成绩信息管理和系统管理,但是无法查看和修改其他的用户的信息。1.3应用技术1.3.1Servlet技术Servlet是服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求与服务器响应的中间层。Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。最早支持Servlet技术的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的Web服务器开始支持标准的ServletAPI。Servlet的主要功能是交互式地浏览和修改数据,生成动态Web内容。这个执行的过程为:客户端发送请求至服务器端;服务器将请求信息发送至Servlet,Servlet生成响应结果并将其传给服务器,响应内容动态生成,通常取决于客户端的请求,服务器将响应返回给客户端,Servlet看起来与s通常的Java程序无很大差别。Servlet导入特定的属于JavaServletAPI的程序包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样。但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度来说,Servlet也被称为FacelessObject。一个Servlet就是Java编程语言中的一个类,它可以被用来扩展服务器的性能,服务器上驻留着可以通过"请求-响应"编程模型来访问的应用程序。尽管Servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。1.3.2JSP技术JavaServerPages技术是一项纯Java平台的技术,它主要用来产生动态网页的内容。在传统的网页HTML文件中加入Java程序片段和JSP标记,就构成了JSP网页。当Web服务器接收到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。JSP是基于JavaServlet以及整个Java体系的Web开发技术,利用这一技术可以建立先进、安全、快速和跨平台的动态网页。JDBCJDBC由一组Java语言编写的类和接口组成,使用内嵌式的SQL,主要实现三方面的功能:建立与数据库的连接,执行SQL声明以及处理SQL执行结果。JDBC支持基本的SQL功能,使用它可方便地与不同的关系型数据库建立连接,进行相关操作,并无需再为不同的DBMS分别编写程序。1.3.4MySQLMySQL是一个多用户、多线程的SQL数据库,是一个客户机/服务器结构的应用,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。MySQL的快速和灵活性足以满足一个网站的信息管理工作。因为许可证的灵活,任何人都可以以任何目的免费使用,修改,和分发PostgreSQL,不管是私用,商用,还是学术研究使用。命令执行速度快,也许是现今最快的;简单有效的用户特权系统。1.3.5myeclipseEclipse是一个非常优秀的集成开发环境,它旨在简化用于多操作系统软件工具的开发过程,可以用于管理多种开发任务,其中包括测试、性能调整以及程序调试等,而且还可以集成来自多个供应商的第三方应用程序开发工具。通过集成大量的插件,myeclipse的功能可以不断扩展,以支持各种不同的应用。myeclipse平台是一个成熟的、精心设计的、可扩展的体系结构,其组成结构如图所示用myeclipse开发的插件,可以适应多平台的需要,且具有良好的可扩展性和灵活性。myeclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,myeclipse附带了一个标准的插件集,包括Java开发工具<JavaDevelopmentTools,JDT>。1.3.6TomcatTomcat服务器是ApacheGroupJakarta小组开发的一个免费服务器软件,适合于嵌入Apache中使用,而且,它的源代码可以免费获得,你可以自由地对它进行扩充。Tomcat服务器的兼容性很好,如WebLogic服务器采用其为Web服务器引擎,Jbuilder将其作为标准的测试服务器,Sun公司也将其作为JSP技术应用的示例服务器。但是Tomcat服务器有众多大软件公司的支持,而且服务器的性能稳定,其发展前景很好。本次开发使用Tomcat7.x。1.3.7JSTL标签JSTL是apache对EL表达式的扩展〔也就是说JSTL依赖EL,JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是JSP内置的标签,需要我们自己导包,以及指定标签库而已!如果你使用MyEclipse开发JavaWeb,那么在把项目发布到Tomcat时,你会发现,MyEclipse会在lib目录下存放jstl的Jar包!如果你没有使用MyEclipse开发那么需要自己来导入这个JSTL的Jar包:。1.3.78XMLXML,可扩展的标识语言〔eXtensibleMarkupLanguage,其先驱是SGML和HTML。SGML,通用标识语言标准〔StandardGeneralizedMarkupLanguage,是国际上定义电子文件结构和内容描述的标准,是一种非常复杂的文档结构,主要用于大量高度结构化数据的防卫区和其它各种工业领域,便于分类和索引。同XML相比,SGML定义的功能很强大,然而它不适于Web数据描述,而且价格非常昂贵。第二章需求分析2.1功能需求2.1.1系统模块分解学生信息管理系统的总体功能由以下几大模块构成:学籍信息管理、班级信息管理、成绩信息管理、用户管理和系统管理。如下图所示:图2-1系统功能模块分解图2.1.2功能需求描述学籍信息管理模块描述:用户在注册成功后,用合法的账号密码登陆管理系统页面。在页面的公告栏中,管理员可以及时发布公告,提醒用户一些需要注意的信息,由于学生信息的变动,管理员需要时常改动学生信息,通过本系统,可以实现学生学号、姓名、性别、班级、出生日期等的添加、查看、修改和删除。用例图:图2–2学生管理子系统用例图班级选课信息管理模块描述:班级信息管理主要包括班号、年纪、班主任、教室的添加、查看、修改和删除。由于老师调动,任职期的更改等原因,班级的班主任随时可能发生更改,需要及时修改保证信息的准确性。用户可以通过查看信息来清楚明了的指导该学校所有班级的详细准确的班级信息。用例图:班级班级信息添加班级信息删除班级信息查看班级信息修改班级信息添加班级信息删除班级信息查看班级信息修改班级信息管理员管理员图2–3学生管理子系统用例图成绩信息描述:主要包括了学生的考好,姓名,学号,班级,课程的名称,获得的成绩。管理员可以用此来完成学生信息的统计和成绩的登记。同时也可以对这些信息进行删除、添加、查看和修改操作,以此来确保成绩信息的真实可靠性。用例图:实验选课信息实验选课信息添加学生成绩删除学生信息查看成绩信息修改学生信息添加学生成绩删除学生信息查看学生信息修改学生信息管理员管理员图2–3学生管理子系统用例图用户管理模块描述:由于在实际过程中,有些用户可能会因为较长时间没有使用系统而忘记了本人的信息,这是就可以找管理员进行用户信息的查看,其次也可以通过管理员直接添加一个用户以得到前台页面的操作权限,还可以进行信息的修改和注销。用例图:图2-4用户管理子系统用例图图2-5实验室管理员管理子系统用例图2.2非功能需求2.2.1性能需求最大并发用户数:15〔因数据库同时访问人数限制导致同时在线人数:100访问高峰时期同时在线人数:300访问高峰时期同时提交事务人数:30高峰时期系统响应时间:10s以内注:以上信息为开发人员估计所得,具体情况具体对待。2.2.2其它需求精度用户名要求长度不超过3-20个字符。密码长度要求为3--20个字符。日期:精确到某年某月某日软件需求1、WindowsXP操作系统;2、SQL数据库;3、MyEclipse9.0开发工具;4、Tomcat7.X服务器;5、SQLyogTunnel.phpMySql辅助工具硬件需求1、Web服务器1台;2、数据库服务器1台;3、备份服务器1台;4、开发服务器1台;5、硬件防火墙1台;6、软件防火墙服务器1台;7、千兆路由器1台;8、10M网络宽带1条。...第三章总体设计3.1运行环境1>设备客户程序硬件要求:具有PentiumII处理器且满足以下要求的计算机:最低512M内存,最小20GB硬盘,鼠标,键盘。WEB服务器硬件要求:具有PentiumIV处理器且满足以下要求的计算机:最低512MB内存,最小80GB硬盘,鼠标,键盘。2>支持软件客户程序软件:Windows98/2000/XP或更高版本IE6.0或者更高版本,Firefox等浏览器 网络支持WEB服务器软件:Tomcat7.0Windows98/2000/XP或更高版本数据库服务器软件Windows98/2000/XP或更高版本 数据库:XML3.2模块结构1>本小节从管理员用户使用的角度出发,列出了系统所提供的各个功能,系统的各功能模块如下表所示:表3SEQ表\*ARABIC\s11系统功能模块列表序号功能模块名称子功能模块名称备注首页注册登录管理员模块学生学籍信息添加学籍信息修改学籍信息查看学籍信息删除学籍信息班级信息管理添加班级信息修改班级信息查看班级信息删除班级信息2.3成绩信息管理2.3.1成绩信息添加2.3.2成绩信息修改2.3.3成绩信息查看2.3.4成绩信息删除2.4用户管理添加用户修改用户信息查看用户信息删除用户信息2.5系统管理修改自己登陆密码其他功能有待开发用户模块查看信息修改登陆密码......第四章数据库设计4.1概念结构设计4.1.1设计思路概念模型是数据库系统的核心和基础。概念设计阶段的主要任务和目标是根据需求分析的结果找出所有数据实体,画出对应的E-R图。对于较复杂的系统,通常首先要根据各个用户对数据和使用权限的不同画出各自对应的局部E-R图,然后把各个局部E-R综合起来形成系统的整体ER图。所以就针对本系统来说,根据实际业务,首先抽象学生学籍信息、班级信息管理、成绩管理、用户等4个实体,再根据业务的需求分析出各个实体所拥有的属性,并以此设计出系统的概念模型。4.1.2E-R图管理员管理员实验科目实验成绩实验选课信息实验科目管理员学籍成绩班级用户图4-2-1系统主页面E-R图管理员管理员实验科目实验成绩实验选课信息实验科目学籍信息增加学籍信息修改学籍信息查看学籍信息删除学籍信息图4-2–2实验科目模块E-R图管理员管理员实验科目实验成绩实验选课信息实验科目班级信息信息增加班级信息修改班级信息查看班级信息删除班级信息图4-2–2选课信息管理E-R图管理员管理员实验科目实验成绩实验选课信息实验科目用户信息用户账号密码查看看用户账号密码增加用户账号密码修改删除用户信息图4-2–3用户信息管理E-R图用户名用户名密码注册登陆系统主页面学籍信息管理班级信息管理成绩管理用户管理图4-2-4系统主页面管理E-R图4.2逻辑结构设计4.2.1设计思路逻辑设计阶段的主要任务和目标是根据概念设计的结果设计出数据库的逻辑结构模式,包括全局模式和各个外模式。对于本系统来说,管理员在使用本系统时,必须先成功注册,然后用注册的张号和密码进行登陆操作,进入系统主页面。本系统包括学籍信息管理、班级信息管理、成绩信息管理、用户管理和系统管理五大模块,普通用户不具有用户管理这个模块。在实验室科目这个模块中又包含了学号、姓名、性别、班级、出生日期、入学日期这六个的模块,班级信息包含了班号、年纪、班主任姓名、教室这四个小的模块,成绩信息模块包含考好、班级、学生名字、学号、课程、成绩这六个小的模块,用户管理包含了用户名、密码、性别三个小的模块,管理员可以通过系统对每个大模块下的小模块进行增改删查等操作。4.3物理结构设计4.3.1存取方式数据库结构的物理设计是指对一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,主要是设计表结构。系统数据库设计中,实体对应于表,实体的属性对应于表的列,实体之间的关系成为表的约束。基本上是将逻辑设计中的实体转换成物理设计中的表,而本系统也是如此是通过关系表的形式存取数据。4.3.2存储结构表4SEQ表\*ARABIC\s11系统数据库组成表数据库名:userdemo序号表名标签说明功能说明1user表普通用户存储用户的相关信息2student表学生学籍信息存储学生学籍的信息3Cla表班级信息班级信息4grade表学生成绩信息存储学生成绩信息的信息表42用户信息表表名:user序号列名数据类型长度小数位标识主键允许空默认值说明1usernamevarchar255否2passwordvarchar255否3sexvarchar255否表44学生学籍信息表名:student序号列名数据类型长度小数位标识主键允许空默认值说明1Stunumvarchar255否2stunamevarchar255否3stusexvarchar255否4stuclavarchar255否5stubirthvarchar255否6stutoschvarchar255否表45b班级信息表表名:cla序号列名数据类型长度小数位标识主键允许空默认值说明1clanumvarchar255否2clagravarchar255否3clateavarchar255否4claroomvarchar255否表46成绩信息表表名:grade序号列名数据类型长度小数位标识主键允许空默认值说明1gradnumvarchar255否2gradclavarchar255否3gradxuevarchar255否4gtadnamevarchar255否5gradprojvarchar255否6gradevarchar255否......第五章界面设计5.1界面关系图注册页面登陆页面系统主页面学生信息注册页面登陆页面系统主页面学生信息管理页面添加信息页面查看信息页面修改学籍页面图5-1界面关系图注:主页面到班级信息管理、成绩管理、用户管理的流程图和上面类似。5.2界面设计成果5.2.1登录界面图5-1登录界面图5-2注册界面图5-3管理员登录界面图5-3普通用户登录界面5.2.2功能菜单界面图5-4学生信息管理主页面图5-5查看学籍页面图5-6添加学生学籍信息页面图5-7修改学生学籍用户图5-7删除用户图5-7班级信息图5-8查看、修改、删除班级信息图5-9添加班级信息图5-10修改班级信息图5-11学生成绩信息管理图5-12查看、删除、修改修改成绩信息图5-13用户信息管理主页面〔管理员权限图5-14查看、删除页面〔管理员权限图5-14添加用户信息〔管理员权限图5-15修改用户信息〔管理员权限图5-16主要工具使用展示-myEclipse图5-17主要工具使用展示-mySql第六章详细设计6.1登录注册设计6.1.1算法描述在用户输入用户名密码并选中用户种类以后,将数据提交到服务器,先检查用户的类型,再根据用户类型并读取出用户名将其与数据库中的数据进行核对,查看数据库中是否存在该用户名,如果存在再核对其输入的密码是否正确,当用户名和密码都正确时则完成验证并跳转到成功页面;如果用户名不正确则不必核对密码直接提示输入信息有误,需要重新输入用户名和密码。在注册时,用户填写完信息后提交给服务器后,服务器先读取用户名与数据库中的数据进行核对,如果该用户名存在则提示用户该用户已存在。 6.1.2程序流程图图6-1登录注册程序流程图6.1.3关键类说明DB:负责数据库连接的类,包含了连接的创建、数据库的关闭、创建预处理对象,结果集对象;User:用户实体类,即JavaBean,囊括了用户的属性和get、setter方法;UserDAO:DAO层处理数据实现接口类,定义了读者业务操作的方法;UserService:service层用户相关业务的方法类,在该类中有用户登录验证方法publicbooleancheck<Stringusername,Stringpassword>方法,实现用户名和密码的验证,通过方法publicbooleansave<Stringusername,Stringpassword>实现用户的注册;Regist:负责注册处理并跳转的Servlet类,在该类的doGet<>方法中调用UserService类中的save<>方法将用户提交的信息提交到服务器完成注册,并根据save<>的返回值跳转到相应的页面。Login:负责登录处理并跳转的Servlet类,在该类的doGet<>方法中调用UserService类中的方法进行用户名和密码的验证,并根据验证结果跳转到相应的页面。6.2用户管理设计6.2.1程序流程图图6-2用户管理流程图6.2.2关键类说明User:教师实体类,即JavaBean,囊括了读者的属性和get、setter方法;UserDAO:DAO层处理数据实现接口类,定义了读者业务操作的方法;UserService:service层读者相关业务的方法类,包括publicbooleansave<Stringusername,Stringpassword>方法进行注册和添加用户操作,publicbooleandelete<intuserId>方法完成用户的删除以完成用户的注销,publicbooleanupdate<intuserId,Stringusername,Stringpassword>方法完成用户信息的更新,通过publicUserfindById<intuserId>方法可以根据用户Id查看用户信息,通过publicUserfindByName<Stringname>方法可以根据用户名进行查询用户信息,通过publicArrayList<User>findAll<>取出数据库中所有读者的信息;AddUser:负责用户添加并跳转的Servlet类,在该类的doGet<>方法中调用UserService类中的save<>方法,将用户提交的数据通过处理提交到数据库中完成用户的添加,并根据save<>的返回值跳转到相应的页面。UpdateUser:负责用户信息的更新并跳转的Servlet类,在该类的doGet<>方法中调用UserService类中的update<>方法,将用户提交的数据通过处理提交到数据库中完成用户的更新,并根据update<>的返回值跳转到相应的页面。DeleteUser:负责用户的注销并跳转的Servlet类,在该类的doGet<>方法中调用UserService类中的delete<>方法,将用户提交的数据通过处理提交到数据库中完成读者的注销,并根据delete<>的返回值来确定是否删除成功并跳转到相应的页面;注:其他模块设计思路与上述思路和方法相似,不予说明。第七章编码7.1部分核心代码7.1.1用JDBC连接JAVAweb工程与数据库连接数据库publicstaticConnectiongetConnection<>throwsException{ Propertiespro=newProperties<>; InputStreaminStream=UserUtils.class.getResourceAsStream<"/perties">; pro.load<inStream>; Class.forName<pro.getProperty<"driverClassName">>; Connectioncon=DriverManager.getConnection<pro.getProperty<"url">,pro.getProperty<"username">,pro.getProperty<"password">>;returncon; }连接数据库实现数据层的增删改查/**增删改查crud*@authorAdministrator*DOM4J解析xml*①导包*②jdbc数据从程序存入数据库或者数据库读取到程序*/publicclassUserDAO{ publicvoidaddUser<Useru>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="insertintouser<username,password,sex>values<?,?,?>"; PreparedStatementp=con.prepareStatement<sql>; p.setString<1,u.getUsername<>>; p.setString<2,u.getPassword<>>; p.setString<3,u.getSex<>>; p.executeUpdate<>; p.close<>; con.close<>; } //删除用户 publicvoiddeleteUser<Useru>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="deletefromuserwhereusername=?"; PreparedStatementp=con.prepareStatement<sql>; p.setString<1,u.getUsername<>>; p.executeUpdate<>; p.close<>; con.close<>; } //修改属性 publicvoidalterUser<Useroldu,Usernewu>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="updateusersetusername=?,password=?,sex=?whereusername=?"; PreparedStatementp=con.prepareStatement<sql>; p.setString<1,newu.getUsername<>>; p.setString<2,newu.getPassword<>>; p.setString<3,newu.getSex<>>; p.setString<4,oldu.getUsername<>>; p.executeUpdate<>; p.close<>; con.close<>; } //查找通过用户名查找 publicUserfindByUsername<Stringusername>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="select*fromuserwhereusername=?"; PreparedStatementp=con.prepareStatement<sql>; p.setString<1,username>; ResultSetrs=p.executeQuery<>; Useru=null; if<rs.next<>>{ u=newUser<rs.getString<"username">,rs.getString<"password">,rs.getString<"sex">>; } rs.close<>; p.close<>; con.close<>; returnu; } //通过性别查找多个用户 publicList<User>findBySex<Stringsex>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="select*fromuserwheresex=?"; PreparedStatementp=con.prepareStatement<sql>; p.setString<1,sex>; ResultSetrs=p.executeQuery<>; List<User>uList=newArrayList<User><>; while<rs.next<>>{ uList.add<newUser<rs.getString<"username">,rs.getString<"password">,rs.getString<"sex">>>; } rs.close<>; p.close<>; con.close<>; returnuList; } //查找全部用户 publicList<User>findALL<>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="select*fromuser"; PreparedStatementp=con.prepareStatement<sql>; ResultSetrs=p.executeQuery<>; List<User>uList=newArrayList<User><>; while<rs.next<>>{ uList.add<newUser<rs.getString<"username">,rs.getString<"password">,rs.getString<"sex">>>; } rs.close<>; p.close<>; con.close<>; returnuList; }}7.1.2登陆注册1>登陆的静态页面实现代码<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><scripttype="text/javascript"> //点击该按钮改变图片验证码的值 functionchange<>{ //通过id获取图片的节点 varnode=document.getElementById<"imgid">; //通过节点拿src node.src="<c:urlvalue='/image'></c:url>"+"?"+newDate<>.getTime<>; } //注册按钮 functionadd<>{ //点击注册跳转到reg.jsp页面 location.href="<c:urlvalue='/jsp/user/reg.jsp'/>"; } //普通用户登陆 functionuserlogin<>{ //点击注册跳转到reg.jsp页面 location.href="<c:urlvalue='/userlogin.jsp'/>"; } </script><head><title>XX科技大学</title><metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <styletype="text/css">.error{ text-align:center; color:red; font-weight:900; font-size:12px; } </style></head><body><h1align="center"><imgalt=""src="images/xiaohui.jpg"></h1><h1align="center">学籍信息</h1><br><br><hrstyle="height:20px;"><pclass="error">${requestScope.errMsg}</p><pclass="error"></p><formaction="<c:urlvalue='/LoginServler'/>"method="post"><tablealign="center"width="50%"> <tr> <tdstyle="width:56px;">用户名</td> <tdstyle="height:51px;width:190px"><inputtype="text"name="username"value="sername}"/></td> <tdstyle="width:94px;height:33px"> <spanclass="error">${requestScope.errMap.username}</span> </td> </tr> <tr> <td>密码</td> <tdstyle="height:46px;width:264px"><inputtype="password"name="password"value=""/></td> <tdstyle="width:101px;"> <spanclass="error">${requestScope.errMap.password}</span> </td> </tr> <tr> <td>验证码</td> <tdstyle="width:207px;"><inputtype="text"name="check"style="width:63px;"><imgalt="图片验证码"src="<c:urlvalue='/image'/>"id="imgid"><inputtype="button"value="换一张"onclick="change<>"></td><!--显示错误信息--><td><spanclass="error">${requestScope.errMap.errPsw}</span></td> </tr> <tr> <td> </td> <tdcolspan="2"><inputtype="submit"value="管理员登陆"style="height:39px;width:106px;"/> <!--点击注册跳转到注册用户页面--> <inputtype="button"value="用户登陆"onclick="userlogin<>"style="height:39px;"/> <inputtype="button"value="用户注册"onclick="add<>"style="height:38px;width:85px;"> </td> </tr></table></form></body></html>登陆的前台前端的校验和后端的校验 publicvoiddoGet<HttpServletRequestrequest,HttpServletResponseresponse> throwsServletException,IOException{ } publicvoiddoPost<HttpServletRequestrequest,HttpServletResponseresponse> throwsServletException,IOException{ //中文请求乱码 request.setCharacterEncoding<"utf-8">; Useruser=newUser<>; try{ //把页面传过来的属相值封装到Map集合中 BeanUtils.populate<user,request.getParameterMap<>>; }catch<Exceptione>{ //TODOAuto-generatedcatchblock thrownewRuntimeException<e.getMessage<>>; } /*后台的前端校验:格式 *2》用户名校验:用户名不能为null,在3到20个字符之间 密码校验,密码不能为null,在3到20个字符之间,如果有 错误信息,将该信息封装到Map集合中。 */ Map<String,String>errMap=newHashMap<String,String><>; //用户名校验:用户名不能为null,在3到20个字符之间 if<user.getUsername<>==null||user.getUsername<>.length<>==0>{ errMap.put<"username","用户名不能为空">; }elseif<user.getUsername<>.length<><3||user.getUsername<>.length<>>20>{ errMap.put<"username","用户名必须在3到20个字符之间">; } //密码校验,密码不能为null,在3到20个字符之间 if<user.getPassword<>==null||user.getPassword<>.trim<>.length<>==0>{ errMap.put<"password","密码为空">; }elseif<user.getPassword<>.length<><3||user.getPassword<>.length<>>20>{ errMap.put<"password","密码必须在3到20个字符之间">; } //验证码 Stringcheck=request.getParameter<"check">;//验证码 //获取图片验证码的信息 Stringtext=<String>request.getSession<>.getAttribute<"text">; if<!check.equalsIgnoreCase<text>>{ errMap.put<"errPsw","验证码错误">; } //判断集合中是否有错误信息 if<errMap!=null&&errMap.size<>>0>{ //存储错误信息存在request域中并转发到login.jsp request.setAttribute<"errMap",errMap>; //在request存储用户信息回显 request.setAttribute<"user",user>; //请求转发 request.getRequestDispatcher<"/login.jsp">.forward<request,response>; return; } //后台的后端校验:数据库和前台传递的数据是否一致 UserServletus=newUserServlet<>; try{ //判断用户是否存在 Useru=us.login<user>; //存入session request.getSession<>.setAttribute<"user",u>; //请求转发跳转到主页面 response.sendRedirect<request.getContextPath<>+"/jsp/SysMain.jsp">; }catch<Exceptione>{ //TODO:handleexception request.setAttribute<"errMsg",e.getMessage<>>; //在request存储用户信息回显 request.setAttribute<"user",user>; //请求转发 request.getRequestDispatcher<"/login.jsp">.forward<request,response>; } }}3>登陆的前端和数据层连接代码publicclassUserServlet{ //登陆 privateUserDAOud=newUserDAO<>; publicUserlogin<Useruser>throws
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疫情防控安全课件
- 疫情防控大数据解读课件
- 修剪树木承揽合同标准文本
- 共享医疗资源合同标准文本
- 2025新版园林绿化施工合同范本详细版
- 公务员政审评语大全3篇
- 二手房房屋买卖合同标准文本
- 保证合同范例解析
- 写印刷合同标准文本
- 供货产品合同标准文本
- 2025年高校教师岗前培训《高等教育学》考试模拟试卷及答案(共五套)
- 概括归纳类(非选择题)-2025年高考历史复习热点题型专项训练(解析版)
- 中学教育基础(上)知到课后答案智慧树章节测试答案2025年春陕西师范大学
- 储能站施工组织设计施工技术方案(技术标)
- 楼梯 栏杆 栏板(一)22J403-1
- 北京市海淀区2024年七年级下学期语文期中试卷(附答案)
- 2024年湖北职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- GB/T 24186-2022工程机械用高强度耐磨钢板和钢带
- 人工呼吸的三种方式和操作方法课件
- 项目基坑坍塌事故专项应急预案桌面演练脚本
- 危险化学品MSDS(氮气)
评论
0/150
提交评论