1、Java Web 程序设计 目录:一、系统设计- 3 -(1)构架模型- 3 -(2)开发平台、开发工具、系统服务器的选型- 3 -(3)相关技术的介绍- 3 -二、数据库结构- 4 -数据表的设计和结构说明- 4 -三、系统结构及模块- 5 -(1)整个系统的介绍- 5 -(2)整个系统的结构,各模块之间的关系图。- 6 -(3)系统中MVC层次结构介绍- 7 -(4)各模块介绍,功能说明,及相关图表- 7 -四、系统界面截图- 8 -(1)系统主界面截图- 8 -(2)其他功能模块截图- 8 -五、部分新增代码说明- 12 -六、系统特色说明- 14 -七、总结:- 16 - 一、 系统设
2、计(1) 构架模型浏览器browserJSPservletJavaBeanaaaanViewModelrequestresponseControl数据库DataBase (2) 开发平台、开发工具、系统服务器的选型本系统运用J2EE中的JSP MODEL2的MVC (MODEL+VIEW+CONTROL)模型,运用Netbeans 6.8 + Tomcat6.0 + JDK6.0 + Microsoft office Access 2003 的组合开发平台开发测试。(3) 相关技术的介绍Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的
3、总称。 用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力: 跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展, 常用的浏览器现在均支持Java applet。 Java Web,是用Java技术来解决相关web互联网领域的技术总和。 web包括:web服务器和web客户端两部分。 Java在客户端的应用有java applet不过现在使用的很少, Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。 Java技术对Web领域的发展注入了强大的动力。Java 的 Web框架虽然各不相同,
4、但基本也都是遵循特定的路数的: 使用Servlet或者Filter拦截请求,使用MVC的思想设计架构, 使用约定,XML或 Annotation实现配置,运用Java面向对象的特点, 面向抽象实现请求和响应的流程,支持Jsp,Freemarker,Velocity等视图。Java EE出现之前,分布式多层企业应用系统的开发和部署没有一个被普遍认可的 行业标准,几家主要的中间件开发商的产品各自为政,彼此之间缺乏兼容性,可移植性差,难以实现互操作。 java EE的出现,规范了分布式多层体系的应用开发。java EE 将企业应用程序划分为多个不同的层, 并在每一个层定义的组件来实现它。典型的jav
5、a EE 结构的应用程序包括四层:客户层,表示逻辑层(Web 层) 业务逻辑层和企业信息系统层。 java EE 客户层可以使网络浏览器也可以是桌面应用程序。 表示逻辑层(Web 层),业务逻辑层都位于应用服务器上,它们都是由一些java EE 标准组件 JSP(Java Servlet Page),Servlet,EJB(Enterprise JavaBeans)等来实现,这些组件 运行在实现了java EE 标准的应用服务器上,以实现特定的表现逻辑和业务逻辑。 企业信息系统层主要用于企业信息的存储管理,主要包括数据库系统,电子邮件系统,目录服务等。 java EE 应用程序组件经常需要访问
6、企业信息系统层来获取所需的数据信息。 java EE 体系构架的实施可显著的提高企业应用系统的可移植性,安全性,可伸缩性, 负载平衡和可重用性。二、 数据库结构数据表的设计和结构说明数据表设计视图:数据表设计说明:1) 页面分层设计,没有冗余的页面;2) 页面分页设计,减少用户拖拉滚动条的烦恼,每次取出当前页的数据,减少数据库到系统的数据传输量,节省时间。3) 数据库中的数据取出存放在Access文件中,使架构更优美;三、 系统结构及模块(1) 整个系统的介绍用户注册管理系统包括有:用户登录,新用户注册以及修改个人信息和用户选购书籍。该系统主要实现用户登录与注册的系统。实现的功能有:1、 用户
7、登录界面。用户输入用户名,密码,验证码进入网站。2、 用户注册界面。新用户可以进入注册界面,输入一些必要的信息(用户名必须是不一样的,即不能出现和原数据库中有的用户名)即可注册会员,下次登录时就可输入用户名,密码,就可以立即登录了。3、 查看日历界面。用户可以查看当前日历。4、 查看用户信息界面。用户可以查阅自己的个人信息。5、 修改用户信息界面。用户可以修改自己的个人信息。6、 用户选择书籍界面。用户登录成功之后可以选购自己喜欢的书籍。然后去付账界面付账。本系统主要包括两项操作,即用户登录和用户注册。运行登录页面后,如果没有注册会员可以单击“新会员注册”按钮跳转到会员注册页面,在此页面中可以
8、先判断用户输入的会员名是否存在,如果存在,则需要重新选择会员名,如果不存在用户可以继续输入个人资料来完成注册,完成注册后添加注册日志。如果用户已经注册过,则直接输入会员名、密码和验证码,单击“登录”按钮进行登录。在单击“登录”按钮时,系统首先判断用户输入的验证码是否正确,如果正确,再判断用户输入的会员名和密码是否正确,都正确后登录成功。优雅的分层设计、美观的页面设计、功能间低耦合、SQL及算法语句的优化让系统增色不少。(2) 整个系统的结构,各模块之间的关系图。用户是否登录登录用户名、密码、验证码是否正确进入欢迎页面注册注册信息是否合法返回登录页是否否是是否图 用户注册与登录系统业务流程图(3
9、) 系统中MVC层次结构介绍系统Web应用部分采用J2EE三层构架,将表现层,中间层和数据层分开,将所有的商业逻辑和工作流放入服务器端。在中间应用层中,采用以 EJB为中心Servlets做控制、JSP负责呈现逻辑的MVC结构。系统中间层中MVC结构把功能模块、显示模块和控制模块分离,使各部分之间协调工作、耦合性较小。EJB负责业务逻辑部分,通过对系统的分析,为了使系统开发与维护更具有可操作性,使系统结构更清晰,将业务逻辑划分为应用逻辑和商业逻辑两部。其中应用逻辑部分负责用户的请求,商业逻辑部分负责与数据库服务器的操作。应用逻辑以应用的需求调节调用商业逻辑,商业逻辑将相应结果再返回给应用逻辑。
10、业务逻辑功能的划分使EJB处理更加自如缩短开发周期,提高开发质量,同时也提高了系统的可复用性。(4) 各模块介绍,功能说明,及相关图表模块划分:本系统设计的并不复杂,模块划分也比较清楚。通过对不同的功能进行分析,就可以得到系统的模块划分: 登录管理模块:用户登录,输入用户名和用户密码。只用两者都符合数据库中的信息才登录成功,否则失败。 注册模块:用户注册信息,输入用户名,密码,确认密码,以及邮箱等。用户名必须是数据库没有的用户名,否则注册失败;密码和确认密码必须一致,否则也是失败的。 信息模块:包括对个人信息的查询。 日历模块:查询当前日历的功能。功能说明:用户来到首页,可以看到相关的关于系统
11、的介绍。如果为新用户则需要先去注册用户,否则直接点击登录。注册完成之后返回登录页面进行登录,进入系统,这是你可以选择去选购书籍或者其他。选购书籍之后可以去收银台付账,也可以重新选择书籍。付账之后可以查看信息也可以查看日历。也可以选择退出登录。四、 系统界面截图(1) 系统主界面截图我的主页:(2) 其他功能模块截图登录页面:注册页面:日历页面:登录成功:选购书籍页面:收银台页面:退出登录:五、 部分新增代码说明LoginServlet 中用来判断用户名是否存在: String username = request.getParameter(username); String password
12、= request.getParameter(password); String gotoPath = request.getParameter(gotoPath);/check null if (username.equals() request.setAttribute(notice, 用户名未输入); request.getRequestDispatcher(login/login.jsp).forward(request, response); else /validate UserDAO userDao = new UserDAO(); if (password.equals(use
13、rDao.getOneByUsername(username).getPassword() session.setAttribute(username, username); if (!gotoPath.equals(null) response.sendRedirect(gotoPath); else response.sendRedirect(login/welcome.jsp); else request.setAttribute(notice, 用户名或密码输入错误); request.getRequestDispatcher(login/login.jsp).forward(requ
14、est, response); RegisterServlet 中用来判断正误: String username = request.getParameter(username); String password1 = request.getParameter(password1); String password2 = request.getParameter(password2); String email = request.getParameter(email);/判断是否为空 if (username.equals() | password1.equals() | password2
15、.equals() request.setAttribute(notice, 信息未输入完整); request.getRequestDispatcher(login/register.jsp).forward(request, response);/用户名是否过长 else if (username.length()10) request.setAttribute(notice, 用户名不能超过20字符); request.getRequestDispatcher(login/register.jsp).forward(request, response);/两次密码是否相同 else if
16、 (!password1.equals(password2) request.setAttribute(notice, 两次输入密码不同); request.getRequestDispatcher(login/register.jsp).forward(request, response);/用户名是否已注册 else UserDAO userDao = new UserDAO(); if (!userDao.isExist(username) userDao.add(username, password1, email); request.setAttribute(notice, 注册成功
17、!请登录。); request.getRequestDispatcher(login/login.jsp).forward(request, response); else request.setAttribute(notice, 用户名已注册,请更换用户名); request.getRequestDispatcher(login/register.jsp).forward(request, response); ShoppingServlet 中用来存放字符数组: HttpSession session = request.getSession(); request.setCharacter
18、Encoding(utf-8); String bookname = request.getParameterValues(choice); ArrayList books = new ArrayList(); if (bookname != null) books.add(Integer.toString(bookname.length); for (int k = 0; k bookname.length; k+) books.add(booknamek); session.setAttribute(b, books); request.getRequestDispatcher(login
19、/shopping.jsp).forward(request, response);六、 系统特色说明本系统运用了两个技术即用户登录和用户注册技术。还有用户选课技术,用户可以通过复选框选择多门书籍。通过ArrayList 来存放字符数组 存放书籍数量还有书籍名称。如下图:用户还可以查看个人信息:也可以修改个人资料:七、 总结:本系统主要涉及两个技术,即用户登录和用户注册技术。虽然只有两个看似简单的技术,但对于初学者的我来说,在试验过程还是碰到许多的难题,当然在一次次的失败中也获得了很多的经验教训。先将试验的心得总结如下:一、 前台网页与数据库的连接:由于刚开始没有注意在数据库的连接方式导致连接
20、数据库时出现错误。经过改正后,能从前台看到数据库中的会员信息了。二、 控件信息的获取:由于没有学过相关的控件知识,做到这步还是有点困惑的。在通过上网查阅资料,以及询问同学之后,了解到,其实和以前学过的eclipse开发类似,都是通过封装技术“即所谓的get,set”。三、 页面设计:我比较热心与做界面的美化设计,虽然比较浪费时间,但是我觉得还是很有必要的。营销学上学过,一个网站的好坏,很大部分反映在界面的设计上。不管网站功能有多么的强大,页面不够美观的话,我相信一定不会有很多人感兴趣,“第一映像”还是很重要的。一个过于“朴素”的界面,你会去关心它吗?当然,界面的美观是重要的一部分,网站的功能也是很重要的。我在这方面还是比较欠缺技术的。相信在以后的学习过程,能加强这两方面的技术,在实现功能的基础上加以美化,在美化的前提下,获得强大功能!总之,整个系统的设计过程还是充满着乐趣的。很好的锻炼了自学能力,也增强了检索资料的能力,和与人沟通的交际能力。这不是一次单纯的实验,单纯的作业任务,而是一次很好的锻炼机会。在疑问中学会提出问题,在失败,获得经验教训,是自己的技术水平得到提升。- 17 -