ssm重新开发计科院新闻网站

news/2024/5/20 11:31:56/文章来源:https://blog.csdn.net/weixin_30654419/article/details/95723710

SSM(SSM 框架集)

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。

  Spring

  Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
  Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。

  SpringMVC

  SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。

  mybatis

  mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
Spring
  Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
  Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
  SpringMVC
  SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
  mybatis
  mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。Spring
  Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
  Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
  SpringMVC
  SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
  mybatis
  mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

页面

 

代码

  1 package mySpringMVC;
  2 
  3 import javaBean.Employee;
  4 import javaBean.News;
  5 import myConnection.DBConn;
  6 import myConnection.Modify;
  7 import org.springframework.stereotype.Controller;
  8 import org.springframework.web.bind.annotation.RequestMapping;
  9 import org.springframework.web.bind.annotation.RequestParam;
 10 import org.springframework.web.servlet.ModelAndView;
 11 
 12 import javax.servlet.http.HttpServletRequest;
 13 import javax.servlet.http.HttpServletResponse;
 14 import javax.servlet.http.HttpSession;
 15 import java.util.Date;
 16 import java.util.List;
 17 
 18 @Controller
 19 public class MyController {
 20 
 21 //登录验证
 22 @RequestMapping("/login")
 23 public ModelAndView checkLogin(HttpServletRequest request){
 24 HttpSession session = request.getSession();
 25 Employee employee = new Employee();
 26 employee.setName(request.getParameter("name"));
 27 employee.setPassword(request.getParameter("password"));
 28 Boolean isTrue = DBConn.check(employee);
 29 session.setAttribute("isTrue",isTrue);
 30 session.setAttribute("userName",request.getParameter("name"));
 31 if (isTrue)
 32 return setIndex();
 33 else
 34 return new ModelAndView("login");
 35 }
 36 
 37 //注销
 38 @RequestMapping("/loginOut")
 39 public ModelAndView loginOut(HttpServletRequest request){
 40 HttpSession session = request.getSession();
 41 session.setAttribute("isTrue",false);
 42 return setIndex();
 43 }
 44 
 45 //点击单一新闻的请求响应
 46 @RequestMapping("/info")
 47 public ModelAndView dispatcherInfo(@RequestParam("type") String type,
 48 @RequestParam("id") String id){
 49 News news = null;
 50 if ("imagenews".equals(type)){
 51 news = DBConn.getNewsById(type,Integer.parseInt(id));
 52 }
 53 else if ("academiccommunication".equals(type)){
 54 news = DBConn.getNewsById(type,Integer.parseInt(id));
 55 }
 56 else if ("couriernews".equals(type)){
 57 news = DBConn.getNewsById(type,Integer.parseInt(id));
 58 }
 59 else if ("dynamicofparty".equals(type)){
 60 news = DBConn.getNewsById(type,Integer.parseInt(id));
 61 }
 62 else if ("notifydynamic".equals(type)){
 63 news = DBConn.getNewsById(type,Integer.parseInt(id));
 64 }
 65 else if ("projectlist".equals(type)){
 66 news = DBConn.getNewsById(type,Integer.parseInt(id));
 67 }
 68 return getModel(news);
 69 }
 70 
 71 //设置网站的访问路径和全部新闻的显示,以及返回按钮访问新闻主页
 72 @RequestMapping(value = {"/index","/back"})
 73 public ModelAndView setIndex(){
 74 ModelAndView modelAndView = new ModelAndView("index");
 75 modelAndView.addObject("imagenewsList",DBConn.getNews("imagenews"));
 76 modelAndView.addObject("academicList",DBConn.getNews("academiccommunication"));
 77 modelAndView.addObject("couriernewsList",DBConn.getNews("couriernews"));
 78 modelAndView.addObject("dynamicofpartyList",DBConn.getNews("dynamicofparty"));
 79 modelAndView.addObject("notifydynamicList",DBConn.getNews("notifydynamic"));
 80 modelAndView.addObject("projectList",DBConn.getNews("projectlist"));
 81 return modelAndView;
 82 }
 83 
 84 //显示该类型的所有新闻
 85 @RequestMapping("/newsPublish")
 86 public ModelAndView getTypeNews(@RequestParam("type") String databaseName){
 87 ModelAndView modelAndView = new ModelAndView("newsPublish");
 88 List<News> list = DBConn.getAllNews(databaseName);
 89 modelAndView.addObject("list",list);
 90 modelAndView.addObject("name",databaseName);
 91 return modelAndView;
 92 }
 93 
 94 
 95 //设置重定向的视图和数据
 96 public ModelAndView getModel(News news){
 97 ModelAndView modelAndView = new ModelAndView("info");
 98 modelAndView.addObject("oneNews",news);
 99 return modelAndView;
100 }
101 
102 //新闻的修改
103 @RequestMapping("/upData")
104 public ModelAndView upData(@RequestParam("type") String databaseName, @RequestParam("id") int id){
105 ModelAndView modelAndView = new ModelAndView("addNews");
106 //数据库获取待修改的新闻信息
107 News news = DBConn.getNewsById(databaseName,id);
108 //将数据发送至新闻编辑页面进行填充
109 modelAndView.addObject("updata",news);
110 modelAndView.addObject("name",databaseName);
111 //设置修改操作的标识
112 Modify.modify = true;
113 //设置修改的新闻id
114 Modify.modifyId = id;
115 return modelAndView;
116 }
117 
118 //添加新闻
119 @RequestMapping("AddNews")
120 public ModelAndView addNews(@RequestParam("title") String title, @RequestParam("type") String type,
121 @RequestParam("content") String content){
122 
123 News news = new News();
124 news.setTitle(title);
125 news.setContent(content);
126 news.setTime(new Date());
127 
128 if ("图片新闻".equals(type))
129 type = "imagenews";
130 else if ("学术交流".equals(type))
131 type = "academiccommunication";
132 else if ("新闻速递".equals(type))
133 type = "couriernews";
134 else if ("党建动态".equals(type))
135 type = "dynamicofparty";
136 else if ("通知公告".equals(type))
137 type = "notifydynamic";
138 else if ("专题列表".equals(type))
139 type = "projectlist";
140 else
141 type = "imagenews";
142 
143 if (!Modify.modify){
144 //向数据库写入数据
145 DBConn.insertNews(news,type);
146 }
147 else{
148 news.setId(Modify.modifyId);
149 DBConn.upDataNewsById(news,type);
150 //重置Modify为默认状态
151 Modify.modify = false;
152 Modify.modifyId = -1;
153 }
154 return getTypeNews(type);
155 }
156 
157 //添加新闻按钮事件
158 @RequestMapping("addNews")
159 public String add(){
160 return "addNews";
161 }
162 
163 //删除新闻
164 @RequestMapping("/delete")
165 public ModelAndView deleteNews(@RequestParam("type") String type, @RequestParam("id") int id){
166 DBConn.deleteNews(type,id);
167 return getTypeNews(type);
168 }
169 }
View Code
  1 MyController
  2 
  3  
  4 
  5 package myConnection;
  6 
  7 import javaBean.Database;
  8 import javaBean.DatabaseName;
  9 import javaBean.Employee;
 10 import javaBean.News;
 11 import org.apache.ibatis.io.Resources;
 12 import org.apache.ibatis.session.SqlSession;
 13 import org.apache.ibatis.session.SqlSessionFactory;
 14 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 15 
 16 import java.io.IOException;
 17 import java.io.InputStream;
 18 import java.util.*;
 19 
 20 public final class DBConn {
 21 //连接数据库
 22 
 23 public static SqlSession getSqlSession() {
 24 String resource = "myXML/mybatis-config.xml";
 25 InputStream inputStream = null;
 26 SqlSession session = null;
 27 try {
 28 inputStream = Resources.getResourceAsStream(resource);
 29 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
 30 session = sqlSessionFactory.openSession();
 31 } catch (IOException e) {
 32 e.printStackTrace();
 33 }
 34 return session;
 35 }
 36 
 37 //校验用户信息
 38 public static Boolean check(Employee emp){
 39 SqlSession sqlSession = getSqlSession();
 40 try {
 41 //selectOne的第一个参数为Mapper.xml的mapper的namespace+id
 42 //参数二为映射的需要传入的参数
 43 Employee employee = sqlSession.selectOne(
 44 "MyMapper.selectEmployee_name", emp.getName());
 45 if (employee!=null && employee.getPassword().equals(emp.getPassword()))
 46 return true;
 47 else
 48 return false;
 49 } finally {
 50 free(sqlSession);
 51 }
 52 }
 53 
 54 
 55 //通过新闻表名获取该数据库的最新新闻
 56 public static List<News> getNews(String databaseName){
 57 int num = 1;
 58 SqlSession sqlSession = getSqlSession();
 59 //存在一个问题,直接传入String类型的参数时,纯mybatis无法获取参数,所以封装成一个Javabean
 60 DatabaseName name = new DatabaseName();
 61 name.setDatabaseName(databaseName);
 62 List<News> list = sqlSession.selectList("MyMapper.selectByDatabaseName",name);
 63 //只在首页界面显示最新的8条新闻
 64 Collections.reverse(list);
 65 Iterator<News> iterator = list.iterator();
 66 List<News> temp = new ArrayList<>();
 67 while (iterator.hasNext() && num<9){
 68 temp.add(iterator.next());
 69 num++;
 70 }
 71 free(sqlSession);
 72 return temp;
 73 }
 74 
 75 //通过新闻表名获取该数据库的全部新闻
 76 public static List<News> getAllNews(String databaseName){
 77 SqlSession sqlSession = getSqlSession();
 78 //存在一个问题,直接传入String类型的参数时,纯mybatis无法获取参数,所以封装成一个Javabean
 79 DatabaseName name = new DatabaseName();
 80 name.setDatabaseName(databaseName);
 81 List<News> list = sqlSession.selectList("MyMapper.selectByDatabaseName",name);
 82 free(sqlSession);
 83 return list;
 84 }
 85 
 86  
 87 
 88 //通过id获取某一类别的某一条新闻
 89 public static News getNewsById(String databaseName, int id){
 90 //设置数据库名和新闻id
 91 Database database = new Database();
 92 database.setDatabaseName(databaseName);
 93 database.setId(id);
 94 
 95 SqlSession sqlSession = getSqlSession();
 96 News news = sqlSession.selectOne("MyMapper.selectById",database);
 97 free(sqlSession);
 98 return news;
 99 }
100 
101 
102 //释放Sqlsession
103 public static void free(SqlSession sqlSession){
104 sqlSession.close();
105 }
106 
107 //向数据库添加新闻
108 public static void insertNews(News news, String type) {
109 SqlSession sqlSession = getSqlSession();
110 news.setDatabaseName(type);
111 System.out.println(news);
112 int result = sqlSession.insert("MyMapper.insertNews",news);
113 //提交事务
114 sqlSession.commit();
115 free(sqlSession);
116 }
117 //修改新闻信息
118 public static void upDataNewsById(News news, String type) {
119 // SqlSession sqlSession = getSqlSession();
120 // news.setDatabaseName(type);
121 // System.out.println(news);
122 // int res = sqlSession.update("MyMapper.updateNews",news);
123 // sqlSession.commit();
124 // free(sqlSession);
125 deleteNews(type,news.getId());
126 insertNews(news,type);
127 }
128 
129 //删除新闻
130 public static void deleteNews(String databaseName,int id) {
131 SqlSession sqlSession = getSqlSession();
132 Database database = new Database();
133 database.setDatabaseName(databaseName);
134 database.setId(id);
135 int result = sqlSession.delete("MyMapper.deleteNews",database);
136 sqlSession.commit();
137 free(sqlSession);
138 }
139 }
View Code

 

转载于:https://www.cnblogs.com/cappu-ccino/p/10890992.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_737824.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何防止博客,网站被挂马

2019独角兽企业重金招聘Python工程师标准>>> 经营网站不容易&#xff0c;网站被挂马或者被挂暗链说明网站的管理权限已落入他人之手&#xff0c;而且网站被挂马往往来给网站带来不可估量的负面影响&#xff0c;最常见的就是网站用户体验变形、网站被无故植入莫名其妙…

mkdocs与jekyll 创建静态网站

2019独角兽企业重金招聘Python工程师标准>>> mkdocs教程&#xff1a;http://www.mkdocs.org/#installation(英文) http://markdown-docs-zh.readthedocs.org/zh_CN/latest/(中文) MacDown的下载包&#xff1a;http://yunpan.cn/cdmKrfvZs2fsc &#xff08;提取码&am…

Meta Referrer标签:在SEO与互联网上的进阶

本文转载自 http://www.wdingyue.com/3766.html 通过HTTPS让网络更安全给站长带来了诸多好处,除了提升网站的安全性能&#xff0c;HTTPS 能够为未来的网络营销技术和SEO营销人员带来潜在的益处。 HTTPS的搜索结果数量一直在攀升,Dr. Pete的“MozCast数据”显示现在谷歌首页几…

源码讲解 node+mongodb 建站攻略(一期)第二节

源码讲解 nodemongodb 建站攻略&#xff08;一期&#xff09;第二节 上一节&#xff0c;我们完成了模拟数据&#xff0c;这次我们来玩儿真正的数据库&#xff0c;mongodb。 代码http://www.imlwj.com/download/nodejs/demo1.rar 首先给大家看看目录结构。 大家可以比对一下&…

favicon.ico 网站小图标标识

随便打开一个网页&#xff1a;比如 http://www.baidu.com/ 可以看到在浏览器的标签头上面显示了一个图标&#xff0c;这个图标是&#xff1a;&#xff0c;也就是我们常说的favicon.ico. 由于这篇文章主要讨论favicon.ico,以及各个浏览器对其的不同处理&#xff0c;所以还是新建…

如何让EcStore和微博同步来推广网站

EcStore是创建B2C商城的首选PHP系统&#xff0c;它功能强大、操作方便&#xff0c;安装后马上就能建立起一个自己的B2C商城&#xff0c;但建好后如何推广运营商城却不是件容易的事。 新浪微博用户数量大、传播速度快&#xff0c;互联网上拥有许多微博营销的成功案例如小米、淘宝…

网站美化:CSS3自定义修改浏览器滚动条

滚动条组件 ::-webkit-scrollbar //滚动条整体部分 ::-webkit-scrollbar-thumb //滚动条里面的小方块&#xff0c;能向上向下移动&#xff08;或往左往右移动&#xff0c;取决于是垂直滚动条还是水平滚动条&#xff09; ::-webkit-scrollbar-track //滚动条的轨道&#xff08;里…

即使是菜鸟,也能配置出一个网站

2019独角兽企业重金招聘Python工程师标准>>> 对于刚进入IT行业的你&#xff0c;是否会觉得配置出一个像样的公司网站是很大的挑战&#xff1f;如果你有相同的感受&#xff0c;那么今天读过这篇文章之后&#xff0c;你的心情将会舒畅很多&#xff0c;因为我这名技术入…

SEO优化秘诀

为什么80%的码农都做不了架构师&#xff1f;>>> 全都在摘要里面了。 www.vpincha.cc 转载于:https://my.oschina.net/boolls/blog/681206

利用云存储快速实现网站备份

背景 真正运营过网站的人都知道&#xff0c;数据对一个网站来说至关重要&#xff0c;因此&#xff0c;网站数据备份也是日常必做工作。因为误操作&#xff0c;网站被攻击等种种原因都会导致数据丢失&#xff0c;这时&#xff0c;你才会明白“有备无患”的道理。而且由于站点文件…

[记录][python]python爬虫,下载某图片网站的所有图集

随笔仅用于学习交流&#xff0c;转载时请注明出处&#xff0c;http://www.cnblogs.com/CaDevil/p/5958770.html 该随笔是记录我的第一个python程序&#xff0c;一个爬去指定图片站点的所有图集&#xff0c;现在还是一个非常简陋的单线程程序。下一步是改写成多线程&#xff0c;…

网站标题、描述、关键词怎么设置?

瞬间感觉回答这个问题真的很头痛&#xff0c;完全回答清楚这个问题要写一两千字的教程&#xff0c;而且还不一定能保证小白能完全理解了&#xff0c;因为有些东西想做到比较好的程度&#xff0c;需要实践&#xff0c;需要对一个网站甚至两三个网站的TDK改改过好几遍之后才能真正…

【我是正义的化身】一个钓鱼网站的社工+渗透之路

昨天在空间看到一个朋友发动态&#xff0c;说自己被骗了2000多&#xff0c;说说里有一个钓鱼链接&#xff0c;于是我就打开来看看。因此而开始了一段社工渗透之旅。 因为这次社的是一个骗子&#xff0c;有些地方就不打码了。钓鱼网站&#xff1a;http://br.hjiu.zhoukouwang.ne…

WordPress再曝流行插件漏洞 影响上千万网站

WordPress的一个最为流行的插件现重大安全漏洞&#xff0c;导致上千万网站面临黑客入侵的危险。 该漏洞由WordPress漏洞扫描器的开发者瑞恩迪赫斯特(Ryan Dewhurst)发现&#xff0c;该插件名为“WordPress SEO by Yoast”&#xff0c;用于网站的搜索引擎优化&#xff0c;是最流…

python正则表达式修复网站文章字体不统一问题

网站的大框架下有定义的字体&#xff0c;包括字体大小和颜色等&#xff0c;用户发布文章的时候可能是从其他网站复制过来的文本&#xff0c;复制的过程也保留了字体描述信息。当文章在页面上显示的时候&#xff0c;默认先会使用文章中定义的字体&#xff0c;如果文章中字体不存…

视频网站使用H265编码能提高视频清晰度吗?

大部分的视频直播点播的流媒体服务使用的都是H264编码&#xff0c;但是更为便捷的H265编码已经得到了发展&#xff0c;越来越多的人更加倾向于H265编码格式了。为什么呢&#xff1f;h265编码压缩率比H264提高了一倍之多&#xff0c;在使用上也比H264更节省空间。大多数的视频行…

高性能建站之前端优化篇

前言&#xff1a; 这算是对前端优化的总结吧&#xff0c;之前零零星星总结和学习&#xff0c;这次做一个完整的总结。 测试网页性能工具 ⑴Page Speed&#xff1a; 谷歌开发的工具&#xff0c;网站管理员和网络开发人员可以使用 Page Speed 来评估他们网页的性能&#xff0c;并…

网站开发的学习交流 -- 系统架构 -- 负载均衡

网站开发的学习交流 自己水平有限&#xff0c;希望大家能批判指导&#xff0c;谢谢。 文章中引用的互联网上的资料的链接放在文章最下面。 一、系统架构&#xff1a; 构建高并发高负载的大型网站一般需要注意一下几个方面&#xff1a; 1、负载均衡&#xff1a;负载均衡&#xf…

TSINGSEE青犀视频开发景区网站如何通过Go语言html生成PDF?

之前我们在某景区开发了一个行人监测系统&#xff0c;系统上线后经过我们不断的调整和优化&#xff0c;一直保持了稳定的运行&#xff0c;现在该景区需要制作一个网站&#xff0c;网站里可以查看一天中的每个时间点统计的人数&#xff0c;并生成PDF&#xff0c;供下载查看。由于…

王子墨网友的基于jQuery的个性个人网站模板

星球飞行效果&#xff08;需要等待5秒以上&#xff09; 菜单点击飞行效果 菜单内容页展开式分裂效果 菜单关闭时坠落效果 提示&#xff1a;效果在 Webkit&#xff08;如Chrome&#xff0c;遨游3&#xff0c;TT6.11 &#xff09; 内核的浏览器下效果更佳。原文转自:王子墨网友…