您的位置:首页 > 编程语言 > Java开发

ssm(springmvc4+spring4+mybatis3)整合实战-个人博客系统-util介绍与开发首页

2017-06-17 23:30 621 查看
ssm(springmvc4+spring4+mybatis3)整合实战-个人博客系统-util介绍与开发首页
    下面把util工具类也分享出来吧,util弄好之后,就可以启动项目到tomcat7试试,如果没问题,就说明ssm框架的整合已经成功一大半了。  

    包package com.steadyjack.util,建立下面各个工具类用于后期各个组件使用。

    CryptographyUtil.java加密解密工具类:

package com.steadyjack.util;

import org.apache.shiro.crypto.hash.Md5Hash;

/**
* title:CryptographyUtil.java
* description:加密工具(主要是shiro的md5)
* time:2017年1月16日 下午10:55:01
* author:debug-steadyjack
*/
public class CryptographyUtil {

/**
* title:CryptographyUtil.java
* description:Md5加密
* time:2017年1月16日 下午10:55:20
* author:debug-steadyjack
* @param str 密码
* @param salt 盐
* @return
*/
public static String md5(String str,String salt){
return new Md5Hash(str,salt).toString();
}

public static void main(String[] args) {
String password="linsen";

System.out.println("Md5加密:"+CryptographyUtil.md5(password, "debug"));
}
}


    DateUtil.java日期工具类:
package com.steadyjack.util;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
* title:DateUtil.java
* description:日期处理工具类
* time:2017年1月16日 下午10:38:01
* author:debug-steadyjack
*/
public class DateUtil {

/**
* title:DateUtil.java
* description:日期对象转字符串
* time:2017年1月16日 下午10:40:49
* author:debug-steadyjack
* @param date
* @param format
* @return String
*/
public static String formatDate(Date date,String format){
String result=null;
try {
SimpleDateFormat sdf=new SimpleDateFormat(format);
if(date!=null){
result=sdf.format(date);
}
} catch (Exception e) {
System.out.println("日期转字符串发生异常: "+e.getMessage());
}
return result;
}

/**
* title:DateUtil.java
* description:字符串转日期对象
* time:2017年1月16日 下午10:43:14
* author:debug-steadyjack
* @param str
* @param format
* @throws Exception
*/
public static Date formatString(String str,String format){
Date date=null;
try {
if(StringUtil.isNotEmpty(str)){
SimpleDateFormat sdf=new SimpleDateFormat(format);
date=sdf.parse(str);
}
} catch (Exception e) {
System.out.println("字符串转日期出错: "+e.getMessage());
}
return date;
}

/**
* title:DateUtil.java
* description: 获取当前年月日时分秒组成的串:可用于命名图片、文件
* time:2017年1月16日 下午10:48:48
* author:debug-steadyjack
* @return String
* @throws Exception
*/
public static String getCurrentDateStr()throws Exception{
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");
return sdf.format(date);
}

}


     PageUtil.java分页工具类:
package com.steadyjack.util;

/**
* title:PageUtil.java
* description:分页工具类
* time:2017年1月16日 下午10:53:47
* author:debug-steadyjack
*/
public class PageUtil {

/**
* 同步生成分页代码 (参考网上的)
* @param targetUrl 目标地址
* @param totalNum 总记录数
* @param currentPage 当前页
* @param pageSize 每页大小
* @return
*/
public static String genPagination(String targetUrl,long totalNum,int currentPage,int pageSize,String param){
long totalPage=totalNum%pageSize==0?totalNum/pageSize:totalNum/pageSize+1;
if(totalPage==0){
return "未查询到数据";
}else{
StringBuffer pageCode=new StringBuffer();
pageCode.append("<li><a href='"+targetUrl+"?page=1&"+param+"'>首页</a></li>");
if(currentPage>1){
pageCode.append("<li><a href='"+targetUrl+"?page="+(currentPage-1)+"&"+param+"'>上一页</a></li>");
}else{
pageCode.append("<li class='disabled'><a href='#'>上一页</a></li>");
}
for(int i=currentPage-2;i<=currentPage+2;i++){
if(i<1||i>totalPage){
continue;
}
if(i==currentPage){
pageCode.append("<li class='active'><a href='"+targetUrl+"?page="+i+"&"+param+"'>"+i+"</a></li>");
}else{
pageCode.append("<li><a href='"+targetUrl+"?page="+i+"&"+param+"'>"+i+"</a></li>");
}
}
if(currentPage<totalPage){
pageCode.append("<li><a href='"+targetUrl+"?page="+(currentPage+1)+"&"+param+"'>下一页</a></li>");
}else{
pageCode.append("<li class='disabled'><a href='#'>下一页</a></li>");
}
pageCode.append("<li><a href='"+targetUrl+"?page="+totalPage+"&"+param+"'>尾页</a></li>");
return pageCode.toString();
}
}
}


    ResponseUtil.java响应工具类:
package com.steadyjack.util;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

/**
* title:ResponseUtil.java
* description: 将数据对象Object写回响应流(可用于js异步调用)
* time:2017年1月16日 下午10:52:43
* author:debug-steadyjack
*/
public class ResponseUtil {

/**
* title:ResponseUtil.java
* description: 将数据对象Object写回响应流
* time:2017年1月16日 下午10:53:23
* author:debug-steadyjack
* @param response
* @param o
* @throws Exception
*/
public static void write(HttpServletResponse response,Object o)throws Exception{
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
out.println(o.toString());
out.flush();
out.close();
}
}


    StringUtil.java字符串工具类:
package com.steadyjack.util;

import java.util.ArrayList;
import java.util.List;

/**
* title:StringUtil.java
* description:字符串简单处理工具类
* time:2017年1月16日 下午10:44:02
* author:debug-steadyjack
*/
public class StringUtil {

/**
* title:StringUtil.java
* description:判断是否是空
* time:2017年1月16日 下午10:44:21
* author:debug-steadyjack
* @param str
* @return boolean
*/
public static boolean isEmpty(String str){
if(str==null || "".equals(str.trim())){
return true;
}else{
return false;
}
}

/**
* title:StringUtil.java
* description:判断是否不是空
* time:2017年1月16日 下午10:44:44
* author:debug-steadyjack
* @param str
* @return boolean
*/
public static boolean isNotEmpty(String str){
if((str!=null)&&!"".equals(str.trim())){
return true;
}else{
return false;
}
}

/**
* title:StringUtil.java
* description: 格式化模糊查询
* time:2017年1月16日 下午10:45:09
* author:debug-steadyjack
* @param str
* @return String
*/
public static String formatLike(String str){
if(isNotEmpty(str)){
return "%"+str+"%";
}else{
return null;
}
}

/**
* title:StringUtil.java
* description:过滤掉集合里的空格
* time:2017年1月16日 下午10:45:34
* author:debug-steadyjack
* @param list
* @return List<String>
*/
public static List<String> filterWhite(List<String> list){
List<String> resultList=new ArrayList<String>();
for(String str:list){
if(isNotEmpty(str)){
resultList.add(str);
}
}
return resultList;
}

}


    WebFileOperationUtil.java web环境下对于一些文件如百度编辑器上传的图片、独立上传的文件进行处理:
package com.steadyjack.util;

import javax.servlet.http.HttpServletRequest;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class WebFileOperationUtil {

/**
* title:WebFileOperationUtil.java
* description:将百度编辑器的内容的图片移动到指定的位置,并将新的位置替换内容中对于的旧位置
* time:2017年2月7日 下午7:17:35
* author:debug-steadyjack
* @param request
* @param content
* @return
*/
public static String copyImageInUeditor(HttpServletRequest request,String content){
if (StringUtil.isNotEmpty(content)) {
Document doc=Jsoup.parse(content);

Elements imageList=doc.select("img");
if (imageList!=null && imageList.size()>0) {
for(int i=0;i<imageList.size();i++){
Element image=imageList.get(i);
String oldImage=image.toString();
System.out.println(oldImage);

String charIndex="/temporary";
int index=oldImage.indexOf(charIndex);
if (index>0) {
String srcImage=oldImage.substring(index);
String secIndex="\"";
String realImagePos=srcImage.substring(0,srcImage.indexOf(secIndex));

String folder="ueditor";
String newImagePos=WebFileUtil.copyFileForUeditor(request, realImagePos, folder);
content = content.replace(realImagePos, newImagePos);
}
}
}
}

return content;
}

/**
* title:WebFileOperationUtil.java
* description:删除百度编辑器内容的图片
* time:2017年2月7日 下午9:01:23
* author:debug-steadyjack
* @param request
* @param content
* @throws Exception
*/
public static void deleteImagesInUeditor(HttpServletRequest request,String content) throws Exception{
if (StringUtil.isNotEmpty(content)) {
Document doc=Jsoup.parse(content);

Elements imageList=doc.select("img");
if (imageList!=null && imageList.size()>0) {
for(int i=0;i<imageList.size();i++){
Element image=imageList.get(i);
String oldImage=image.toString();

//图片src必定以 " 开始,以 " 结束
String charIndex="\"";
int index=oldImage.indexOf(charIndex);
if (index>0) {
String srcImage=oldImage.substring(index+1);
String delImagePos=srcImage.substring(0,srcImage.indexOf(charIndex));
System.out.println(delImagePos);

WebFileUtil.deleteFilePath(WebFileUtil.getSystemRootPath(request)+delImagePos);
}
}
}
}
}

public static void main(String[] args) {
String image="img src=\"/temporary/2017-02-06/image/1486394487364095169.jpg\"";
String str="/temporary/2017-02-06/image/1486394487364095169.jpg"; //51

String charIndex="/temporary";
int index=image.indexOf(charIndex);
System.out.println(index);
String newStr=image.substring(index, str.length()+index);
System.out.println(newStr);
}

}


    WebFileUtil.java文件操作工具类:
package com.steadyjack.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.util.FileCopyUtils;

/**
* title:WebFileUtil.java
* description:文件操作(包括网络上的文件)工具类
* time:2017年1月22日
* 下午9:41:57
* author:debug-steadyjack
*/
public class WebFileUtil {

/**
* title:WebFileUtil.java
* description:获取web运行时项目的根路径
* time:2017年1月22日 下午10:00:08
* author:debug-steadyjack
* @param request
* @return
*/
public static String getSystemRootPath(HttpServletRequest request){
String rootPath=request.getServletContext().getRealPath("/");
//request.getContextPath();
return rootPath;
}

/**
* title:WebFileUtil.java
* description:下载文件(包括网络文件)
* time:2017年1月22日 下午9:59:24
* author:debug-steadyjack
* @param request
* @param response
* @param url 文件路径
* @param fileName 文件名
*/
public static void downloadFile(HttpServletRequest request,HttpServletResponse response,
String url,String fileName) {

String root = getSystemRootPath(request);

//用给定的fileName与url的后缀名拼成一新的字符串作为新的文件名
fileName = fileName + url.substring(url.lastIndexOf("."));

OutputStream os = null;
InputStream fis = null;
try {
//解决中文 文件名问题
fileName = new String(fileName.getBytes(), "iso8859-1");
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename=\""+ fileName + "\"");

os=response.getOutputStream();
if (url.startsWith("http:")) {
URL tmpURL = new URL(url);
URLConnection conn = tmpURL.openConnection();
fis = conn.getInputStream();
} else {
fis = new FileInputStream(new File(root + url));
}

byte[] b = new byte[1024];
int i = 0;

while ((i = fis.read(b)) > 0) {
os.write(b, 0, i);
}

os.flush();
} catch (Exception e) {
System.out.println("下载文件发生异常: "+e.getMessage());
} finally{
try {
os.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

/**
* title:WebFileUtil.java
* description:创建文件夹
* time:2017年2月6日 下午10:50:17
* author:debug-steadyjack
* @param dFile
*/
public static void createFold(File file) {
if (!file.exists()) file.mkdirs();
}

/**
* title:WebFileUtil.java
* description:复制百度编辑器中的图片到指定的文件夹下,并返回图片存储的实际路径
* time:2017年2月6日 下午10:58:58
* author:debug-steadyjack
* @param request
* @param srcPath
* @param floder
* @return
*/
public static String copyFileForUeditor(HttpServletRequest request,String srcPath, String folder){

String newFolder="";
String fileName="";

try {
File oldFile=new File(getSystemRootPath(request)+srcPath);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

newFolder="/files/"+folder+"/"+sdf.format(new Date())+"/";
String newFilePath=getSystemRootPath(request)+newFolder;
createFold(new File(newFilePath));

fileName=oldFile.getName();
File newFile=new File(newFilePath+fileName);
FileCopyUtils.copy(oldFile, newFile);
//FileUtils.copyFile(oldFile, saveFile);
} catch (Exception e) {
e.printStackTrace();
}

return newFolder+fileName;
}

/**
* title:WebFileUtil.java
* description:删除给定路径下的文件(包括单独的文件;文件夹)
* time:2017年2月6日 下午11:02:12
* author:debug-steadyjack
* @param path
* @return
* @throws Exception
*/
public static boolean deleteFilePath(String path) throws Exception {

try {
File file = new File(path);

// 当且仅当此抽象路径名表示的文件存在且 是一个目录时,返回 true
if(!file.isDirectory()){
file.delete();
}else if(file.isDirectory()){
String[] filelist = file.list();

for(int i = 0; i < filelist.length; i++) {
File delfile = new File(path + "/" + filelist[i]);
if (!delfile.isDirectory()) {
delfile.delete();
} else if (delfile.isDirectory()) {
deleteFilePath(path + "/" + filelist[i]);
}
}

file.delete();
}
} catch (Exception e) {
}

return true;
}

}


     就此以及介绍完util工具类的开发了。具体代码的意思我已经贴出注释了--其实都很基础啦,不懂的看一看Jdk文档就知道了!多动手,多尝试即可。
     启动项目。。。。没报错就可以了!

     下面就介绍一下前端首页的开发,先看一下效果图吧:





   然后,点击某一篇博客,查看详情:



   发表评论以及点击右边那些分类就不截图了。最后截一个关于lucene全文搜索实现的效果图:



    好了,总体上就介绍到这里吧!

    如果有相关问题:如想找我付费开发其他功能,讨论其中相关问题等等,可以来以下两群找我,我叫debug!

     Java开源技术交流:583522159     鏖战八方群:391619659
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息