王先清
摘要:隨著互聯(lián)網(wǎng)時代的不斷發(fā)展,人們溝通的工具除了即時通信工具外,各大論壇、博客技術(shù)也逐漸發(fā)展起來,實(shí)現(xiàn)多用戶之間的交互,不同用戶可以彼此訪問對方的博客、評論、留言等。博客成為另一個具有影響力的自由媒體。博客網(wǎng)站是當(dāng)今網(wǎng)絡(luò)的熱點(diǎn),個人博客技術(shù)的出現(xiàn)使得每個人可以零成本、零維護(hù)地創(chuàng)建自己的網(wǎng)絡(luò)媒體,Blog站點(diǎn)所形成的網(wǎng)狀結(jié)構(gòu)促成了不同于以往社區(qū)的Blog文化,Blog技術(shù)締造了“博客”文化。該平臺基于Spring MVC+Mybatis+Spring框架進(jìn)行項(xiàng)目搭建,采用JavaConfig+Maven及Mybatis實(shí)現(xiàn)一套高效,簡潔和實(shí)用的博客系統(tǒng)
關(guān)鍵詞:JavaConfg;SpringMvc;Spring;Mybatis;博客
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)19-0107-03
如果說博客網(wǎng)站是一個舞臺,那么所有的博客都是其中的舞者,把自己有價值的真實(shí)的一面展示在網(wǎng)絡(luò)世界中,相互交流溝通?;ヂ?lián)時代,博客現(xiàn)已成為大家交流的工具之一,在生活中每個技術(shù)人員都喜歡在相關(guān)的論壇發(fā)表帖子或評論,來表達(dá)技術(shù)上的一些創(chuàng)新思想與方法,但閱讀別人的技術(shù)與方法時是零散雜亂的。博客的出現(xiàn),讓技術(shù)人員在平時可以隨時把想法和每天技術(shù)研究上的一些創(chuàng)新思想與方法整理歸納到自己的博客上,讓每次閱讀時無形又能產(chǎn)生新的思維。雖然一些技術(shù)方法與思維方式暫時深度不夠,但在大量積累的過程中,自己會對某個小小的問題有了更多的思考,再整理成博客文章時會有一種收獲感,一種思想得以釋放、思考得以延伸的成就感。生活中督促自己努力,把一時的想法變成現(xiàn)實(shí),博客成就自己的每一天留下了一道淺淺的思考和劃痕?;赟SM架構(gòu)博客平臺打造一套高效,簡潔和實(shí)用的博客平臺采用基于Spring MVC+Mybatis+Spring框架進(jìn)行項(xiàng)目搭建,采用JavaConfig+Maven及Mybatis技術(shù)實(shí)現(xiàn)。
1 平臺需求分析
博客平臺是一個多用戶、多界面的系統(tǒng),主要包括以下三個大模塊組成,平臺總體結(jié)構(gòu)如圖1所示。
1.1 公共、用戶模塊
本模塊分為4個小模塊:文章模塊、圖片模塊、消息模塊、設(shè)置模塊
1.2 后臺管理模塊
本模塊分為9個小模塊組成:登錄及注銷模塊、網(wǎng)站統(tǒng)計(jì)模塊、網(wǎng)站設(shè)置模塊、邀請碼模塊、公告管理、通知管理、文章管理、會員管理、留言板管理。
2 平臺設(shè)計(jì)
按照需求功能要求,將系統(tǒng)分解為多個子系統(tǒng),根據(jù)每個子系統(tǒng)的功能不同,分別完成需求分析中的不同要求。
2.1 數(shù)據(jù)庫功能分配設(shè)計(jì)
2.2 相關(guān)接口邏輯
架構(gòu)實(shí)現(xiàn)原理如圖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 平臺實(shí)現(xiàn)
3.1 核心代碼段
1) 發(fā)布文章
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 平臺界面實(shí)現(xiàn)
平臺采用簡單、直觀的布局,如圖3
4 總結(jié)
隨著Internet的發(fā)展,網(wǎng)站的作用越來越重要,被稱之為繼廣播、報紙、雜志、電視后的第五種媒體——數(shù)字媒體,基于SSM架構(gòu)博客平臺設(shè)計(jì)與實(shí)現(xiàn)擁有眾多優(yōu)勢,提供一個大家交流的平臺。
參考文獻(xiàn):
[1] Spring Framework文檔[EB/OL].http://docs.spring.io.
[2] Cay S·Horstmann,Gary Cornell. JAVA核心技術(shù)[M].北京:機(jī)械工業(yè)出版社,2008.
[3] Bruce Eckel. Java編程思想[M].北京:機(jī)械工業(yè)出版社,2007.
[4] 威爾德, 斯尼德.Spring Framework 2入門經(jīng)典[M].趙利通,譯.北京:清華大學(xué)出版社, 2009.
[5] 張宇, 王映輝, 張翔南.基于Spring的MVC框架設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2010(4).
[6] 莊少燉.基于Spring的輕量級Web框架研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2009.
[7] 徐雯,高建華.基于Spring MVC及MyBatis的Web應(yīng)用框架研究[J].微型電腦應(yīng)用,2012(7).