实验报告
实验项目名称 JSP+JDBC实现系统注册
所属课程名称
指导教师
实 验 日 期
班 级
学 号
姓 名
成 绩
江西工业职业技术学院电子与信息工程系
第二篇:Jsp+Servlet+JDBC实现登录注册
Jsp+Servlet+JDBC实现登录注册
(2010-12-10 12:53:23)
转载
标签: 分类: 教学资料
it
Jsp+Servlet+JDBC实现登录注册(一)
1. 搭建环境
2. 在MySQL 中建立数据库表
表结构如下:
Id:无实意主键,采用自增方式生成
stuId :学号
Name:姓名
Password:密码
registerDate:注册时间
email: Email
phone:电话号码
sex :性别
对应的SQL 语句如下:
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
`Id` int(11) NOT NULL auto_increment,
`stuId` varchar(20) NOT NULL,
`name` varchar(50) NOT NULL,
`sex` varchar(6) ,
`registerDate` date ,
`email` varchar(100) ,
`phone` varchar(30 ,
`password` varchar(20) ,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3. 新建Web 项目
在Eclipse 中新建 "Dynamic Web Project" ,命名为 RegisterSystem , Target Runtime 选项选择“Apache Tomcat v6.0 ”,其它选项默认即可,点击完成,创建项目完毕。
4. 开发实体类Account
新建类,命名为“Account ”,为该类定义属性,其中属性与数据表的各列相对应。为类添加方法,方法只需包括对属性的 Get 和 Set 方法,不包含任何业务逻辑。
5. 配置数据源
数据源的配置有如下三种方法:
方法 一:
在Tomcat6.0 解压目录 conf 下找到 context.xml, 在其中的 <Context></Context> 中加入如下代码:
Java代码
1. <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"
2. password="lectery" username="root" driverClassName="org.gjt.mm.mysql.Driver"
3. url="jdbc:mysql://localhost/exp01" maxActive="100" maxIdle="30" maxWait="5000"/>
在工程应用中/WEB-INF/ 下的 web.xml 中加入如下代码:
Java代码
1. <resource-ref>
2. <description>MySQL DataSource</description>
3. <res-ref-name>jdbc/mysql</res-ref-name>
4. <res-type>javax.sql.DataSource</res-type>
5. <res-auth>Container</res-auth>
6. </resource-ref>
把MySQL-Connector-java-3.0.12-bin.jar( 可换更高版本 ) 加到 Tomcat 安装目录中的 lib 目录下和工程中的 lib 目录下。
方 法 二:
在Tomcat6.0 解压目录 conf 下找到 server.xml, 在其中的 <GlobalNamingResources></GlobalNamingResources> 中加入如下代码:
Java代码
1. <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"
2. password="lectery" username="root" driverClassName="org.gjt.mm.mysql.Driver"
3. url="jdbc:mysql://localhost/exp01" maxActive="100" maxIdle="30" maxWait="5000"/>
在Tomcat6.0 解压目录 conf 下找到 context.xml, 在其中的 <Context></Context> 中加入并修改成如下代码:
Java代码
1. <Context path="/RegisterSys" debug="1" reloadable="true" docBase="E:\EclipseWorkPlace\RegisterSys\WebRoot">
2. <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.Datasource"/>
3. <!--此处可能有系统其它自动生成的内容 -->
4. </Context>
在工程中/WEB-INF/ 下的 web.xml 中加入如下代码:
Java代码
1. <resource-ref>
2. <description>MySQL DataSource</description>
3. <res-ref-name>jdbc/mysql</res-ref-name>
4. <res-type>javax.sql.DataSource</res-type>
5. <res-auth>Container</res-auth>
6. </resource-ref>
把MySQL-Connector-java-3.0.12-bin.jar( 或更高版本 ) 加到 Tomcat 安装目录中的 lib 目录下和工程中的 lib 目录下。
方法三:
在Tomcat6.0 解压目录 conf 下找到 server.xml, 在其中的 <Host></Host> 中加入如下代码: Java代码
1. <Context path="/RegisterSys" docBase="E:\EclipseWorkPlace\RegisterSys\WebRoot"
2. debug="5" reloadable="true" crossContext="true">
3.
4. <Logger className="org.apache.catalina.logger.FileLogger"
5. prefix="localhost_MysqlTest_log." suffix=".txt"
6. timestamp="true"/>
7. <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" password="lectery"
8. username="root" driverClassName="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/exp01"
9. maxActive="100" maxIdle="30" maxWait="5000"/>
10. </Context>
在工程中/WEB-INF/ 下的 web.xml 中加入如下代码:
Java代码
1. <resource-ref>
2. <description>MySQL DataSource</description>
3. <res-ref-name>jdbc/mysql</res-ref-name>
4. <res-type>javax.sql.DataSource</res-type>
5. <res-auth>Container</res-auth>
6. </resource-ref>
把MySQL-Connector-java-3.0.12-bin.jar( 或更高版本 ) 加到 Tomcat 安装目录中的 lib 目录下和工程中的 lib 目录下。
通过以上三步,大部分时候还是起作用的,但有时会出现异常,因此不建议使用。
以上几种方案在实践中经受了测试,方法一和二比较稳定,方发三比较不稳定,所以对于方法三的采用须谨慎。为简单起见,本实验中采用了方法一的做法,经过测试数据源配置成功。 Jsp+Servlet+JDBC实现登录注册(二)
1. 开发数据库访问类
由于本次实验中只涉及到了一张数据库表,所以代码编写起来相对简单。整体DAO 的组织采用了常见的三层结构,在编写过程中参考了 Clinton Begin的经典例子 JPetStore 中有关数据库访问类编写的代码 。
2. 开发Jsp 页面
本实验的最终目标是要实现一个注册登录系统,所以jsp 页面大致上分为 5 个,分别为 v Register.jsp:用户注册页面,显示用户注册表单
v Login.jsp:登录页面,显示登录信息输入框
v Login_success.jsp:登录成功页面,显示登录成功信息
v Register_success.jsp注册成功页面,显示注册成功信息和登录链接
v Error.jsp:系统错误页面,返回系统的异常信息,主要供开发人员使用
其中jsp 页面采用 JSTL 和 EL 相结合的方式编写,使得代码更加清晰,易于维护。同时,在页面中适当加入了 JavaScript 脚本和 css 样式,使得界面更加美观。
3. 开发控制器类
根据对系统总体功能的分析,控制器类分为以下三个:
v RegisterServlet:负责处理 register.jsp 提交的用户注册请求,对用户注册流程实现总体的控制。当请求到来时,首先对用户注册信息进行验证,如果验证通过则调用 AccountService 类中的方法将注册信息保存到数据库中,添加记录成功后将跳转到 register_success.jsp 提示用户注册成功,并显示登录链接;如果验证没有通过则按照实验要求把错误信息放到 session 共享范围中,供 jsp 页面显示;若在执行程序过程中出现异常,则控制器将跳转到error.jsp 页面并显示出异常相关信息,供开发人员修改其中的问题。
v LoginServlet:负责处理 login.jsp 提交的登录申请。首先对用户输入的登录信息进行合法性验证(如信息是否为空或字符串长度是否符合规定等),如果没有通过验证则将跳转回登录页面并显示错误信息;如果验证通过则调用dao 提供的相关方法在数据库中查找符合要求的用户信息,若成功找到符合要求的用户则转到 login_success.jsp 并显示登录成功等相关信息,同时将此次登录的用户名存放到客户端的 cookie 文件中供用户下次登录使用,若没有查询到符合条件的用户则将跳转回登录界面 login.jsp 并提示用户重新输入登录信息。若在执行程序过程中出现异常,则控制器将跳转到 error.jsp 页面并显示出异常相关信息,供开发人员修改其中的问题。
GenerateCodeServlet:由于 登录页面需要完成验证码功能 ,所以将整个的验证码生成代码封装在了单独的Servlet中,也可以编写一个工具类将验证码生成代码放到工具类中,以便将来的复用,同时能够对业务层和控制层进行有效的分离,使程序更加清晰。