SJV框架开发教程

 

目录

第一章 SJV框架概述 1

第二章 开发准备 2

一、 JDK安装 2

二、 Tomcat安装 2

三、 MySQL安装 2

四、 Eclipse IDE安装 2

五、 Eclipse Tomcat插件安装 2

第三章 SJV框架快速上手 3

一、 建立Tomcat工程 3

二、 导入开发所需jar及相关系统基础文件 3

三、 建立第一个自己的实体类POJO 4

四、 使用代码生成器生成POJOJava代码、HTML代码 8

五、 定义管理页面URL 10

六、 定义自己的业务action 11

第四章 SJV框架高级应用 12

一、系统内置POJO介绍 12

二、扩展内置POJO 14

三、@Title标签的运用 14

四、@Lock 标签的运用 14

五、日志标签的应用@Log 15

 

 

第一章 SJV框架概述

SJVSpringJPAVelocity的第一个字母缩写,框架采用SpringMVC+JPA+Velocity+SpringSecurity+Ehcache作为基础开发结构,使用领域建模思想,开发者无须关注数据库机构,根据OOP编程特点,开发出合适的POJO,使用SJV Generator(代码生成器)自动生成所有后台管理代码及后台管理页面文件。

第二章 开发准备

一、 JDK安装

   登录官方网站下载jdk1.6及以上版本,安装到本地操作系统,设置JAVA_HOMEPath环境变量即可;

二、 Tomcat安装

   登录apache官方网站,下载Tomcat6.0及以上版本,安装到本地操作系统即可;

三、 MySQL安装

   登录官方网站,下载MySQL5.1及以上版本,安装到本地操作系统即可。

四、 Eclipse IDE安装

登录eclipse官方网站,下载eclipse3.2以上版本,解压到本地操作系统即可(安装路径尽量不要使用中文路径)

五、 Eclipse Tomcat插件安装

登录官方网站,下载对应Tomcat版本插件,复制到eclipse安装路径的plugins目录下即可。

 


第三章 SJV框架快速上手

一、 建立Tomcat工程

打开eclipse,建立一个 Tomcat工程,如下图:

 

 

二、 导入开发所需jar及相关系统基础文件

1、 在公司svn服务器(192.168.1.102/SJV开发包/SJV开发依赖jar)上下载SJV开发框架包到Tomcat工程的WEB-INF/Lib下,并设置所有jar到工程的Java Build Path

 

Java BuildPath具体步骤:右键点击项目名称,弹出菜单后选择BuildPath,再选择    ConfigerBuidlPath跳出的选项卡选择Libraries,点击右侧第一个选项Add JARS    选择刚刚下载到Tomcat工程的WEB-INF/Lib下的所有jar包,点击OK添加完成,

再点击Java Build Path选项卡中的OKJava Build Path完成。

 

2、 在公司svn服务器(192.168.1.102/SJV开发包/SJV开发配置文件)上下载系统6个配置文件applicationContext-configuration.xmlapplicationContext-security.xmlehcache.xmlpersistence.xmljdbc.propertieslog4j.propertiesWEB-INF/src;

3、 在公司svn服务器(192.168.1.102/SJV开发包/SJV开发配置文件)上下载web.xml文件及iskyshop-servlet.xml文件复制到新建工程的到WEB-INF

4、 在公司svn服务器(192.168.1.102/SJV开发包/SJV开发资源包)上下载系统资源文件夹resources并复制到Tomcat工程根目录下

5、 在公司svn服务器(192.168.1.102/SJV开发包/SJV开发基础页面)上下载系统基础页面manage.htmlleft.htmltop.htmlmain.htmlsuccess.htmluser_add.htmluser_list.html等,复制到WEB-INF/templates/manage,需要在WEB-INF下手动创建templates文件夹,在此文件夹下再创建两个子文件夹,前台页面文件夹view和后台页面文件夹manage,将刚刚下载的基础页面放在后台页面文件夹manage中即可。

 

 

 

最终系统目录结构如下:

(1) 蓝色框表示系统所有配置文件;

(2) 绿色框表示系统基础页面;

(3) 红色框表示系统前后台文件放置位置;

 

三、 建立第一个自己的实体类POJO

eclipse新建的项目WEB-INF/src上点击右键,创建新的Class文件,如下对话框:

 

输入POJO名为Article,该类需要继承IdEntity,这里要注意要选择com.iskyshop.core.domain.IdEntity

 

生成的POJO代码如下:

package com.iskyshop.domain;

 

import com.iskyshop.core.domain.IdEntity;

import javax.persistence.Entity;

import javax.persistence.Table;

 

import org.hibernate.annotations.Cache;

import org.hibernate.annotations.CacheConcurrencyStrategy;

public class Article extends IdEntity {

 

}

POJO继承自IdEntity类,包括以下字段:id(系统主键)addTime(添加时间)、deleteStatus(是否删除),在新建的POJO中可以根据需要添加任意字段及JPA允许的映射关系字段,同时要给Article增加相关标签注解使得POJO成为一个系统Entity并自动纳入缓存管理,最终代码如下:

@Cache (usage = CacheConcurrencyStrategy.READ_WRITE)

@Entity

@Table(name = "iskyshop_article")//iskyshop_article:该实体类在数据库中的表名称public class Article extends IdEntity {

   @Title(value=标题)

   private String title;

   @ManyToOne//ManyToOne:实体类之间的多对一对应关系,多个Article对应一个User,也可以表示为:一个User包含多个Article,其他对应关系分别为OneToOne(一对一),OneToMany(一对多)  private User user;

 

@Title(value=内容,type=lob)

@Column(columnDefinition = "LongText")//LongText:说明下面的content为长文本    private String content;

 

此处生成get/set方法,get/set方法分别表示获取和放入数据,该POJO中一定要生成get/set方法,用于数据的获取、放入、保存等等,在本POJO页面点击鼠标右键弹出菜单,鼠标移至Source,再次弹出菜单,点击Generate Getter and Setter,弹出选项卡,点击选择要生成get/set方法的选项,全部选中,点击OK,如下图所示:

 

生成代码如下:

    public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

 

 

}

POJO中包含2个基本字段和一个实体映射字段,字段注解为JPA标准注解标签,这里不过多阐述。

 

四、 使用代码生成器生成POJOJava代码、HTML代码

下面需要根据前面建立的实体类Article来完成SJV框架代码的生成,步骤如下:

1、建立一个SJV生成器类,该类代码如下:

public class Generator {

public static void main(String[] args) throws FileNotFoundException, IOException {

GenerateFactory.generSimple();

}

}

该生成器只有语句代码,只是需要通过main方法执行

2、在Tomcat项目work(work文件夹为sources folder类型)目录下建立package.propertiestheme.properties文件,其中package.properties配置文件用来指定需要生成代码的POJO及代码生成后基础包名,可以使用列表批量生成,生成Article如下代码:

com.iskyshop.domain.User=com.iskyshop

配置文件使用键/值配置,键用来指定需要生成的POJO,值用来指定生成代码的基础包名,这里是将com.iskyshop.domain.User实体类的SJV代码生成到com.iskyshop的包里面,将User替换为你要生成的POJO即可;

theme.properties文件用来配置系统后台管理风格,如下代码:

theme=default

default表示后台界面风格,目前系统支持3种风格,分别为defaultbrownpink,可以根据需要选择使用。

3、运行main方法,eclipse控制台有如下提示(提示是根据POJO自动生成):

 

以上提示表示在建立的Tomcat工程下的result目录中生成了SJV开发基础代码及2个后台管理页面。

4、复制result文件夹下的com文件夹到WEB-INF/src下,复制xxx_list.htmlxxx_add.htmlWEB-INF/templates/manage下,最终目录如下:

 

5、启动tomcat,输入http://localhost:8080/Test/admin/index.htm打开系统管理后台页面:

 

 

五、 定义管理页面URL

使用Dreamweaver建立站点,

建立站点方法如下:

1、点击图片中的按钮并选择新建站点                                   

 

在“你打算为您的站点起什么名字”位置处填写任意名称,点击“下一步”,选择“否,我不想使用服务器技术”,然后找到项目的位置,点击选择,然后点击下一步新建站点完成,

打开站点目录下/WEB-INF/templates/manage/left.htm页面,如下图:

 

增加<div class=collapsed></div>j节点,增加如下代码:

     <div class="collapsed">

         <span>文档管理</span>

     <a href="$!webPath/admin/article/list.htm " target="mainFrame">文档列表/a>

         <a href="$!webPath/admin/ article /add.htm" target="mainFrame">添加文档</a>

</div>

重新打开http://localhost:8080/Test/admin/index.htm页面,点击“文章列表”、“添加文章”,应该能够看到对应的页面,输入数据后能够完成数据保存。

到此为止,SJV框架DEMO设计完毕。

六、 定义自己的业务action

用户根据需要可以任意定义自己的控制器,也可以在生成的action添加自定义方法:

1、 建立自己的控制器类

@Controller//表示这个类是一个控制器类,不可缺少

public class NewsManageAction {

 

      @Autowired

private ISysConfigService configService;//系统必备service,通过该service获取对应的基础配置

      @Autowired

  private IUserConfigService  userConfigService; //系统必备service,通过该service获取对应的用户基础配置,特殊情况要用到

 

      }

2、 添加一个自定义action方法

@SecurityMapping(title = "news列表", value = "/admin/news/list.htm*", rtype = "admin", rname = "news管理", rcode = "news_manage", rgroup = "news"

@RequestMapping("/admin/news/list.htm")//方法的请求路径。

public ModelAndView list(HttpServletRequest request,HttpServletResponse response,String currentPage, String orderBy,

String orderType) {

ModelAndView mv = new JModelAndView("news_list.html"configService

.getSysConfig(),this.userConfigService.getUserConfig(), 0, request,response);

return mv;

}

第四章 SJV框架高级应用

一、系统内置POJO介绍

1、超级基础类IdEntity

字段名称

字段类型

字段备注

id

Long

使用JPA策略自动生成

addTime

Date

添加时间

deleteStatus

boolean

删除状态(默认为false,表示数据正常,true表示处于删除状态,该字段用来扩展系统特定需求)

IdEntity是系统所有POJO的父类,该类不能建立数据表,所有系统类、程序员开发类均要求继承该类,同时在编写自定义类时候不允许重复idaddTimedeleteStatus字段。

2、用户类User

字段名称

字段类型

字段备注

userName

String

用户名(用户登录名)

trueName

String

用户真实姓名

password

String

用户密码(使用MD5加密)

userRole

String

用户角色(根据系统需要扩展),管理员为ADMIN

bornDate

Date

用户出生日期

telephone

String

用户电话号码

QQ

String

用户QQ

MSN

String

用户MSN

address

String

用户地址

sex

int

用户性别(0为男,1为女,-1为保密)

email

String

用户邮件

mobile

String

用户手机号码

photo

Accessory

用户照片(一对一关系)

status

int

用户状态,该字段可以扩展系统需求

 

3、附件类Accessory

当需要使用附件添加的时候就需要附件类Accessory,在POJO类中需要建立与Accessory的对应关系,

@OneToOne

Private Accessory acc;

Action中需要注入

@Autowired

Private IAccessoryService accessoryService;

上传附件代码如下:

String uploadFilePath = this.configService.getSysConfig()

.getUploadFilePath();

String saveFilePathName = request.getSession().getServletContext()

.getRealPath("/")

+ uploadFilePath;

Map map = new HashMap();

try {

map = CommUtil.saveFileToServer(request, "acc", saveFilePathName, "", null );

if (map.get("fileName") != "") {

Accessory acc= new Accessory();

acc.setName((String) map.get("fileName"));

acc.setExt("." + (String) map.get("mime"));

acc.setSize((Float) map.get("fileSize"));

acc.setPath(uploadFilePath);

acc.setWidth((Integer) map.get("width"));

acc.setHeight((Integer) map.get("height"));

acc.setAddTime(new Date());

this.accessoryService.save(acc);

newscase.setAcc(acc);

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

html页面中

<input name = "acc" type="file" value = "$!obj.acc"/>

上传附件代码可以上传任意附件,如图片、视频、音频,附件大小不要超出10M

 

4、权限资源类Res

 

5、权限角色分类RoleGroup

 

6、权限角色类Role

 

二、扩展内置POJO

当需要对User类拓展时候,建立心累并继承User类

@SuppressWarnings("all")

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)

@Entity

@Table(name = "iskyshop_user")

@javax.persistence.DiscriminatorValue(value = "0")

public class AddUser extends User {

.

.

}

 

三、@Title标签的运用

POJO类中:

  @Title(value=标题)

   private String title;

四、@Lock标签的运用

在POJO字段中加@Lock标签,锁定该字段

添加数据时因地点被锁定不能进行数据的存储,需要在逻辑Action中save方法中wf.topo(....)下添加xx.set(...),xx代表被锁定的字段。

 

五、权限标签的应用@SecurityMapping

@SecurityMapping(title = "news列表", value = "/admin/news/list.htm*", rtype = "admin", rname = "新闻管理", rcode = "news_manage", rgroup = "新闻管理"

 

title:该方法的名称;

value:该方法权限的请求路径,注意以“*”号结尾;

rtype:权限类型,为两种,useradmin

rname为该权限名称;

rgroup为权限分组名称,例如:rname=”新闻管理“,rgroup=“系统管理”,表示在系统管理中包括新闻管理;

rcode:多个方法中rcode值相同说明这些方法为同一个权限支配,例如:rcode="article_manage"

 

注意:不是所有方法都加权限标签,权限可以理解为对用户行为的控制,有些的方法请求不需要权限,添加权限标签后要在UserManagerActioninit_role方法中添加超级管理权限加载,添加内容为已经添加权限标签所在Action名称,如:clzs.add(ArticleManageAction.class)。添加完成后需要重启Tomcat并在后台管理页面管理员管理中初始化权限,初始化后新添加的用户将受到权限的控制。

 

六、日志标签的应用@Log

 

你可能感兴趣的:(SJV框架开发教程)