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 "";
}
}
}
四、结果截图




浙公网安备 33010602011771号