網頁的展現以及新聞後臺管理java
SSM框架,即Spring + Spring MVC + MyBatis的縮寫web
Spring是一個開源框架,Spring是於2003年興起的一個輕量級的Java開發框架,由Rod Johnson在其著做Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是爲了解決企業應用開發的複雜性而建立的。Spring使用基本的JavaBean來完成之前只可能由EJB完成的事情。然而,Spring的用途不只限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用均可以從Spring中受益。 簡單來講,Spring是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的容器框架。spring
Spring MVC屬於Spring Framework的後續產品,已經融合在Spring Web Flow裏面,它原生支持的Spring特性,讓開發變得很是簡單規範。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定製。sql
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); } } 數據庫操做