ssm從新開發計科院新聞網站

網頁的展現以及新聞後臺管理java

SSM概述

SSM框架,即Spring + Spring MVC + MyBatis的縮寫web

1.Spring簡介

Spring是一個開源框架,Spring是於2003年興起的一個輕量級的Java開發框架,由Rod Johnson在其著做Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是爲了解決企業應用開發的複雜性而建立的。Spring使用基本的JavaBean來完成之前只可能由EJB完成的事情。然而,Spring的用途不只限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用均可以從Spring中受益。 簡單來講,Spring是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的容器框架。spring

2.Spring MVC簡介

Spring MVC屬於Spring Framework的後續產品,已經融合在Spring Web Flow裏面,它原生支持的Spring特性,讓開發變得很是簡單規範。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定製。sql

3.MyBatis簡介

MyBatis本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,而且更名爲MyBatis 。MyBatis是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了幾乎全部的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis使用簡單的XML或註解用於配置和原始映射,將接口和Java的POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。能夠這麼理解,MyBatis是一個用來幫你管理數據增刪改查的框架。數據庫

將jar包複製粘貼到 WEB-INF 的 lib 目錄下apache

 

package mySpringMVC;

import javaBean.Employee;
import javaBean.News;
import myConnection.DBConn;
import myConnection.Modify;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.List;

@Controller
public class MyController {

    //登陸驗證
    @RequestMapping("/login")
    public ModelAndView checkLogin(HttpServletRequest request){
        HttpSession session =  request.getSession();
        Employee employee = new Employee();
        employee.setName(request.getParameter("name"));
        employee.setPassword(request.getParameter("password"));
        Boolean isTrue = DBConn.check(employee);
        session.setAttribute("isTrue",isTrue);
        session.setAttribute("userName",request.getParameter("name"));
        if (isTrue)
            return setIndex();
        else
            return new ModelAndView("login");
    }

    //註銷
    @RequestMapping("/loginOut")
    public ModelAndView loginOut(HttpServletRequest request){
        HttpSession session = request.getSession();
        session.setAttribute("isTrue",false);
        return setIndex();
    }

    //點擊單一新聞的請求響應
    @RequestMapping("/info")
    public ModelAndView dispatcherInfo(@RequestParam("type") String type,
                                       @RequestParam("id") String id){
        News news = null;
        if ("imagenews".equals(type)){
            news =  DBConn.getNewsById(type,Integer.parseInt(id));
        }
        else if ("academiccommunication".equals(type)){
            news =  DBConn.getNewsById(type,Integer.parseInt(id));
        }
        else if ("couriernews".equals(type)){
            news =  DBConn.getNewsById(type,Integer.parseInt(id));
        }
        else if ("dynamicofparty".equals(type)){
            news =  DBConn.getNewsById(type,Integer.parseInt(id));
        }
        else if ("notifydynamic".equals(type)){
            news =  DBConn.getNewsById(type,Integer.parseInt(id));
        }
        else if ("projectlist".equals(type)){
            news =  DBConn.getNewsById(type,Integer.parseInt(id));
        }
        return getModel(news);
    }

    //設置網站的訪問路徑和所有新聞的顯示,以及返回按鈕訪問新聞主頁
    @RequestMapping(value = {"/index","/back"})
    public ModelAndView setIndex(){
        ModelAndView modelAndView = new ModelAndView("index");
        modelAndView.addObject("imagenewsList",DBConn.getNews("imagenews"));
        modelAndView.addObject("academicList",DBConn.getNews("academiccommunication"));
        modelAndView.addObject("couriernewsList",DBConn.getNews("couriernews"));
        modelAndView.addObject("dynamicofpartyList",DBConn.getNews("dynamicofparty"));
        modelAndView.addObject("notifydynamicList",DBConn.getNews("notifydynamic"));
        modelAndView.addObject("projectList",DBConn.getNews("projectlist"));
        return modelAndView;
    }

    //顯示該類型的全部新聞
    @RequestMapping("/newsPublish")
    public ModelAndView getTypeNews(@RequestParam("type") String databaseName){
        ModelAndView modelAndView = new ModelAndView("newsPublish");
        List<News> list = DBConn.getAllNews(databaseName);
        modelAndView.addObject("list",list);
        modelAndView.addObject("name",databaseName);
        return modelAndView;
    }


    //設置重定向的視圖和數據
    public ModelAndView getModel(News news){
        ModelAndView modelAndView = new ModelAndView("info");
        modelAndView.addObject("oneNews",news);
        return modelAndView;
    }

    //新聞的修改
    @RequestMapping("/upData")
    public ModelAndView upData(@RequestParam("type") String databaseName, @RequestParam("id") int id){
        ModelAndView modelAndView = new ModelAndView("addNews");
        //數據庫獲取待修改的新聞信息
        News news =  DBConn.getNewsById(databaseName,id);
        //將數據發送至新聞編輯頁面進行填充
        modelAndView.addObject("updata",news);
        modelAndView.addObject("name",databaseName);
        //設置修改操做的標識
        Modify.modify = true;
        //設置修改的新聞id
        Modify.modifyId = id;
        return modelAndView;
    }

    //添加新聞
    @RequestMapping("AddNews")
    public ModelAndView addNews(@RequestParam("title") String title, @RequestParam("type") String type,
                                @RequestParam("content") String content){

        News news = new News();
        news.setTitle(title);
        news.setContent(content);
        news.setTime(new Date());

        if ("圖片新聞".equals(type))
            type = "imagenews";
        else if ("學術交流".equals(type))
            type = "academiccommunication";
        else if ("新聞速遞".equals(type))
            type = "couriernews";
        else if ("黨建動態".equals(type))
            type = "dynamicofparty";
        else if ("通知公告".equals(type))
            type = "notifydynamic";
        else if ("專題列表".equals(type))
            type = "projectlist";
        else
            type  = "imagenews";

        if (!Modify.modify){
            //向數據庫寫入數據
            DBConn.insertNews(news,type);
        }
        else{
            news.setId(Modify.modifyId);
            DBConn.upDataNewsById(news,type);
            //重置Modify爲默認狀態
            Modify.modify = false;
            Modify.modifyId = -1;
        }
        return getTypeNews(type);
    }

    //添加新聞按鈕事件
    @RequestMapping("addNews")
    public String add(){
        return "addNews";
    }

    //刪除新聞
    @RequestMapping("/delete")
    public ModelAndView deleteNews(@RequestParam("type") String type, @RequestParam("id") int id){
        DBConn.deleteNews(type,id);
        return getTypeNews(type);
    }
}

MyController
package myConnection;

import javaBean.Database;
import javaBean.DatabaseName;
import javaBean.Employee;
import javaBean.News;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.*;

public final class DBConn {
    //鏈接數據庫

    public  static SqlSession getSqlSession() {
        String resource = "myXML/mybatis-config.xml";
        InputStream inputStream = null;
        SqlSession session = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            session = sqlSessionFactory.openSession();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return session;
    }

    //校驗用戶信息
    public static Boolean check(Employee emp){
        SqlSession sqlSession = getSqlSession();
        try {
            //selectOne的第一個參數爲Mapper.xml的mapper的namespace+id
            //參數二爲映射的須要傳入的參數
            Employee employee = sqlSession.selectOne(
                    "MyMapper.selectEmployee_name", emp.getName());
            if (employee!=null && employee.getPassword().equals(emp.getPassword()))
                return true;
            else
                return false;
        } finally {
            free(sqlSession);
        }
    }


    //經過新聞表名獲取該數據庫的最新新聞
    public static List<News> getNews(String databaseName){
        int num = 1;
        SqlSession sqlSession = getSqlSession();
        //存在一個問題,直接傳入String類型的參數時,純mybatis沒法獲取參數,因此封裝成一個Javabean
        DatabaseName name = new DatabaseName();
        name.setDatabaseName(databaseName);
        List<News> list = sqlSession.selectList("MyMapper.selectByDatabaseName",name);
        //只在首頁界面顯示最新的8條新聞
        Collections.reverse(list);
        Iterator<News> iterator = list.iterator();
        List<News> temp = new ArrayList<>();
        while (iterator.hasNext() && num<9){
                temp.add(iterator.next());
                num++;
        }
        free(sqlSession);
        return temp;
    }

    //經過新聞表名獲取該數據庫的所有新聞
    public static List<News> getAllNews(String databaseName){
        SqlSession sqlSession = getSqlSession();
        //存在一個問題,直接傳入String類型的參數時,純mybatis沒法獲取參數,因此封裝成一個Javabean
        DatabaseName name = new DatabaseName();
        name.setDatabaseName(databaseName);
        List<News> list = sqlSession.selectList("MyMapper.selectByDatabaseName",name);
        free(sqlSession);
        return list;
    }



    //經過id獲取某一類別的某一條新聞
    public static News getNewsById(String databaseName, int id){
        //設置數據庫名和新聞id
        Database database = new Database();
        database.setDatabaseName(databaseName);
        database.setId(id);

        SqlSession sqlSession = getSqlSession();
        News news = sqlSession.selectOne("MyMapper.selectById",database);
        free(sqlSession);
        return news;
    }


    //釋放Sqlsession
    public static void free(SqlSession sqlSession){
        sqlSession.close();
    }

    //向數據庫添加新聞
    public static void insertNews(News news, String type) {
        SqlSession sqlSession = getSqlSession();
        news.setDatabaseName(type);
        System.out.println(news);
        int result = sqlSession.insert("MyMapper.insertNews",news);
        //提交事務
        sqlSession.commit();
        free(sqlSession);
    }
    //修改新聞信息
    public static void upDataNewsById(News news, String type) {
//        SqlSession sqlSession = getSqlSession();
//        news.setDatabaseName(type);
//        System.out.println(news);
//        int res = sqlSession.update("MyMapper.updateNews",news);
//        sqlSession.commit();
//        free(sqlSession);
        deleteNews(type,news.getId());
        insertNews(news,type);
    }

    //刪除新聞
    public static void deleteNews(String databaseName,int id) {
        SqlSession sqlSession = getSqlSession();
        Database database = new Database();
        database.setDatabaseName(databaseName);
        database.setId(id);
        int result = sqlSession.delete("MyMapper.deleteNews",database);
        sqlSession.commit();
        free(sqlSession);
    }
}

數據庫操做
相關文章
相關標籤/搜索