王先清
摘要:随着互联网时代的不断发展,人们沟通的工具除了即时通信工具外,各大论坛、博客技术也逐渐发展起来,实现多用户之间的交互,不同用户可以彼此访问对方的博客、评论、留言等。博客成为另一个具有影响力的自由媒体。博客网站是当今网络的热点,个人博客技术的出现使得每个人可以零成本、零维护地创建自己的网络媒体,Blog站点所形成的网状结构促成了不同于以往社区的Blog文化,Blog技术缔造了“博客”文化。该平台基于Spring MVC+Mybatis+Spring框架进行项目搭建,采用JavaConfig+Maven及Mybatis实现一套高效,简洁和实用的博客系统
关键词:JavaConfg;SpringMvc;Spring;Mybatis;博客
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)19-0107-03
如果说博客网站是一个舞台,那么所有的博客都是其中的舞者,把自己有价值的真实的一面展示在网络世界中,相互交流沟通。互联时代,博客现已成为大家交流的工具之一,在生活中每个技术人员都喜欢在相关的论坛发表帖子或评论,来表达技术上的一些创新思想与方法,但阅读别人的技术与方法时是零散杂乱的。博客的出现,让技术人员在平时可以随时把想法和每天技术研究上的一些创新思想与方法整理归纳到自己的博客上,让每次阅读时无形又能产生新的思维。虽然一些技术方法与思维方式暂时深度不够,但在大量积累的过程中,自己会对某个小小的问题有了更多的思考,再整理成博客文章时会有一种收获感,一种思想得以释放、思考得以延伸的成就感。生活中督促自己努力,把一时的想法变成現实,博客成就自己的每一天留下了一道浅浅的思考和划痕。基于SSM架构博客平台打造一套高效,简洁和实用的博客平台采用基于Spring MVC+Mybatis+Spring框架进行项目搭建,采用JavaConfig+Maven及Mybatis技术实现。
1 平台需求分析
博客平台是一个多用户、多界面的系统,主要包括以下三个大模块组成,平台总体结构如图1所示。
1.1 公共、用户模块
本模块分为4个小模块:文章模块、图片模块、消息模块、设置模块
1.2 后台管理模块
本模块分为9个小模块组成:登录及注销模块、网站统计模块、网站设置模块、邀请码模块、公告管理、通知管理、文章管理、会员管理、留言板管理。
2 平台设计
按照需求功能要求,将系统分解为多个子系统,根据每个子系统的功能不同,分别完成需求分析中的不同要求。
2.1 数据库功能分配设计
2.2 相关接口逻辑
架构实现原理如图2。
1) Spring配置
public class SpringConfig extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setDefaultEncoding("utf-8");
multipartResolver.setMaxUploadSize(2048 * 1024);
multipartResolver.setMaxInMemorySize(2048);
return multipartResolver;
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
2) Mybatis 配置
public class MyBatisConfig {
@Autowired
Environment env;
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(env.getProperty("sql.driver"));
dataSource.setUrl(env.getProperty("sql.url"));
dataSource.setUsername(env.getProperty("sql.user"));
dataSource.setPassword(env.getProperty("sql.password"));
return dataSource;
}
@Bean
public DataSourceTransactionManager transactionManager(){
return new DataSourceTransactionManager(dataSource());
}
@Bean
public SqlSessionFactory getSqlSessionFactory() throws Exception{
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource());
bean.setTypeAliasesPackage("com.pojo");
SqlSessionFactory sqlSessionFactory = bean.getObject();
sqlSessionFactory.getConfiguration().setMapUnderscoreToCamelCase(true);
return bean.getObject();
}
}
3) Maven配置
3 平台实现
3.1 核心代码段
1) 发布文章
public ModelAndView articleSave(@RequestParam("file")MultipartFile file,HttpServletRequest request,
@RequestParam("title")String title,@RequestParam("content")String content,@RequestParam("type")String type) throws Exception{
session = request.getSession();
ServletContext servletContext = session.getServletContext();
String savePath = servletContext.getRealPath("/");
String saveUrl = null;
String repositoryPath = null; // 圖片绝对路径
//保存文件的物理路径
savePath += "picture/";
//相对路径
saveUrl = request.getContextPath() + "/picture/";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String ymd = sdf.format(new Date());
savePath += ymd + "/";
saveUrl += ymd + "/";
repositoryPath = savePath;
repositoryPath = savePath;
File dirFile = new File(repositoryPath);
if (!dirFile.exists()) {
dirFile.mkdirs();
}
try {
String suffix = file.getOriginalFilename().substring(
file.getOriginalFilename().lastIndexOf(".") + 1);
String fileNameNew = sdf.format(new Date()) + "." + suffix;
File f = new File(dirFile.getAbsoluteFile() + "/" + fileNameNew);
file.transferTo(f);
f.createNewFile();
fileName =saveUrl+ fileNameNew;
} catch (Exception e) {
throw e;
}
2) 邀请码生成
public @ResponseBody
ModelAndView codeAddList(@RequestParam("name")String name,@RequestParam("num")Integer num){
ModelAndView model = new ModelAndView();
List
for (int i = 0; i < num;i++) {
String str;
Usercode c=new Usercode();
str = Randomnum.toFixdLengthString(name, 15);
if(!list.contains(str)){
c.setCode(str);
usercodeserver.codeinser(str);
list.add(c);
}
}
model.setViewName("/admin/invitationAddList");
return model;
3.2 平台界面实现
平台采用简单、直观的布局,如图3
4 总结
随着Internet的发展,网站的作用越来越重要,被称之为继广播、报纸、杂志、电视后的第五种媒体——数字媒体,基于SSM架构博客平臺设计与实现拥有众多优势,提供一个大家交流的平台。
参考文献:
[1] Spring Framework文档[EB/OL].http://docs.spring.io.
[2] Cay S·Horstmann,Gary Cornell. JAVA核心技术[M].北京:机械工业出版社,2008.
[3] Bruce Eckel. Java编程思想[M].北京:机械工业出版社,2007.
[4] 威尔德, 斯尼德.Spring Framework 2入门经典[M].赵利通,译.北京:清华大学出版社, 2009.
[5] 张宇, 王映辉, 张翔南.基于Spring的MVC框架设计与实现[J].计算机工程,2010(4).
[6] 庄少炖.基于Spring的轻量级Web框架研究与实现[D].成都:电子科技大学,2009.
[7] 徐雯,高建华.基于Spring MVC及MyBatis的Web应用框架研究[J].微型电脑应用,2012(7).