个人博客系统(SSM)

简单做一个个人博客系统,以博客中的日记模块为例。后台使用easyui。

数据库:personal_blog

日记表:diary

字段:

个人博客系统(SSM)_第1张图片

创建Maven工程

pom.xml文件




    org.mybatis
    mybatis
    3.4.1



    mysql
    mysql-connector-java
    5.1.29



    org.slf4j
    slf4j-log4j12
    1.6.1


    org.slf4j
    slf4j-api
    1.6.1



    org.springframework
    spring-jdbc
    4.3.11.RELEASE



    org.springframework
    spring-aspects
    4.3.11.RELEASE


    org.springframework
    spring-context
    4.3.11.RELEASE



    org.mybatis
    mybatis-spring
    1.3.1



    org.springframework
    spring-webmvc
    4.3.11.RELEASE



    jstl
    jstl
    1.2



    com.github.pagehelper
    pagehelper
    4.2.1



    com.fasterxml.jackson.core
    jackson-databind
    2.7.4



    commons-fileupload
    commons-fileupload
    1.3.3





    ssm-blog-admin
    
    
    
        
        
        
            src/main/java
            
                **/*.xml
            
            true
        
        
            
            src/main/resources
            
            
                **/*.xml
                **/*.properties
            
        
    

实体类pojo

Diary.java

public class Diary {
    private Integer id;  //主键ID
    private Integer userId;  //用户ID
    private Date createdDate; //日记创建时间
    private String content;   //日记内容
    private String title;  //日记标题
    private int status;   //身份权限,1:有效,0:无效
    private String nickname;   //昵称
    private AdminUser adminUser;  //管理员

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    public Date getCreatedDate() {
        return createdDate;
    }

    public void setCreatedDate(Date createdDate) {
        this.createdDate = createdDate;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public AdminUser getAdminUser() {
        return adminUser;
    }

    public void setAdminUser(AdminUser adminUser) {
        this.adminUser = adminUser;
    }
}

DAO层

DiaryDAO.java

public interface DiaryDAO {
    //插入日记方法
    void addDiary(Diary diary);
    //查询日记列表
    List getDiaryList(Diary diary);
    //根据id查询日记
    Diary getDiaryById(int id);
    //更新日记
    void updateDiary(Diary diary);
    //更新用户权限
    void updateDiaryStatus(Diary diary);
}

DiaryMapper.xml






    
    
        INSERT INTO diary(USER_ID,CREATED_DATE,CONTENT,TITLE,STATUS)
        VALUES (#{userId},now(),#{content},#{title},#{status})
    

    
    
        
        
        
        
        
        
        
    
    
    

    
    
    

    
    
        update diary set TITLE=#{title},CONTENT=#{content},STATUS=#{status}
        where ID=#{id}
    

    
    
    
        update diary set STATUS=0
        where ID=#{id}
    


service层

DiaryService.java

public interface DiaryService {
    //插入日记
    void addDiary(Diary diary);

    //查询日记列表并分页
    PageInfo getDiaryList(Diary diary,int pageNum,int pageSize);

    //根据id查询,用于回显
    Diary getDiaryById(Integer id);

    //更新日记
    void updateDiary(Diary diary);
    //更改权限
    void updateDiaryStatus(int id);
}

service层  DiarySrviceImpl.java

//加service注解
@Service
public class DiaryServiceImpl implements DiaryService {
//    当Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)的Bean,
// 并自动注入到相应的地方去。
    @Autowired
    private DiaryDAO diaryDAO;

    //插入日记
    @Override
    public void addDiary(Diary diary) {
        diaryDAO.addDiary(diary);
    }
    //查询日记列表并分页
    @Override
    public PageInfo getDiaryList(Diary diary, int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List diaryList = diaryDAO.getDiaryList(diary);
        PageInfo pageInfo = new PageInfo<>(diaryList);
        return pageInfo;
    }
    //根据id查询日记
    @Override
    public Diary getDiaryById(Integer id) {
        return diaryDAO.getDiaryById(id);
    }
    //更新日记
    @Override
    public void updateDiary(Diary diary) {
        diaryDAO.updateDiary(diary);
    }
    //更新身份权限
    @Override
    public void updateDiaryStatus(int id) {
        Diary diary = diaryDAO.getDiaryById(id);

        diaryDAO.updateDiaryStatus(diary);
    }
}

controller层

 DiaryController.java

//加controller注解,处理由DispatcherServlet分发的请求
@Controller
//定义url
@RequestMapping("/diary.html")
public class DiaryController {
    @Autowired
    private DiaryService diaryService;

    @RequestMapping(params = "act=edit")
    @ResponseBody   //这个注解表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用。
    //添加和修改,一个方法实现两个功能
    public Map edit(Diary diary){
        if (diary.getId() == null) {
            //从session中获取user的信息,后面写完登录再改
            diary.setUserId(2);
            diaryService.addDiary(diary);
        }else{
            //修改
            diaryService.updateDiary(diary);
        }
        return JsonUtils.getSuccessMessage("编辑成功",null);
    }

    //查询日记列表并分页    
    @RequestMapping(params = "act=list")
    @ResponseBody
    public Map list(Diary diary, int page, int rows){
        PageInfo pageInfo = diaryService.getDiaryList(diary, page, rows);
        return JsonUtils.getDatagridPagerResult(pageInfo.getTotal(),pageInfo.getList());
    }

    //根据id查询所有,用于点击修改后回显
    @RequestMapping(params = "act=get")
    public ModelAndView getDiary(Integer id){
        Diary diary = null;
        if (id!=null){
            diary = diaryService.getDiaryById(id);
        }
        return new ModelAndView("diary_edit","diary",diary);
    }

    //文件上传
    @Value("${DIARY_IMAGE_DIR}")
    private String DIARY_IMAGE_DIR;
    @Value("${DIARY_IMAGE_URL}")
    private String DIARY_IMAGE_URL;

    @RequestMapping(params = "act=upload")
    @ResponseBody
    public String upload(MultipartFile file) {
        return JsonUtils.fileUpload(file,DIARY_IMAGE_DIR,DIARY_IMAGE_URL);
    }

    //删除(修改权限)
    @RequestMapping(params = "act=delete")
    @ResponseBody
    public Map delete(int id){
        Diary diary = diaryService.getDiaryById(id);
        if (diary.getStatus()!=0){
            diaryService.updateDiaryStatus(id);
        }
        return JsonUtils.getSuccessMessage("删除权限成功",null);
    }
}

util工具类

JsonUtils.java

public class JsonUtils {
    public static Map getSuccessMessage(String message,Object other){
        Map result = new HashMap<>();
        result.put("status", true);
        result.put("message", "添加成功");
        result.put("other",other);
        return result;
    }

    public static Map getErrorMessage(String message,Object other){
        Map result = new HashMap<>();
        result.put("status", false);
        result.put("message", "添加成功");
        result.put("other",other);
        return result;
    }

    public static Map getDatagridPagerResult(long total, List list){
        Map result = new HashMap<>();
        result.put("total",total);  //总条数
        result.put("rows",list);  //返回的list数据
        return result;
    }

    public static String fileUpload(MultipartFile file,String DIR,String URL){
        String oldFileName = file.getOriginalFilename();
        String extName = oldFileName.substring(oldFileName.lastIndexOf("."));
        String newFileName = System.currentTimeMillis()+extName;
        try {
            FileUtils.copyInputStreamToFile(file.getInputStream(),new File(DIR,newFileName));
            return "{\"error\":0,\"url\":\"" + URL + newFileName + "\"}";
        } catch (IOException e) {
            e.printStackTrace();
            return "{\"error\":1}";
        }
    }
}

resource

db.properties:配置mysql

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/personal_blog?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

log4j.properties:输出日志信息

log4j.rootLogger=DEBUG, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

#begin
#for normal test,delete when online
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG

log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

resourse.properties:配置文件上传路径和url地址

DIARY_IMAGE_DIR=E:/upload/diary/

DIARY_IMAGE_URL=http://localhost:8080/upload/diary/

spring-config.xml





    
    
    
    




    
    




    
    
    
    
        
            
                
                    
                        dialect=mysql
                        reasonable=true
                    
                
            
        
    



    



    



    
        
        
        
        
        
        
    



    
    


WEB-INF

springMVC-servlet.xml





    



    
    





    
    
    
    
        
            
        
    



    
    
    


web.xml



    contextConfigLocation
    classpath:spring-config.xml



    org.springframework.web.context.ContextLoaderListener


    CharacterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
        encoding
        UTF-8
    
    
        forceEncoding
        true
    


    CharacterEncodingFilter
    /*



    springMVC
    org.springframework.web.servlet.DispatcherServlet


    springMVC
    *.html


    /blog/list.html


diary_list.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--panel面板可以设置整体的高度--%>
ID: 标题: 昵称: 搜索
新增 修改 删除权限

diary_edit.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--panel面板可以设置整体的高度--%>
ID: 标题: 昵称: 搜索
新增 修改 删除权限








你可能感兴趣的:(SSM)