ssm重新开发新闻网站
一、完整项目结构
二、SSM框架整合
详细整合过程请看:https://blog.csdn.net/h2503652646/article/details/89675123
上面只是一个SSM整合的Demo,利用mybatis-generator逆向生成的方法并不完整,我们可以进行修改生成所有的方法,方便后续网站功能补充。完整的generatorConfig.xml配置如下。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 数据库驱动--> <!-- 因为使用的maven方式让MyBatis Generator生成代码,所以不需要classPathEntry标签,--> <!-- <classPathEntry location="mysql-connector-java-5.1.25-bin.jar"/> --> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库链接URL,用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/dbnews" userId="root" password="root"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成模型的包名和位置--> <javaModelGenerator targetPackage="com.hedong.pojo" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成映射文件的包名和位置--> <sqlMapGenerator targetPackage="com.hedong.mapping" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 生成DAO的包名和位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.hedong.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名 enableInsert(默认true):指定是否生成insert语句; enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get); enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句; enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update); enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete); enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句; enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询); enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性); --> <table tableName="news_tb" domainObjectName="News" enableInsert="true" enableSelectByPrimaryKey="true" enableSelectByExample="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true" enableDeleteByExample="true" enableCountByExample="true" enableUpdateByExample="true" > </table> <table tableName="login_tb" domainObjectName="User" enableInsert="true" enableSelectByPrimaryKey="true" enableSelectByExample="true" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true" enableDeleteByExample="true" enableCountByExample="true" enableUpdateByExample="true" > </table> </context> </generatorConfiguration>
三、控制类代码
SSM框架整合好以后就会发现我们不用再去管如何连接数据库,如何写sql语句了,我们要做的就是用它自动生成的各种方法连接数据库进行增删改查,然后将结果返回到前端显示就行了。
operateController.java
package com.hedong.controller; import java.io.IOException; import java.io.PrintWriter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import javax.annotation.Resource; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import com.hedong.pojo.News; import com.hedong.pojo.User; import com.hedong.service.INewsService; import com.hedong.service.IUserService; @Controller @RequestMapping("/news") public class operateController { @Resource private IUserService userService; @Resource private INewsService newsService; @RequestMapping("showNews") public String goPage(HttpServletRequest request,Model model){ //获取flag参数,判断是否是管理员进入页面 String flag=request.getParameter("flag"); List<News> news=this.newsService.getAllNews(); model.addAttribute("news", news); if(flag!=null && flag.equals("admin")) { //若是管理员,则进入管理页面 return "ShowList.jsp"; }else{ //否则进入新闻首页 return "NewsCenter.jsp"; } } @RequestMapping("Login") public String Login() { return "Login.jsp"; } @RequestMapping("operateNews") public String operateNews(HttpServletRequest request) { //获取action参数,判断是显示增加新闻页面还是编辑新闻页面 String action=request.getParameter("action"); if(action.equals("add")) { return "operateNews.jsp?action=add"; }else{ return "operateNews.jsp?action=edit"; } } @RequestMapping("operate") public String OperateCenter(HttpServletRequest request,HttpServletResponse response,Model model) throws IOException, ParseException, ServletException { //获取参数 PrintWriter out=response.getWriter(); String action=request.getParameter("action"); String Account=request.getParameter("userName"); String Password=request.getParameter("passWord"); String myType=request.getParameter("newsType"); String myTitle=request.getParameter("newsTitle"); String myContent=request.getParameter("editorValue"); String writer=request.getParameter("newsWriter"); String myID=request.getParameter("newsID"); if(action.equals("login")) { User user=this.userService.getUserById(Account); if(user.getPassword().equals(Password)) { out.write("1"); }else if(Account==""||Password==""){ out.write("2"); }else { out.write("3"); } out.close(); return ""; }else if(action.equals("add")) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 String time= df.format(new Date());// new Date()为获取当前系统时间 //生成新闻对象 News news=new News(); news.setNewstitle(myTitle); news.setNewstype(myType); news.setNewscontent(myContent); news.setNewswriter(writer); news.setNewstime(df.parse(time)); int result=this.newsService.insertNews(news);//调用服务层添加新闻 response.sendRedirect("showNews?flag=admin");//重新打开新闻管理页面 if(result>0) { System.out.println("add news success!"); } return ""; }else if(action.equals("delete")) { int result=this.newsService.deleteNews(Integer.parseInt(myID));//调用服务层删除新闻 response.sendRedirect("showNews?flag=admin");//重新打开新闻管理页面 if(result>0) { System.out.println("delete news success!"); } return ""; }else if(action.equals("edit")) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 String time= df.format(new Date());// new Date()为获取当前系统时间 //生成新闻对象 News news=new News(); news.setNewsid(Integer.parseInt(myID));//因使用updateByPrimaryKeySelective()函数,修改必须携带id主键 news.setNewstitle(myTitle); news.setNewstype(myType); news.setNewscontent(myContent); news.setNewswriter(writer); news.setNewstime(df.parse(time)); int result=this.newsService.updateNews(news);//调用服务层修改新闻 response.sendRedirect("showNews?flag=admin");//重新打开新闻管理页面 if(result>0) { System.out.println("update news success!"); } return ""; }else if(action.equals("select")) { //获取参数flag,若为edit则将新闻信息发送到新闻编辑页面,若为check则发送带新闻详情页面 String flag=request.getParameter("flag"); News selectNew=this.newsService.selectNews(Integer.parseInt(myID));//调用服务层查询指定新闻 model.addAttribute("selectNew", selectNew); if(flag.equals("edit")) { return "operateNews.jsp?action=edit"; }else { return "NewsInfo.jsp"; } }else { return ""; } } }
四、结果截图