JAVA数字图书馆,基于SSM框架的系统

今天和一个朋友共同完成了一个数字图书馆的设计与实现项目,我们在开发时选用的框架是SSM(MYECLIPSE)框架。我这个朋友知识有限,只会这个框架,哈哈,都是为了方便他。和往常一样选用简单又便捷的MYECLIPSE作为开发工具,这是一个 后台项目。这个系统的介绍是这样的:本文以数字图书馆的概念介绍为切入点展开论述,接着简单论述数字图书馆建设的现状,然后从信息资源数字化虚拟化、信息使用网络化共享化、信息存取方便化自由化以及日常工作个性化专业化四个角度学习论述数字图书馆的设计特点,最后从信息输入、资源整合以及人员培训三个角度论述数字图书馆的科学建设。以数字图书馆的概念介绍为切入点展开论述,接着简单论述数字图书馆建设的现状,然后从信息资源数字化虚拟化、信息使用网络化共享化、信息存取方便化自由化以及日常工作个性化专业化四个角度学习论述数字图书馆的设计特点,最后从信息输入、资源整合以及人员培训三个角度论述数字图书馆的科学建设。,一个数字图书馆的设计与实现应包含用户角色有管理员、用户。为了能让用户顺利登陆系统完成相关操作,需要为每种登陆角色设置账户和密码字段。
查询联系了资源,通过关联使得资源之间建立了联系,加强了系统的实用性和便捷性。增强了用户体验。他们之间的关联关系是查询的名字与资源的mingzi字段对应

总结得出该系统所有数据为:管理员(admin)、用户(yonghu)、资源(ziyuan)、信息输出(xinxishuru)、查询(chaxun)

管理员表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 管理员id
username | VARCHAR(255) | | 账号
password | VARCHAR(255) | | 密码
quanxian | VARCHAR(255) | | 权限

用户表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 用户id
xingming | VARCHAR(255) | | 姓名
xingbie | VARCHAR(255) | | 性别
nianling | VARCHAR(255) | | 年龄
username | VARCHAR(255) | | 账号
password | VARCHAR(255) | | 密码

资源表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 资源id
zhonglei | VARCHAR(255) | | 种类
nierong | VARCHAR(255) | | 内容
mingzi | VARCHAR(255) | | 名字
guige | VARCHAR(255) | | 规格

信息输出表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 信息输出id
shangchuanshijian | VARCHAR(255) | | 上传时间
neirong | VARCHAR(255) | | 内容
guige | VARCHAR(255) | | 规格
mingzi | VARCHAR(255) | | 名字

查询表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 查询id
mingzi | VARCHAR(255) | | 名字
zhonglei | VARCHAR(255) | | 种类
guige | VARCHAR(255) | | 规格
package org.mypro.front;

import java.io.File;

import java.io.IOException;

import java.math.BigDecimal;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.Collections;

import java.util.Date;

import java.util.List;

import javax.jms.Session;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.StringUtils;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.mypro.dao.XinxishuruMapper;

import org.mypro.entity.Xinxishuru;

import org.mypro.entity.XinxishuruExample;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.multipart.MultipartFile;

@Controller

@RequestMapping(value = "/")

public class XinxishuruController {

private static final Log logger = LogFactory.getLog(XinxishuruController.class);

@Autowired
private XinxishuruMapper xinxishurudao;

//定义方法tianjiaxinxishuru,响应页面tianjiaxinxishuru请求

@RequestMapping(value = "tianjiaxinxishuru")

public String tianjiaxinxishuru(HttpServletRequest request, HttpServletResponse response,HttpSession session,String backurl) {

logger.debug("XinxishuruController.tianjiaxinxishuru ......");

if(backurl != null && backurl.indexOf("tianjiaxinxishuru.action") == -1){

return "forward:/" + backurl; }

return "tianjiaxinxishuru";

}

@RequestMapping(value = "tianjiaxinxishuruact")

public String tianjiaxinxishuruact(HttpServletRequest request,HttpSession session, HttpServletResponse response,Xinxishuru xinxishuru,String backurl) throws IOException {

logger.debug("XinxishuruController.tianjiaxinxishuruact ......");

xinxishurudao.insert(xinxishuru);

request.setAttribute("message", "添加信息输出成功");

if(backurl != null && backurl.indexOf("tianjiaxinxishuruact.action") == -1){

return "forward:/" + backurl; }

//返回tianjiaxinxishuru方法

return "forward:/tianjiaxinxishuru.action";

}

//定义xinxishuruguanli方法响应页面请求

@RequestMapping(value = "xinxishuruguanli")

public String xinxishuruguanli(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) {

logger.debug("XinxishuruController.xinxishuruguanli ......");

XinxishuruExample example = new XinxishuruExample();

List xinxishuruall = xinxishurudao.selectByExample(example);

request.setAttribute("xinxishuruall", xinxishuruall);

if(backurl != null && backurl.indexOf("xinxishuruguanli.action") == -1){

return "forward:/" + backurl; }

return "xinxishuruguanli";

}

// 定义 xinxishuruchakan方法

@RequestMapping(value = "xinxishuruchakan")

public String xinxishuruchakan(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) {

logger.debug("XinxishuruController.xinxishuruchakan ......");

XinxishuruExample example = new XinxishuruExample();

List xinxishuruall = xinxishurudao.selectByExample(example);

request.setAttribute("xinxishuruall", xinxishuruall);

if(backurl != null && backurl.indexOf("xinxishuruchakan.action") == -1){

return "forward:/" + backurl; }

return "xinxishuruchakan";

}

// 定义 xiugaixinxishuru方法

@RequestMapping(value = "xiugaixinxishuru")

public String xiugaixinxishuru(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){

logger.debug("XinxishuruController.xiugaixinxishuru ......");

Xinxishuru xinxishuru = xinxishurudao.selectByPrimaryKey(id);

request.setAttribute("xinxishuru", xinxishuru);

if(backurl != null && backurl.indexOf("xiugaixinxishuru.action") == -1){

return "forward:/" + backurl; }

return "xiugaixinxishuru";

}

// 定义xiugaixinxishuruact处理信息输出修改

@RequestMapping(value = "xiugaixinxishuruact")

public String xiugaixinxishuruact(HttpServletRequest request, HttpServletResponse response,Xinxishuru xinxishuru,HttpSession session,String backurl) throws IOException {

logger.debug("XinxishuruController.xiugaixinxishuruact ......");

xinxishurudao.updateByPrimaryKeySelective(xinxishuru);

request.setAttribute("message", "修改信息输出信息成功");

if(backurl != null && backurl.indexOf("xiugaixinxishuruact.action") == -1){

return "forward:/" + backurl; }

return "forward:/xinxishuruguanli.action";

}

// 定义shanchuxinxishuru,处理删除信息输出

@RequestMapping(value = "shanchuxinxishuru")

public String shanchuxinxishuru(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){

logger.debug("XinxishuruController.shanchuxinxishuru ......");

xinxishurudao.deleteByPrimaryKey(id);

request.setAttribute("message", "删除信息输出成功");

if(backurl != null && backurl.indexOf("shanchuxinxishuru.action") == -1){

return "forward:/" + backurl; }

return "forward:/xinxishuruguanli.action";

}

// 定义sousuoxinxishuru方法,处理搜索操作

@RequestMapping(value = "sousuoxinxishuru")

public String sousuoxinxishuru(HttpServletRequest request, HttpServletResponse response,HttpSession session,String search,String backurl) {

logger.debug("XinxishuruController.sousuoxinxishuru ......");

XinxishuruExample example = new XinxishuruExample();

XinxishuruExample.Criteria criteria = example.createCriteria();

if(search != null){

criteria.andShangchuanshijianLike("%" + search + "%");

}

List xinxishuruall = xinxishurudao.selectByExample(example);

request.setAttribute("xinxishuruall", xinxishuruall);

if(backurl != null && backurl.indexOf("sousuoxinxishuru.action") == -1){

return "forward:/" + backurl; }

return "sousuoxinxishuru";

}

// 定义XinxishurupinglunMapper@RequestMapping

(value = "xinxishuruxiangqing")

public String xinxishuruxiangqing(HttpServletRequest request,HttpSession session, HttpServletResponse response,int id,String backurl) {logger.

debug("XinxishuruController.xinxishuruxiangqing ......");Xinxishuru xinxishuru 

= xinxishurudao.selectByPrimaryKey(id);request.

setAttribute("xinxishuru", xinxishuru);

if(backurl != null && backurl.indexOf("xinxishuruxiangqing.action") == -1){

return "forward:/" + backurl; }

return "xinxishuruxiangqing";

}

// 上传文件图片等

public String uploadUtile(MultipartFile file, HttpServletRequest request) throws IOException {

// 根据当前时间生成时间字符串

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");

String res = sdf.format(new Date());

// uploads文件夹位置

String rootPath = request.getSession().getServletContext().getRealPath("resource/uploads/");

// 原始名称

String originalFileName = file.getOriginalFilename();

// 新文件名

String newFileName = "sliver" + res + originalFileName.substring(originalFileName.lastIndexOf("."));

// 创建年月文件夹

Calendar date = Calendar.getInstance();

File dateDirs = new File(date.get(Calendar.YEAR) + File.separator + (date.get(Calendar.MONTH)+1));

// 新文件

File newFile = new File(rootPath + File.separator + dateDirs + File.separator + newFileName);

// 判断目标文件所在目录是否存在

if( !newFile.getParentFile().exists()) {

// 如果目标文件所在的目录不存在,则创建父目录newFile.

getParentFile().mkdirs();

}

System.out.println(newFile);

// 将内存中的数据写入磁盘file.

transferTo(newFile);

// 完整的url

String fileUrl = date.get(Calendar.YEAR) + "/" + (date.get(Calendar.MONTH)+1) + "/" + newFileName;

return fileUrl;

}}

添加信息输出模块:

系统中存在添加信息输出功能,通过点击添加信息输出可以跳转到该功能模块,在该功能模块中,填写对应的信息输出信息。信息输出包含信息上传时间,内容,规格,名字,填写完所有信息后,通过post方法将数据提交到tianjiaxinxishuru.action中,该地址将在服务器中xinxishuruController类中的tianjiaxinxishuruact方法中进行响应。响应结果为,获取所有的信息输出信息,封装一个xinxishuru类,使用xinxishuruController类中定义的xinxishurudao的insert方法,将信息输出数据插入到数据库的xinxishuru表中。并给出用户提示信息,添加信息输出成功,将该信息保存到request的message中,该信息将在页面中进行展示。该部分核心代码如下:

通过xinxishurudao的insert方法将页面传输的信息输出添加到数据库中 xinxishurudao.insert(xinxishuru);

将添加信息输出成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "添加信息输出成功");

返回信息输出管理界面

return "forward:/tianjiaxinxishuru.action";

查询信息输出模块:

在后台xinxishuruguanli方法中,通过selectByexample方法获取所有的数据信息。将其保存到request中,在页面中通过foreach方法

进行循环展示到table中。完成信息输出查询操作。具体代码如下:

生成信息输出样例类,通过example定义查询条件 XinxishuruExample example = new XinxishuruExample();

通过xinxishurudao的selectByExample方法查询出所有的信息输出信息 List xinxishuruall = xinxishurudao.selectByExample(example);

将信息输出信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("xinxishuruall", xinxishuruall);

返回信息输出管理界面

return "forward:/xinxishuruguanli.action";

修改信息输出模块:

对已经上传的信息输出信息可以进行修改操作,该部分操作在信息输出管理界面中点击修改按钮可以跳转到信息输出修改页面。在修改页面中,将初始化所有的信息输出字段信息,字段信息包括上传时间,内容,规格,名字。字段信息内容通过信息输出id获取。修改后的信息传入到xinxishuruController中接收为xinxishuru。在xinxishuruController中包含有提前定义好的xinxishurudao,该参数为xinxishuruMapper是实现。xinxishuruMapper中定义了修改方法,此处使用修改方法为updateByPrimaryKeySelective,该方法可以将修改后信息同步到数据库中,最终将修改成功信息返回页面中。该部分代码如下:

通过xinxishurudao的修改方法根据id修改对应的信息输出 xinxishurudao.updateByPrimaryKeySelective(xinxishuru);

将修改信息输出成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "修改信息输出信息成功");

返回信息输出管理界面

return "forward:/xinxishuruguanli.action";

删除信息输出模块:

删除信息输出功能的实现方式为,通过点击删除信息输出按钮,向服务器发起get请求。请求中包含信息输出的id信息,在xinxishuruController中使用int接受该id,并将该id传入xinxishurudao的deleteByPrimaryKey方法中。该方法的作用为根据id删除对应信息输出。最后将删除信息输出成功的信息返回页面,该部分核心代码如下:

通过xinxishurudao的删除方法根据id删除对应的信息输出 xinxishurudao.deleteByPrimaryKey(id);

将删除信息输出成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除信息输出成功");

返回信息输出管理界面

return "forward:/xinxishuruguanli.action";

猜你喜欢

转载自www.cnblogs.com/rt14/p/11580139.html