SpringMVC+Spring+mybatis 项目实践
2021-05-03 19:29
标签:builder splay 码云 公告 方法 setname not delete 文件中 SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。 在游览器地址栏输入:http://localhost:8080/index,即访问计科院首页,且必须输入上述地址发出请求才可以实现(即按照实际生活中,游客访问首页的实际行为)。 未登陆的游客仅可以在首页查看新闻,或者点击每一个模块的More>>链接查看更多新闻,以及点击具体的某一条新闻查看它的全部信息。 在工作人员登录后,可以添加。修改以及删除新闻。这些操作和上次的MVC模式下的操作页面相同,这里不再介绍。 检索的时候减少遍历的长度以及条件的判断,以及将新闻分类创建多个表,且应将新闻的类别作为Bean的一个属性。 项目码云地址 SpringMVC+Spring+mybatis 项目实践 标签:builder splay 码云 公告 方法 setname not delete 文件中 原文地址:https://www.cnblogs.com/tianhaoqi/p/13197240.html
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命令。一、游览
二、游客
三、登录
四、项目部分代码
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
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
五、数据库设计
六、项目码云地址
文章标题:SpringMVC+Spring+mybatis 项目实践
文章链接:http://soscw.com/essay/81939.html