【SpringMVC】三大框架整合纯java版
来源:互联网 发布:怎么避免淘宝找相似 编辑:程序博客网 时间:2024/06/07 07:27
首先引入三大框架所用jar包
结构如下:
准备数据库连接所需配置jdbc.properties
jdbc.user=rootjdbc.password=aini1314jdbc.driverClass=com.mysql.jdbc.Driverjdbc.jdbcUrl=jdbc:mysql:///springmvc
以及hibernate所需配置hibernate.properties
hibernate.dialect=org.hibernate.dialect.MySQL5Dialecthibernate.hbm2ddl.auto=update
在web.xml中进行Spring的配置
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><!-- 配置SpringMVC --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param><!-- 用哪种容器类 --> <param-name>contextClass</param-name> <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> </init-param> <init-param><!-- 入口配置 --> <param-name>contextConfigLocation</param-name> <param-value>cn.qblank.AppConfig</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping></web-app>
在AppConfig类代替xml进行hibernate的配置
package cn.qblank;import javax.sql.DataSource;import org.hibernate.SessionFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.core.env.Environment;import org.springframework.jdbc.datasource.DriverManagerDataSource;import org.springframework.orm.hibernate5.HibernateTransactionManager;import org.springframework.orm.hibernate5.LocalSessionFactoryBean;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.annotation.EnableTransactionManagement;import org.springframework.web.servlet.ViewResolver;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.servlet.view.InternalResourceViewResolver;import org.springframework.web.servlet.view.JstlView;@Configuration@ComponentScan("cn.qblank")@PropertySource("classpath:jdbc.properties") //引入外部属性文件到Enviroment@EnableTransactionManagement@EnableWebMvcpublic class AppConfig extends WebMvcConfigurerAdapter{/** * 负责将控制器方法返回的字符串映射到某个JSP */@Beanpublic ViewResolver viewResolver(){//创建对象InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();// 支持jsp及标准taglibviewResolver.setViewClass(JstlView.class);//设置前后缀viewResolver.setPrefix("/WEB-INF/jsp/");viewResolver.setSuffix(".jsp");return viewResolver;}/** * 扫描实体类 */@Beanpublic LocalSessionFactoryBean sessionFactory(DataSource dataSource){LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();//加载数据源factoryBean.setDataSource(dataSource);//自动扫描实体类factoryBean.setPackagesToScan("cn.qblank.entity");return factoryBean;}/** * 配置数据源 * 依赖Environment */@Beanpublic DataSource dataSource(Environment env){DriverManagerDataSource ds = new DriverManagerDataSource();ds.setDriverClassName(env.getProperty("jdbc.driverClass"));ds.setUrl(env.getProperty("jdbc.jdbcUrl"));ds.setUsername(env.getProperty("jdbc.user"));ds.setPassword(env.getProperty("jdbc.password"));return ds;}/** * 创建事务类 * @param sessionFactory * @return */@Beanpublic PlatformTransactionManager transactionManager(SessionFactory sessionFactory){HibernateTransactionManager transactionManager = new HibernateTransactionManager();transactionManager.setSessionFactory(sessionFactory);return transactionManager;}/** * bootstrap映射路径 */@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/assets/**").addResourceLocations("/public/");}}
书写dao层接口
package cn.qblank.dao;import java.util.List;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;import cn.qblank.entity.Book;public interface IBookDao {/** * 查询所有 * @return */List<Book> findAll();/** * 添加图书 */void addBook(Book book);/** * 修改图书 */void updateBook(Book book);/** * 删除图书 */void deleteBook(Long id);/** * 通过id查找 */Book findById(long id);}
实现类BookDaoImpl
package cn.qblank.dao.impl;import java.util.List;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;import cn.qblank.dao.IBookDao;import cn.qblank.entity.Book;@Repository@Transactionalpublic class BookDaoImpl implements IBookDao{@Autowiredprivate SessionFactory sessionFactory;@SuppressWarnings("unchecked")@Overridepublic List<Book> findAll() {return sessionFactory.getCurrentSession().createQuery("from Book").list();}@Overridepublic void addBook(Book book) {Session session = sessionFactory.getCurrentSession();session.save(book);}@Overridepublic void updateBook(Book book) {sessionFactory.getCurrentSession().update(book);}@Overridepublic void deleteBook(Long id) {Session session = sessionFactory.getCurrentSession();//通过id查询到对象Book book = session.get(Book.class, id);session.delete(book);}@Overridepublic Book findById(long id) {return sessionFactory.getCurrentSession().get(Book.class, id);}}
同样的实现service层接口
package cn.qblank.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import cn.qblank.dao.IBookDao;import cn.qblank.entity.Book;import cn.qblank.service.IBookService;@Service@Transactionalpublic class BookServiceImpl implements IBookService{@Autowiredprivate IBookDao bookDao;@Overridepublic List<Book> findAll() {return bookDao.findAll();}@Overridepublic void addBook(Book book) {bookDao.addBook(book);}@Overridepublic void updateBook(Book book) {System.out.println("service:" + book);bookDao.updateBook(book);}@Overridepublic void deleteBook(Long id) {bookDao.deleteBook(id);}@Overridepublic Book findById(Long id) {return bookDao.findById(id);}}
书写控制类BookController
package cn.qblank.control;import java.util.List;import javax.validation.Valid;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import cn.qblank.entity.Book;import cn.qblank.service.IBookService;@Controller //控制器注解public class BookController {@Autowiredprivate IBookService bookService;@RequestMapping(method = RequestMethod.POST, value = "/add")public String add(@ModelAttribute @Valid Book book,BindingResult bindingResult){//调用业务//添加图书bookService.addBook(book);if (bindingResult.hasErrors()) {return "add";}//跳转return "redirect:/list";}/** * 展示图书列表 * @param model * @return */@RequestMapping(method = RequestMethod.GET, value = "/list")public String list(Model model){//调用service处理业务List<Book> books = bookService.findAll();//存入model中model.addAttribute("books", books);return "list";}/** * 删除功能 * @param book * @return */@RequestMapping(value = "/delete")public String delete(@ModelAttribute Book book){bookService.deleteBook(book.getId());return "redirect:/list";}/** * 跳转到修改页面 * @param model * @param book * @return */@RequestMapping(value = "/update/{id}")public String update(@PathVariable long id,Model model){Book book = bookService.findById(id);System.out.println(book);model.addAttribute("book",book);return "update";}/** * 跳转到主页 */@RequestMapping(value = "/updateJsp")public String updateJsp(Model model,@Valid Book book, BindingResult bindingResult){//if (bindingResult)book = bookService.findById(book.getId());//进行修改操作bookService.updateBook(book);return "redirect:/list";}/** * 跳转到jsp页面 * @return */@RequestMapping(method = RequestMethod.GET , value = "/addJsp")public String addJsp(@ModelAttribute @Valid Book book,BindingResult bindingResult){return "add";}}
访问项目页面list.jsp
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><c:set var="contextPath" value="${pageContext.request.contextPath}"></c:set><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>图书列表</title><style type="text/css">table{text-align:center;margin: 0 auto;}</style><link rel="stylesheet" href="${contextPath}/assets/bootstrap/css/bootstrap.css"></head><body><div class="container"><table border="1" class="table"><tr><th>编号</th><th>书名</th><th>作者</th><th>出版社</th><th>简介</th><th>类别</th><th>出版日期</th><th>操作</th></tr><!-- 书名 作者 出版社 出版年份 简介 类别 --><c:forEach items="${books}" var="book" varStatus="b"><tr><td>${book.id}</td><td>${book.bookname}</td><td>${book.author}</td><td>${book.publishConpany}</td><td>${book.info}</td><td>${book.booktype}</td><td>${book.publishDate}</td><td><a href="${contextPath}/update/${book.id}">修改</a> <a href="${contextPath}/delete?id=${book.id}">删除</a></td></tr></c:forEach><tr><td colspan="8" align="center"><a href="${contextPath}/addJsp">【添加】</a></td></tr></table></div></body></html>
add.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><c:set var="contextPath" value="${pageContext.request.contextPath}"></c:set><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>提交数据</title><link rel="stylesheet" href="${contextPath}/assets/css/form-validation.css"><link rel="stylesheet" href="${contextPath}/assets/bootstrap/css/bootstrap.css"><style type="text/css">.form-error{color:red;margin-left:50px;}</style></head><body><h2>添加数据</h2><div class="container"><form:form action="${contextPath}/add" method="POST" commandName="book" ><div class="form-group"><label for="exampleInputEmail1">书名</label><form:input path="bookname" cssClass="form-control" /><br/><form:errors path="bookname" cssClass="form-error"></form:errors></div><div class="form-group"><label for="exampleInputEmail1">作者</label><form:input path="author" cssClass="form-control" /><br/><form:errors path="author" cssClass="form-error"></form:errors></div><div class="form-group"><label for="exampleInputEmail1">出版社</label><form:input path="publishConpany" cssClass="form-control" /><br/><form:errors path="publishConpany" cssClass="form-error"></form:errors></div><div class="form-group"><label for="exampleInputEmail1">出版年份</label><form:input path="publishDate" cssClass="form-control" /><br/><form:errors path="publishDate" cssClass="form-error"></form:errors></div><div class="form-group"><label for="exampleInputEmail1">简介</label><form:input path="info" cssClass="form-control" /><br/><form:errors path="info" cssClass="form-error"></form:errors></div><div class="form-group"><label for="exampleInputEmail1">类别</label><form:input path="booktype" cssClass="form-control" /><br/><form:errors path="booktype" cssClass="form-error"></form:errors></div><input type="submit" class="btn btn-primary" value="提交"></form:form></div></body></html>
update.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>提交数据</title><link rel="stylesheet" href="${pageContext.request.contextPath}/assets/css/form-validation.css"><link rel="stylesheet" href="${contextPath}/assets/bootstrap/css/bootstrap.css"></head><body><div class="container"><form:form action="${pageContext.request.contextPath }/updateJsp"method="post" commandName="book"><div class="form-group"><label for="exampleInputEmail1">书名</label><form:input path="bookname" cssClass="form-control" value="${book.bookname}"/><form:errors path="bookname"></form:errors></div><div class="form-group"><label for="exampleInputEmail1">作者</label><form:input path="author" cssClass="form-control" value="${book.author}"/><form:errors path="author"></form:errors></div><div class="form-group"><label for="exampleInputEmail1">出版社</label><form:input path="publishConpany" cssClass="form-control" value="${book.publishConpany}"/><form:errors path="publishConpany"></form:errors></div><div class="form-group"><label for="exampleInputEmail1">出版年份</label><form:input path="publishDate" cssClass="form-control" value="${book.publishDate}"/><form:errors path="publishDate"></form:errors></div><div class="form-group"><label for="exampleInputEmail1">简介</label><form:input path="info" cssClass="form-control" value="${book.info}"/><form:errors path="info"></form:errors></div><div class="form-group"><label for="exampleInputEmail1">类别</label><form:input path="booktype" cssClass="form-control" value="${book.booktype}"/><form:errors path="booktype"></form:errors></div><input type="submit" class="btn btn-primary" value="提交"></form:form></div></body></html>
各个页面的结果如下:
完整项目地址:
https://github.com/qblank/SSHPro02
阅读全文
0 0
- 【SpringMVC】三大框架整合纯java版
- spring+springMVC+hibernate 三大框架整合
- spring+springMVC+hibernate 三大框架整合
- Spring+SpringMVC+Hibernate三大框架整合
- 三大框架Spring+Mybatis+springMVC整合
- java 三大框架整合
- J2EE开发 spring+springMVC+hibernate 三大框架整合
- Spring ,Springmvc,mybatis三大框架整合的配置文件支持
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis
- 三大框架整合ssm:SpringMVC + Spring + Mybatis
- Spring+SpringMVC+Hibernate三大框架整合的SSH
- Spring+SpringMVC+MyBatis三大框架整合的SSM
- Spring、SpringMVC、Mybatis三大框架整合步骤
- Sping,SpringMVC,Mybatis 三大框架整合环境搭建详解
- spring+springMVC+mybatis三大框架整合学习总结
- SSM三大框架整合配置(1)-----SpringMVC
- java ssh三大框架搭建整合
- 自我学习反思
- 1.6 配置ip地址
- Mat 类
- Starting MySQL. ERROR! The server quit without updating PID file......
- Spring学习04
- 【SpringMVC】三大框架整合纯java版
- 【jQuery】jQuery 停止动画
- swagger ui 搭建
- 栈和队列使用
- java基础-hashCode()和equals()的本质区别和联系
- 点量OTT IPTV互联网电视软件系统可以实现的功能有哪些
- iOS关键帧动画-动态画折线
- Android 颜色透明度换算
- struts2-7指定struts2处理的请求后缀