简介:适合不知如何写等于开发方面的相关专业大学硕士和本科毕业论文以及关于等于开发论文开题报告范文和相关职称论文写作参考文献资料下载。
李睿1,2 满家巨2* 邹有2 朱伟2 胡嘉2 赵海媛2
(1.湖南省农业科学院科技情报研究所湖南长沙410125;2.湖南省师范大学数学与计算机学院湖南长沙410000)
摘 要:J论文范文a Web内涵丰富,它是一切基J论文范文a的Web开发技术的统称.对B/S架构下,采用J论文范文a Web开发期刊管理系统的过程进行了较全面的讨论,着重分析基于Web框架Struts2的开发技术.最后,给出了期刊信息管理系统层次开发的全套技术路线.
关键词:B/S, J论文范文a Web,期刊信息管理系统;开发;WEB框架;STRUTS2
信息管理系统属OA范畴,常见的信息管理系统主要有人事、行政、科研等,期刊信息管理系统并不多见.目前已有的期刊信息管理系统按开发主体来分,主要可分为以下几类:有专门的公司开发的,如北京玛格泰克科技有限公司开发的适用于科技类期刊的稿件处理系统;有二次文献单位开发的,如中国学术期刊(光盘版)杂志社开发的管理系统;有大型杂志社针对本刊的特点及编辑出版工作的需要自行开发的,如中华医学会杂志社开发的管理系统[1].从系统架构来看,既有基于局域网C/S架构的,也有基于广域网B/S架构的,甚至还存在单机数据库形式的系统.从开发技术来看,采用J论文范文a Web技术开发期刊信息管理系统非常少见.
Struts2脱胎于WebWork,实现了Web层的剥离,将Action与Servlet API成功解偶,是一种比较优秀的基于J论文范文a的Web框架.从Struts2出发,对期刊信息管理系统的开发技术进行讨论,以供参考.
1.开发环境的配置
1.1开发工具
期刊信息管理系统的开发涉及多个阶段、不同层次,各阶段所使用的开发、分析工具与不同层次所使用的软件系统不尽相同.一般来说,期刊信息管理系统的开发,涉及以下工具与组件,这里所采用的分别是:UML建模工具IBM Rational,J论文范文aWeb开发工具Ecllipse,J论文范文a Web框架Struts2,事务管理组件Spring,对象关系映射框架Hibernate,Web服务器Tomcat,数据库系统MySql.实际开发中,也可依据自己的需求,通过修改XML配置文件,选用其它的工具或组件.
1.2开发工具的安装与配置
仅有分立的工具是不够的,还需将其组装、拼合起来,形成一个有效的开发平台,开发平台搭建方法如下.首先安装相应版本的JDK与MySql,然后安装Tomcat,接下来安装Ecllipse,并在其中对Web服务器与JRE进行配置,最后下载Web框架与组件Struts2、Spring、Hibernate,开发时将相应的JAR包考入到WebRoot\WEB_PINF\LIB目录.至此,开发环境配置完毕,即可着手工作.
2.期刊信息管理系统的UML分析
2.1期刊业务基本流程
期刊业务的大致流程如图4所示.期刊业务的流程是相对稳定的,但期刊业务从不同的角度出发,可以作不同的模块划分,因此选择合理的业务模型关系到期刊信息管理系统的效率和使用周期.
2.2期刊信息管理系统的功能
依据图1所示的期刊业务流程,大体将期刊信息管理系统的主要功能划分如下:信息交流与发布,如bbs,信息存储与检索,如电子稿件查询;财务管理,如财务数据的统计、报表与分析;任务管理,如编校任务的分派;权限管理等.
2.3期刊信息管理系统用例分析
用例分析是WEB系统设计的根基.从使用期刊信息管理系统的人员入手,可以期刊业务进行如下的划分.设想期刊信息管理的系统的主要使用人员为:作(读)者、财务人员、编辑等共3种身份.这些人对系统的要求不尽相同,考察其各自的主要诉求,分别为各类身份提供不同接口,通过用例分析,可以从整体上规划出系统的各模块及其接口.可采用IBM Rational建立模型进行用例分析.
2.4对各业务流程的拟合与分析
要使得期刊信息系统各的开发尽可能贴近现有业务流程,需在通过用例分析获得系统模块划分后,对各模块间的交互进行分析,顺序图、协作图是进行此项分析有力工具.此后,根据用例模型、顺序图、协作图的分析结果,即可进行类的设计,类的设计可采用类图进行,类的实例分析可通过对象图进行分析.以上分析均可通过IBM Rational进行进行. 3期刊信息管理系统的分层设计方案 当通过UML建模获取到系统的功能组成模块、各子系统业务流程,完成类的设计、类状态变换的模拟后,即可着手进行系统开发的工作,系统开发分层次进行.
3.1表现层开发
3.1.1页面设计
依表达内容划分,页面可以分为前台、后台页面,各页面中最为重要的、直接影响客户体验的是主页.主页设计方案不一,总体以美观、大方、方便、易用为宜.在主页设计中要充分使用<,div>,<,/div>,标签与CSS属性.
依与服务器交互与否,页面可分为动态、静态页面,其中动态页面采用JSP,静态页面采用Html,以减轻服务器的负担.
3.1.2 J论文范文aScript与JQuery的使用
在改善客户体验中,常谈起的AJAX,它是AsynchronousJ论文范文ascript and Xml的简称,是基于XMLHttpRequest的一组脚本技术的简称,它能够以DOM文档的形式返回内容,可以同步 或异步地返回WEB服务器的响应.JQuery是一种AJAX框架,要在页面文件中使用JQuery,可在WebRoot目录下新建一个文件夹,如jslib,将相关版本的JOuery.js拷入(这里采用的版本是 1.3.1),然后在页面文件中添加<,script type等于“text/j论文范文ascript"src等于“jslib/jquery-1.3.1.js">,<,/script>,语句,即可在页面文件中的 J论文范文aScript中使用JQuery了.
此外,通过XMLHttpRequest对象与服务器进行数据交互时,可以采用XML数据格式,也可采用JSON作为数据的载体.
3.1.3浏览器的适应性与页面代码调试
浏览器适应性问题主要出现在IE与其它主流浏览器之间,如FireFox等.其原因在于IE采用的是微软自己的标准,IE7以后 有所改进,但仍需注意.在前台代码编写时要充分考虑到浏览器的适应性,避免页面在不同类型浏览器中打开时出现客户体验的差别.
在表现层代码编写中,J论文范文ascript的调试是个难点,调试工具并不多见,FireFox中所带的FireDebug比较优秀.开发时可 以考虑以FireFox为基础,进行代码的编写和调试,成功后再进行浏览器适应性的试验.
3.2控制层
控制层主要包括3个部分,Struts2、Spring、Hibernate.虽然从严格意义上来说,Spring关注的是事务管理与依赖注入, 而Hibernate关注的重点是对象关系映射,不能算是控制层的东西,但作为Struts2的重要辅助,同时为了讲述的方便,因此将3 者都归入控制层.
依系统功能模块划分的不同,控制层代码不尽相同.控制层中相关Action代码的编写并不复杂,可供参考的资料不少,关 键是几个从ActionSupport中继承方法的编写.个人认为,控制层的复杂主要在于SSH2环境整合、几个配置文件的编写和通用 DAO的设计.
3.2.1 SSH2环境整合
SSH2环境整合的难度在于JAR包的选择,因涉及开发工具、各框架、组件间的版本配合,需要较长时间的摸索才能 选择适当的JAR包.经过实践,笔者得出是MyEcllipse 7.0、Struts 2.1.6、Hibernate 3.3.2、Spring 2.5.6开发环境下, SSH2整合所需的JAR包.因为各JAR包的功能不一,不变表述,故罗列如下:iaas.jar、jasperreports-2.0.5.jar、j论文范文assist. jar、jaxen-l.l-beta-7.jar、jboss-archive-browsing.jar、jdbc2_O-stdext.jar、jotm.jar、jta.jar、junit-3.8.2.jar、jxl. jar、log4j-1.2.15.jar、mysql-connector-j论文范文a-5.1.7-bin.jar、ognl-2.6.ll.jar、oscache-2.4.l.jar、persistence.jar、poi- 3.0.1 .jar、portlet-api.jar、spring-agent.jar、spring-aop.jar、spring-aspects.jar、spring-beans.jar、spring-context.jar、 spring-core.jar、spring-jdbc.jar、spring-orm.jar、spring-tomcat-we论文范文er.jar、spring-tx.jar、spring-web.jar、spring- webmvc.jar、spring-webmvc-portlet.jar、spring-webmvc-struts.jar、struts2-core-2.1.6.jar、struts2-spring-plugin- 2.1.6.jar、struts.jar、velocity-1.5.jar、velocity-tools-view-1 .4.jar、xapool.jar、xerces-2.6.2,jar、xml-apis,jar、xwork- 2.1.2.jar、iText-2.0.7.jar、hibernate-validator.jar、hibernate- entitymanager.jar、hibernate-commons-annotations.jar、hibernate-annotations.jar、hibernate3.jar、freemarker.jar、ejb3-persistence.jar、ehcache-1.2.3.jar、dom4j-1.6.l.jar、commons-pool.jar、commons-『ogging.jar、commons-lang.jar、commons-io-1.3.2.jar、commons-httpclient.jar、commons-fileupload.jar、commons-dbcp.jar、commons- collections-2.1.1.jar、commons-codec.jar、commons-attributes-compiler.jar、commons-attributes-api.jar、common-annotations.jar、cglib-nodep-2.1_3.jar、c论文范文0- 0.9.1 .2.jar、aspectjwe论文范文er.jar、aspectjrt.jar、aspectjlib.jar、a论文范文-util-2.2.3.jar、a论文范文-commons-2.2.3.jar、a论文范文-attrs.jar、a论文范文.jar、aopalliance.jar、antlr-2.7.6.jar.
3.2.2 XML配置文件所处目录
在SSH2整合环境下,需要以下配置文件web.xml、struts.xml、hibernate.cfg.xml、applicationContext.xml.这些配置文件分列在工程中的不同目录下,其中,struts.xml、hibernate.cfg.xml处于.\s rc目录下,web.xml、applicationContext.xml处于.\WebRoot\WEB-INF目录下,各XML文件位置不能错误.
3.2.3 XML配置文件代码示例
各XML文件中,struts.xml主要用来配置论文范文与页面跳转控制,参考资料较多,不再叙述.
部署描述文件web.xml用于控制Web应用程序的许多方面.使用web.xm『,可以为servlet分配自定义的统一资源定位符(URL),规定整个应用程序和特定servlet的初始化参数,控制session会话的失效时间,声明过滤器,声明安全角色,通过声明安全角色来限制Web资源的访问权限等.在WEB框架的作用下,web.xml的配置大大简化,SSH2整合环境下,web.xml中需增加的典型代码如下.
<,listener>,
<,listener-class>,org.springframework.web.context.ContextLoaderListener<,/listener-class>,
<,/listener>,
<,filter>,
<,filter- na me>,editionfilter<,/filter- name>,
<,filter-class >,org.apache.struts2.dispatcher.ng.filter.Struts PrepareAnd ExecuteFilter<,/filter-class>,
<,/filter>,
<,filter-mapping>,
<,filter-na me>,editionfilter<,/filter- name>,
<,url-pattern>,/*<,/url-pattern>,
<,/filter-mapping>,
由于标签的使用,hibernate相关配置文件得到大大的简化,仅需hibernate.ctg.xml,且书写相当简单,仅需一个空壳而已.
SSH2环境下,applicationContext.xml是核心配置文件,自动装配、数据源、事务等的配置均在该文件中完成.以期刊信息管理系统为例,笔者书写的applicationContext.xml关于数据源、事务、自动装配的代码如下.
(1)数据源配置
<,context:annotation-config>,<,/context:annotation-config>,
<,bean id等于"editionDataSource"
class等于&,acute,com.mchange.v2.c论文范文0.ComboPooledDataSource"
destroy-method等于"close" dependency-check等于"none">,
<,property name等于"driverClass" value等于"com.mysql.jdbc.Driver">,<,/prope rty>,
<,property name等于&,acute,jdbcUrl"
value等于"jdbc:mysql://localhost:3306/editiondb">,
<,/property>,
<,property name等于"user" value等于"root">,<,/property>,
<,property name等于"password"value等于"mysqIH>,<,/property>,
<,property name等于"acquirelncrement"value等于"3">,<,/property>,
<,property name等于"initiaIPooISize"value等于"3">,<,/property>,
<,property name等于"minPooISize"value等于"lO">,<,/property>,
<,property name等于"maxPooISize"value等于H25&,acute,>,<,/property>,
<,property name等于"maxldleTime&,acute,value等于"60">,<,/property>,
<,property name等于"checkoutTimeout"value等于"3000">,<,/property>,
<,property name等于"maxStatements"value等于"100">,<,/property>,
<,property name等于"idleConnectionTestPeriod" value等于"30">,<,/property>,
<,/bean>,
<,bean id等于"editionSessionFactory"
class等于"org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">,
<,property name等于"dataSource">,
<,ref local等于"editionDataSource"/>,<,/property>,
<,property name等于"configurationClass "value等于"org.hibernate.cfg.AnnotationConfig u ration">,<,/property>,
<,property name等于"hibernateProperties">,<,props>,
<,prop key等于"hibernate.dialect">,
org.hibernate.dialect.MySQLDialect
<,/prop>,
<,prop key等于"hibernate.jdbc.batch_size">,25<,/prop>,
<,prop key等于"hibernate.jdbc.fetch_size">,30<,/prop>,
<,prop key等于"hibernate.show_sql">,true<,/prop>,
<,prop key等于"hibernate.connection.release_mode">,after_transaction<,/prop>,
<,prop key等于"hibernate.hbm2ddl.auto">,update<,/prop>,
<,prop key等于"hibernate.cache.use_second_level_cache">,true<,/prop>,
<,prop key等于"hibernate.cache.provid e r_class" >,org.hibernate.cache.OSCacheProvider<,/prop>,
<,prop key等于"hibernate,cache.use_query_cache">,true<,/prop>, <,/props>, <,/property>,
<,property name等于"annotatedClasses">,
<,list>, <,value>,edition.stone.modeI.AuthorBean<,/Value>, <,value>,edition.stone.modeI.UserBean<,/value>,
<,/list>, <,/property>, <,/bean>,
<,bean id等于"editionTransactionManager"class等于&,acute,org.springframework.orm.hibernate3.HibernateTransactionManager >,
<,property name等于"sessionFactory">,
<,ref local等于&,acute,editionSession Factory">,<,/ref>,
<,/property>,
<,/bean>,
<,tx:advice id 等于"editionSe rviceAdvice"
transaction-manager等于"editionTransactionManager">,
<,tx:attributes>,
<,tx:method name等于"*"propagation等于"REQUIRED" >,<,/tx:method>,
<,/tx:attributes>,
<,/tx:advice>,
<,aop:config>,
<,aop:pointcut expression等于"execution(*edition.stone.service**(.))”id等于"editionServicePointCut"/>,<,aop:advisor
advice-ref等于"editionServiceAdvice"pointcut-ref等于"editionServicePointCut">,<,/aop:advisor>, <,/aop:config>,
<,aop:config>,
<,aop:aspect id等于"authorvalidateadvise"ref等于"authorvalidation">,
<,aop:pointcut
expression等于"execution(*edition.stone.service.Edition ManusciptServicelm pl.receiveManuscript(.))"
id等于"receivemanuscriptpoint" />,<,aop:before method等于"isAuthorlnDatabase"
pointcut-ref等于"receivemanuscriptpoint"/>,
<,/aop:aspect>,<,/aop:config>,
(3)自动装配
<,bean id等于"editionGenericDao"
class等于"edition.stone.dao.GenericDaolmpl"abstract等于"true">,
<,property name等于"sessionFactory&,acute,>,
<,ref local等于"editionSession Factory"/>,<,/property>,
<,/bean>,
<,bean id等于"editionManuscriptDao" class等于"edition.stone.dao.ManuscriptDaolmpl" parent等于"editionGenericDao">,
<,/bean>,
3.2.4通用DAO的设计
通用DAO为数据的访问提供了一个统一的接口,充当逻辑层与数据层的*,通过通用类及其派生类的实例实现对数据增、删、改、查.以期刊信息管理系统为例,笔者书写的通用DAO接口、通用DAO实例、派生接口、派生类实例代码如下.
(1)通用DAO接口
import j论文范文a.io.Serializable,
import j论文范文a.utiI.List,
import org.springframework.dao.DataAccessException,
public interface IGenericDao<,T, ID extends Serializable>,
{
//增加一条记录
public ID addRecord(T entity) throwsDataAccessException,
..
}
(2)通用DAO类的实现
import j论文范文a.io,Serializable,
impo rt j论文范文a.lang.reflect.Pa rameterizedType,
import j论文范文a.utiI.List,
import org.springframework.dao.DataAccessException,
import org.springframework.orm.hibernate3.supportHibernateDaoSupport,
public class GenericDaolmpI<,T, ID extends Serializable>,extends HibernateDaoSupport
implements IGenericDao<,T, ID>,
{
protected Class<,T>, clazzt,
protected Class<,ID>, clazzid,
@SuppressWarnings("unchecked")
public GenericDaolmpl()
{clazzt等于{Class<,T>,)(ParameterizedType)this.getClass().getGenericSuperclass()).getActuaITypeArguments()[0],
clazzid等于(Class <,ID>,)((ParameterizedType)this.getClass().getGenericSuperclass()).getActuaITypeArg uments()[1]:
)
)
(3)通用DAO接口下,派生接口
import edition.stone.model.ManuscriptBean,
public interface IManuscriptDao extends IGenericDao<,ManuscriptBean, String>,
{
)
(4)通用DAO接口下,派生接口的实现
import org.springframework.dao.DataAccessException,
import edition.stone.model. ManuscriptBean,
public class ManuscriptDaolmpl extends GenericDaolmpl<,ManuscriptBean, String>, implementsIManuscriptDao
{
}
通用DAO设计完毕后,还需在applicationContext.xml中通过自动装配注入sessionfactory(见3.2.3中关于自动装配的代码).
3.3模型层
模型层对应着系统的后台数据库,通过JDBC驱动实现框架与数据库间的交互.在SSH2环境下,借助Hibernate对象关系映射,模型层的建立,无需直接与数据库交互,即数据表的建立可以不依赖于具体数据库系统.在模型层代码编写上,每张独立的表对应一个J论文范文aBean,在Bean代码中通过Hibernate标签,进行注解,然后在Sping的配置文件ApplicationContext.xml中进行数据源和容器注入的配置(见3.2.3),既可在数据库中生成系统所需全部数据表.J论文范文aBean代码示例如下.
import j论文范文a.io.Serializable,
import j论文范文a.utiI.Set,
import j论文范文ax.persistence.CascadeType,
import j论文范文ax.persistence.Colu mn,
import j论文范文ax.persistence.Entity,
import j论文范文ax.persistence.GeneratedValue,
import j论文范文ax.persistence.ld,
import j论文范文ax.persistence.JoinColumn,
import j论文范文ax.persistence.JoinTable,
import j论文范文ax.persistence.ManyToMany,
import j论文范文ax.persistence.ManyToOne,
import j论文范文ax.persistence.OneToMany,
import j论文范文ax.persistence.Ta ble,
import org.hibernate.annotations.GenericGenerator,@Entity@Table(name等于"tb_column")
public class ColumnBean implements Serializable
{
private static final long seriaIVersionUID 等于 1 1,
private String id,
private String title,
private Set<,UserBean>, manageres,
private Set<,BasiclnformationBean>, informations,
private ColumnBean parentcolumn,//以guid作为键 @ld@Column(name等于"column_id",nullable等于false,unique等于true)@GeneratedValue(generator等于"mygenerator")@GenericGenerator(name等于"mygenerator",strategy等于"guid")
public String getld() {
return id,
}
public void setld(String id) {
this.id 等于 id,@Column(name等于"column_title")
public String getTitle() {
return title,
}
public void setTitle(String title) {
this.title 等于 title,
}
//多对多关联
@ManyToMany(targetEntity等于UserBean.class)
@JoinTable(name等于"tb_column_manager",
joinColumns等于{@JoinColumn(name等于"column_id")},
inversejoinColumns等于{@JoinColumn(name等于"user_id")}
)
public Set<,UserBean>, getManageres() {
return manageres,
public void setManageres(Set<,UserBean>,manageres) {
this.manageres 等于 manageres,//-对多关联@OneToMany( cascade等于CascadeType.MERGE, mappedBy等于"column"
public Set<,BasiclnformationBean>, getlnformations0{
微信开发者平台:易语言不等于辅助制作开发教程
return informations,
}
public void setlnformations(Set<,Basiclnformation Bean>, informations) {
this.informations 等于 informations,
}
//多对一关联@ManyToOne@JoinColumn(name等于"column_fk",nullable等于false)
public ColumnBean getParentcolumn() {
return parentcolumn,
public void setParentcolumn(ColumnBeanparentcolumn) {
this.parentcolumn 等于 parentcolumn,
}
public static long getSeriaIVersionUIDO {
retum seriaIVersionUID,
)
}
4.小结
随着信息技术的发展,各家刊物在出版手段、信息容量、稿源争取、交流效率等方面的竞争日趋激烈.一个好的信息管理平台,不仅能够良好地展示刊物的形象,加强与读者的联系,加速刊物的出版,扩大刊物的信息容量,更能为刊物的发展提供一个根基,随着平台建设的扩展与延伸,必能为刊物的下一步发展提供一个良好的支撑.
B/S架构下的期刊信息管理系统,选择采用J论文范文A WEB技术开发具有以下优势,开源性、优秀的跨平台性能、Web框架稳定成熟、生产效率高、生产成本低.系统开发完成后,可部署于开源的WEB服务器TOMCAT上,从而进一步降低运行维护成本.
参考文献
[1]孙鑫.J论文范文a Web开发详解[M],北京:电子工业出版社,2008
[2]孙鑫.STRUTS2深入详解[M].北京:电子工业出版社,2008.
[3]ElliotJ.Hibemate程序高手秘笈[M].南京:东南大学出版社,2007
[4]丁跃潮,张涛,叶文来,等.XML实用教程[M]北京:北京大学出版社.2006.
[5]Alan Shalloway,James R.Trott.设计模式精解[M].北京:清华大学出版社,2004.
[6]萨师煊,王珊.数据库系统概论[M].北京高等教育出版社.2000.
总结:这是一篇与等于开发论文范文相关的免费优秀学术论文范文资料,为你的论文写作提供参考。
微信开发者平台引用文献:
[1] 微信公众平台和互联网函授毕业论文范文 微信公众平台和互联网硕士毕业论文范文2万字
[2] 微信公众平台和混合式教学论文范文文献 微信公众平台和混合式教学类论文范文资料8000字
[3] 微信公众平台和传播效果毕业论文提纲范文 微信公众平台和传播效果方面论文范文2万字