首先是视图层。视图层简单的理解就是用户的操作界面和程序在处理完用户提交的请求之后返回给用户的结果显示界面。本系统的视图层主要是用JSP页面来实现的。JSP是JAVA的一个网络应用组件,它通过动态JSP代码和HTML语句的相互嵌套,经服务器编译之后在浏览器上显示处理结果[7][8]。本系统的JSP页面可分为两类:完整的JSP页面和功能单一的JSP代码段。完整的JSP页面基本上规划好了整个页面的显示格局,具有独立显示结果的功能;而功能单一的JSP代码段是为了保证代码的清晰性和可重用性而独立出来的只具有单一功能的代码段,它不能被独立显示出来,而只能通过在完整的JSP页面中使用JSP动作语句INCLUDE使之成为JSP页面的一个功能块[9]。本系统的JSP页面都放在webcontent文件夹下, 并且根据各自功能而命名,如日记修改JSP文件叫editDiary.jsp、分类编辑JSP文件叫editKind.jsp。
其次是控制层。由于主要使用Struts框架来实现MVC模式的设计,控制层主要是在webcontent下WEB-INF文件夹中的web.xml和struts-config.xml(见附录)来实现整个系统的逻辑跳转(具体内容见附录)。当然在这之前必须把struts的外部jar包放到web-inf下的lib文件夹中,这样在写java类时直接继承struts的相关类便可实现商业逻辑了。
再次是模型层。一个好的项目必然有一个好的软件结构,在建立JAVA类之前,根据项目不同的功能先建立各自的类包很关键,这样能使在开发的时候不会因为找不到相关的类而晕头转向[10]。本系统一共建立了6个包,分别是my.bean,my.dao,my.action,my.form,my.util,my.base。下面分别对各个包里面类的作用进行简单的介绍。
My.bean:主要是存放Javabean类,主要包括和数据库中数据表的字段相对应的属性和赋值取值方法。为数据操作对象对数据进行操作时提供盛放数据的容器。
My.dao:数据操作对象包。没个类中都对应相关数据表的所有数据增删查改操作方法。
My.action:严格来说这个包里的类应该属于控制层。和struts-config.xml文件联合作用。该包的类全部继承自struts包中的Action类。通过复写execute()方法来实现业务逻辑。
My.form:表单类,所有从页面提交的表单,通过struts-config.xml文件关联后都能和此包中的类进行自动匹配。本包中类的结果类似于bean,只不过所有属性都是和表单中的参数名对应的。在创建相应的赋值取值方法之外,如果表单需要验证的话,必须复写父类的validate()方法实现表单的验证。
My.util:实用工具类。辅助类包,主要放一些重复使用次数较多的类文件。如数据库连接类Conn。
My.base:基本类。里面存放和struts验证机制和国际化相关联的properties文件和用来解决页面显示乱码问题的过滤器CharacterEncodingFilter类文件。(struts-config.xml和web.xml文件见附录三)
系统需要的Mysql数据库驱动类和struts外部包放在WebContent目录下的WEB-INF中的lib文件夹下。
源程序的文件结构视图如图3-6。
图3-6 源程序的文件结构视图
4 主要功能模块概述
4.1 用户注册模块 4.1.1 流程分析
如果用户要使用为系统提供的日志功能,那么在使用之前必须先注册。注册方式很简单在首页登陆模块内点击进入注册页面。页面中的用户信息用户名和密码为必填项。若此两项信息未正确填写将返回到注册页面并且显示错误信息。执行入库操作之前先查询用户名是否已经存在,若已存在则返回注册页面显示错误提示。为保障系统的安全性,用户在注册成功之后,需等待管理员审批。在审批通过之后方能成为正式用户,使用该系统相关功能。用户注册过程活动图如图4-1。
图4-1 用户注册过程
涉及该模块文件分别为:register.jsp、 RegisterAction.java以及UserDAO.java。
4.1.2 文件设计register.jsp文件:
按照下述内容设计register.jsp文件。
表单名:form1。
表单执行程序:register.jsp。
表单数据传输方法:post。
表单的要素如附录一表1所示。
在structs-config.xml中actionMappings中配置如下:
<action input="/register.jsp" path="/register"
type="my.action.RegisterAction" validate="true">
<forward path="/index.jsp"/>
<forward path="/register.jsp"/>
</action>
//带表单验证类的action,input参数为表单证错误返回的页面,信捷职称论文写作发表网,name是接受页面参数的表单类,path为页面请求到服务器的路径,type为处理请求的action类的路径,forward为验证成功与否的转发路径。
RegisterAction.java代码如下:
package my.action;
public class RegisterAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserBean user = new UserB