2023年6月21日发(作者:)

RIA大作业总结

班级:310112 学号:31011239 姓名:蒋固金 院系:计算机与通信工程学院

名称:用户管理系统

用户角色:游客、普通用户、管理员

功能:游客可以登录首页,浏览首页展示的已注册用户的头像,单击菜单目录里的联系交流, 可通过子菜单图片与我QQ交流或加入我创建的QQ群

普通用户在游客的基础上可以修改自己的资料与查看其他用户资料

管理员在普通用户的基础上可以管理已注册用户,修改用户密码和删除用户

使用技术:Struts2+Servlet+JSP+JQuery+JDBC,采用MVC模式开发

Struts2框架:用于用户修改个人资料时的头像上传

Servlet:MVC中的控制层,处理用户登录等大部分操作

JSP:MVC中的VIEW层,向用户显示信息,即页面

JQuery:实现页面与后台进行异步通信,产生部分动画效果

JDBC:访问与操作数据库

第三方jar包: - 功能:将JAVA对象转换为JSON格式字符串

- 功能:封装访问数据库的常用方法,实现JDBC操作数

据库

JQuery插件: - 功能:更改按钮正常、鼠标进入与鼠标按下三种状态的样式, 并添加鼠标单击事件处理函数

- 功能:将DIV作为对话框居中显示

- 功能:验证文本框的值是否符合正则表达式,不符合给出相

应提示

- 功能:为表格添加样式,实现隔行变色

存在缺陷:界面不美观,每次切换页面,都要判断用户的身份,效率低,页面加载慢,部分 Servlet没做身份拦截

优点:除必要的JAR包与JQuery库之外,所有的第三方JAR包与插件全为自己编写

后台目录结构:

网页部分目录结构:

详细功能实现方式介绍:

联系我或加入QQ群:通过访问腾讯提供的URL路径调用本地QQ程序实现

浏览已注册用户头像:加载完成后,向randomUserServlet发送请求,返回第一页要显示的用户信息,通过单击左右两边的箭头可切换显示信息

浏览用户信息:单击显示的用户头像下边的用户名连接,访问userOPServlet获得用户信息并通过请求转发将页面跳转到页面,在该页面中通过EL表达式从request范围内获得用户信息并显示,在访问userOPServlet之前,要经过checkLogin过滤器过滤,如果用户未登录,则将页面重定向到登录页面

用户登录:通过ajax与userServlet进行信息交互,判断用户名与密码是否正确,通过返回1,否则返回0,客户端通过判断返回值跳转到对应页面

用户注册:通过ajax与userServlet进行信息交互,判断用户名与密码是否可以注册,通过返回1,否则返回0,客户端通过判断返回值跳转到对应页面

我的资料:通过EL表达式从session范围内获得自己的相关信息显示在页面上

修改资料:通过EL表达式从session范围内获得自己的信息显示在页面上,单击提交按钮后,将表单数据提交给userAction,并执行update方法修改资料,修改完成后将重定向到页面显示修改信息

验证用户身份显示不同的菜单:在页面通过JSTL表达式判断用户是否登录,如果已登录判断用户ID是否等于1000,验证用户是否为管理员,并显示对应菜单

用户管理:加载完成后,向userManagerServlet发送请求,返回第一页要显示的数据,并通过上一页、下一页切换显示页,并可直接跳到指定页,各页面数据由服务端返回JSON数据获得,点击修改超链接,页面会动态的将该行记录中的密码列内容转换为文本输入框并修改修改|删除超链接为提交,管理员可修改文本框中的值,单击提交超链接,页面会判断修改后的密码是否需要提交,验证通过后将用户的ID与新密码提交给userManagerServlet,修改成功返回1,否则返回0,页面通过判断返回值给出相应提示信息;单击删除超链接后,页面会将用户的ID信息提交给userManagerServlet,删除成功返回1,否则返回0,页面通过判断返回值,如果删除成功则从页面移除该条记录

退出:访问userOPServlet将session销毁实现用户退出

测试结果:使用IETester测试,IE5.5版本显示完全不正常,JQuery脚本无效;IE6.0图像的透明效果消失,显示为白底,登录与注册页面显示不正常,无法使用;IE7.0以上版本显示正常,但是在测试时有的版本alert对话框不显示,不知是否为工具本身问题,360安全浏览器6.1版本测试正常,本机IE9显示正常

遇到的问题:

1、配置完Struts2框架后,再创建Servlet,当访问Servlet的时候,服务器会报错,这个问题与上课时为大家演示访问Servlet验证登录时无法访问Servlet问题一样,经过查看Struts2的配置文件发现了问题的所在,在Struts2框架中,访问指定路径之前都要访问过滤器,我配置的为:/*,即过滤所有路径,访问Servlet之前也会过滤,就会发生错误,解决方法为将过滤路径改为:*.action,这样Strut2框架就只会过滤已action结尾的路径,问题解决。

2、中文字符乱码:客户端与服务器之间传递信息时是通过ISO-8859-1编码方式交互数据信息,这就需要在服务器端对字符串进行重新编码,客户端提交数据时通过POST方式或GET方式提交,处理乱码的方式不同,因为提交数据时,考虑到通过GET方式提交的数据都是英文字符,所以不考虑GET方式造成的乱码,在解决POST提交的中文乱码问题时,原本采用的是过滤器方式,在访问指定的路径之前将request的编码改为utf-8格式同时所有页面的编码方式设置为utf-8,在Servlet中,中文显示正常,但是在Struts2框架中的Action中又出现了中文乱码,解决方法为将访问Action的页面的编码方式改为GBK,问题解决,中文显示正常。

3、管理员修改用户密码时服务器返回1,修改成功,但是页面上数据刷新后密码并未改变,且数据库中值也未变,对此产生了一个疑惑,为什么提示成功密码却没有改变,检查代码也没有错误,确实执行了修改数据库的方法,综合起来判断,问题应该出现我编写的操作数据库的JAR包上,通过查看JAR包的源代码发现了问题的所在,在传统的JDBC中默认是关闭事务的,即每一个SQL语句操作完后直接提交,而我在写JAR包的获得连接的方法时把自动提交事务关闭了,这样做的好处是多条语句执行,一损俱损,一条错误,全部回滚,可以保证数据库中数据的安全,比如银行转账,不可能甲账户钱扣了,乙账户钱却不加,这是不符合常理的,同样的,在此处由于事务不自动提交,当对数据库中的数据修改后没有提交数据,所以又回滚为初始状态,解决方法为修正JAR包中的代码,判断当SQL语句执行成功后,调用连接的commit()方法提交事务,问题解决。

思考与体会:

本次大作业是对本学期所学内容的整合,做页面时,虽然可以使用很多现成的框架做出美观功能强大的效果,但是我还是选择了自己编写代码实现所需功能,因为现在是学习阶段,只有通过实践才能进步,站在巨人的肩膀上虽然是站得高看得远,但是自身依然是很渺小的,一不小心就会摔下来,那么我们为什么不自己努力成为巨人呢,当然了,如果在工作的时候再用这种方式就得不偿失了,老板关心的是效果、开发周期,所以我们要适当的选择做东西的方式,在学习时,还是尽量自己去做,积极去创新,否则再厉害也只会成为一个按部就班的高级码工,而不会成长为管理者。

在做此次作业时,其实我也感觉效果很差,界面很难看,但想着代码是自己一点一点敲出来的,每一句都有自己的思考,这样感觉还是快乐地,在存在的缺点中提到切换页面需要判断用户身份效率低,在当初设计页面时,本来想着使用框架集,点击菜单连接时只改变中间部分页面的路径,可以不需要验证用户的身份,所谓有利必有弊,使用这种方式浏览器地址栏中的URL路径是不变的,一直都是首页路径,当用户刷新页面时就会跳转到首页,在某些情况下,这种情况是不可取的,所以最后还是没有用框架集去处理。

总体来说,做完本次大作业收获还是挺大的,可以将现在学过的东西整合在一起,同时可以发现自己存在问题,便于及时的纠正,虽然这门课已经结束,但是学习还没有结束,在以后的工作中还是要不断的学习,并参照老师教导的学习方法去发现更多有趣实用的技术,只有通过努力不断的去学习新的知识、接受新的技术,才能在迅速发展的IT行业立于不败之地,才能不被这个行业淘汰。

2023年6月21日发(作者:)

RIA大作业总结

班级:310112 学号:31011239 姓名:蒋固金 院系:计算机与通信工程学院

名称:用户管理系统

用户角色:游客、普通用户、管理员

功能:游客可以登录首页,浏览首页展示的已注册用户的头像,单击菜单目录里的联系交流, 可通过子菜单图片与我QQ交流或加入我创建的QQ群

普通用户在游客的基础上可以修改自己的资料与查看其他用户资料

管理员在普通用户的基础上可以管理已注册用户,修改用户密码和删除用户

使用技术:Struts2+Servlet+JSP+JQuery+JDBC,采用MVC模式开发

Struts2框架:用于用户修改个人资料时的头像上传

Servlet:MVC中的控制层,处理用户登录等大部分操作

JSP:MVC中的VIEW层,向用户显示信息,即页面

JQuery:实现页面与后台进行异步通信,产生部分动画效果

JDBC:访问与操作数据库

第三方jar包: - 功能:将JAVA对象转换为JSON格式字符串

- 功能:封装访问数据库的常用方法,实现JDBC操作数

据库

JQuery插件: - 功能:更改按钮正常、鼠标进入与鼠标按下三种状态的样式, 并添加鼠标单击事件处理函数

- 功能:将DIV作为对话框居中显示

- 功能:验证文本框的值是否符合正则表达式,不符合给出相

应提示

- 功能:为表格添加样式,实现隔行变色

存在缺陷:界面不美观,每次切换页面,都要判断用户的身份,效率低,页面加载慢,部分 Servlet没做身份拦截

优点:除必要的JAR包与JQuery库之外,所有的第三方JAR包与插件全为自己编写

后台目录结构:

网页部分目录结构:

详细功能实现方式介绍:

联系我或加入QQ群:通过访问腾讯提供的URL路径调用本地QQ程序实现

浏览已注册用户头像:加载完成后,向randomUserServlet发送请求,返回第一页要显示的用户信息,通过单击左右两边的箭头可切换显示信息

浏览用户信息:单击显示的用户头像下边的用户名连接,访问userOPServlet获得用户信息并通过请求转发将页面跳转到页面,在该页面中通过EL表达式从request范围内获得用户信息并显示,在访问userOPServlet之前,要经过checkLogin过滤器过滤,如果用户未登录,则将页面重定向到登录页面

用户登录:通过ajax与userServlet进行信息交互,判断用户名与密码是否正确,通过返回1,否则返回0,客户端通过判断返回值跳转到对应页面

用户注册:通过ajax与userServlet进行信息交互,判断用户名与密码是否可以注册,通过返回1,否则返回0,客户端通过判断返回值跳转到对应页面

我的资料:通过EL表达式从session范围内获得自己的相关信息显示在页面上

修改资料:通过EL表达式从session范围内获得自己的信息显示在页面上,单击提交按钮后,将表单数据提交给userAction,并执行update方法修改资料,修改完成后将重定向到页面显示修改信息

验证用户身份显示不同的菜单:在页面通过JSTL表达式判断用户是否登录,如果已登录判断用户ID是否等于1000,验证用户是否为管理员,并显示对应菜单

用户管理:加载完成后,向userManagerServlet发送请求,返回第一页要显示的数据,并通过上一页、下一页切换显示页,并可直接跳到指定页,各页面数据由服务端返回JSON数据获得,点击修改超链接,页面会动态的将该行记录中的密码列内容转换为文本输入框并修改修改|删除超链接为提交,管理员可修改文本框中的值,单击提交超链接,页面会判断修改后的密码是否需要提交,验证通过后将用户的ID与新密码提交给userManagerServlet,修改成功返回1,否则返回0,页面通过判断返回值给出相应提示信息;单击删除超链接后,页面会将用户的ID信息提交给userManagerServlet,删除成功返回1,否则返回0,页面通过判断返回值,如果删除成功则从页面移除该条记录

退出:访问userOPServlet将session销毁实现用户退出

测试结果:使用IETester测试,IE5.5版本显示完全不正常,JQuery脚本无效;IE6.0图像的透明效果消失,显示为白底,登录与注册页面显示不正常,无法使用;IE7.0以上版本显示正常,但是在测试时有的版本alert对话框不显示,不知是否为工具本身问题,360安全浏览器6.1版本测试正常,本机IE9显示正常

遇到的问题:

1、配置完Struts2框架后,再创建Servlet,当访问Servlet的时候,服务器会报错,这个问题与上课时为大家演示访问Servlet验证登录时无法访问Servlet问题一样,经过查看Struts2的配置文件发现了问题的所在,在Struts2框架中,访问指定路径之前都要访问过滤器,我配置的为:/*,即过滤所有路径,访问Servlet之前也会过滤,就会发生错误,解决方法为将过滤路径改为:*.action,这样Strut2框架就只会过滤已action结尾的路径,问题解决。

2、中文字符乱码:客户端与服务器之间传递信息时是通过ISO-8859-1编码方式交互数据信息,这就需要在服务器端对字符串进行重新编码,客户端提交数据时通过POST方式或GET方式提交,处理乱码的方式不同,因为提交数据时,考虑到通过GET方式提交的数据都是英文字符,所以不考虑GET方式造成的乱码,在解决POST提交的中文乱码问题时,原本采用的是过滤器方式,在访问指定的路径之前将request的编码改为utf-8格式同时所有页面的编码方式设置为utf-8,在Servlet中,中文显示正常,但是在Struts2框架中的Action中又出现了中文乱码,解决方法为将访问Action的页面的编码方式改为GBK,问题解决,中文显示正常。

3、管理员修改用户密码时服务器返回1,修改成功,但是页面上数据刷新后密码并未改变,且数据库中值也未变,对此产生了一个疑惑,为什么提示成功密码却没有改变,检查代码也没有错误,确实执行了修改数据库的方法,综合起来判断,问题应该出现我编写的操作数据库的JAR包上,通过查看JAR包的源代码发现了问题的所在,在传统的JDBC中默认是关闭事务的,即每一个SQL语句操作完后直接提交,而我在写JAR包的获得连接的方法时把自动提交事务关闭了,这样做的好处是多条语句执行,一损俱损,一条错误,全部回滚,可以保证数据库中数据的安全,比如银行转账,不可能甲账户钱扣了,乙账户钱却不加,这是不符合常理的,同样的,在此处由于事务不自动提交,当对数据库中的数据修改后没有提交数据,所以又回滚为初始状态,解决方法为修正JAR包中的代码,判断当SQL语句执行成功后,调用连接的commit()方法提交事务,问题解决。

思考与体会:

本次大作业是对本学期所学内容的整合,做页面时,虽然可以使用很多现成的框架做出美观功能强大的效果,但是我还是选择了自己编写代码实现所需功能,因为现在是学习阶段,只有通过实践才能进步,站在巨人的肩膀上虽然是站得高看得远,但是自身依然是很渺小的,一不小心就会摔下来,那么我们为什么不自己努力成为巨人呢,当然了,如果在工作的时候再用这种方式就得不偿失了,老板关心的是效果、开发周期,所以我们要适当的选择做东西的方式,在学习时,还是尽量自己去做,积极去创新,否则再厉害也只会成为一个按部就班的高级码工,而不会成长为管理者。

在做此次作业时,其实我也感觉效果很差,界面很难看,但想着代码是自己一点一点敲出来的,每一句都有自己的思考,这样感觉还是快乐地,在存在的缺点中提到切换页面需要判断用户身份效率低,在当初设计页面时,本来想着使用框架集,点击菜单连接时只改变中间部分页面的路径,可以不需要验证用户的身份,所谓有利必有弊,使用这种方式浏览器地址栏中的URL路径是不变的,一直都是首页路径,当用户刷新页面时就会跳转到首页,在某些情况下,这种情况是不可取的,所以最后还是没有用框架集去处理。

总体来说,做完本次大作业收获还是挺大的,可以将现在学过的东西整合在一起,同时可以发现自己存在问题,便于及时的纠正,虽然这门课已经结束,但是学习还没有结束,在以后的工作中还是要不断的学习,并参照老师教导的学习方法去发现更多有趣实用的技术,只有通过努力不断的去学习新的知识、接受新的技术,才能在迅速发展的IT行业立于不败之地,才能不被这个行业淘汰。