文章目录

  • 前言:
    • 准备工作:
    • 最终项目的目录结构:
    • 源码
  • 一、使用idea创建web app项目
  • 二、导包
  • 三、SpringMVC配置
    • 第一步:配置spring-mvc.xml
    • 第二步:配置 web.xml
    • 第三步:测试
    • 第四步在views新建test.jsp
    • 第五步:启动tomcat并且访问
  • 四、SpringMVC+Spring整合
    • 第一步:建并且配置applicationContext.xml
    • 第二步:在web.xml中新增spring配置
    • 第三步:测试
      • 第一步
      • 第二步:TestController控制器更改如下:
  • 五、Spring+SpringMVC+Hibernate整合
    • 第一步:创建config.properties
    • 第二步 配置Hibernate
  • 六、整体测试
    • 第一步、创建实体类(entity)
    • 第二步、数据库访问层(dao)
    • 第三步:服务层(service)
    • 第三步:控制层(controller)
    • 第四步:测试
  • 七、Spring+SpringMVC+Hibernate+bootstrap整合
    • 第一步、实现后台功能:
      • 1、dao
      • 2、service
      • 3、controller
    • 第二步、实现前端功能:
      • 1、创建homePage.jsp (首页显示信息)
      • 2、创建addPerson.jsp
      • 3、创建updatePerson.jsp
      • 4、创建 index.jsp
      • **最终的效果:**
  • 八、Spring+SpringMVC+Hibernate+JSP整合
    • 第一步:创建新的UserController
    • 第二步:创建userList.jsp
    • 第三步:创建addUser.jsp
    • 第四步:创建updateUser.jsp
    • 第五步:页面效果

前言:

准备工作:

  1. 安装并且配置jdk8运行环境
  2. 数据库配置安装mysql
  3. 安装并且配置tomcat8.5.xx
  4. maven
  5. 安装idea2020

最终项目的目录结构:

源码

ssh源码

一、使用idea创建web app项目

二、导包

,由于我们创建的是maven的webapp项目,所以现在只需配置下pomxml这个配置文件,系统会自动到maven的中央仓库去下载相应的包。
本人的pom.xml配置文件如下:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.oyzk</groupId><artifactId>sshDemo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><!-- 本人将配置包的版本信息都统一放入此处,方便以后管理--><properties><springVersion>5.0.12.RELEASE</springVersion><hibernateVersion>5.4.8.Final</hibernateVersion><jstlVersion>1.2</jstlVersion><taglibVersion>1.1.2</taglibVersion><servletVersion>3.0-alpha-1</servletVersion><jsonVersion>1.9.13</jsonVersion><jacksonVersion>2.9.0</jacksonVersion><mysqlVersion>5.1.47</mysqlVersion><c3p0Version>0.9.1.2</c3p0Version><log4jVersion>1.2.17</log4jVersion><fileuploadVersion>1.3.1</fileuploadVersion><lombokVersion>1.18.10</lombokVersion></properties><dependencies><!-- 单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- spring--><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${springVersion}</version></dependency><!-- spring web + spring MVC--><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${springVersion}</version></dependency><!-- hibernate配置--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>${hibernateVersion}</version></dependency><!-- hibernate 缓存, 视情况添加--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-ehcache</artifactId><version>${hibernateVersion}</version></dependency><!-- jsp页面使用的jstl支持--><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstlVersion}</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>${taglibVersion}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>${servletVersion}</version><scope>provided</scope></dependency><!-- DataBase数据库连接 mysql包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysqlVersion}</version></dependency><!-- 数据库连接池--><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>${c3p0Version}</version></dependency><!-- json数据 使springMVC可以返回json值 ,视情况添加--><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>${jsonVersion}</version></dependency><!-- Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>${jacksonVersion}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>${jacksonVersion}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jacksonVersion}</version></dependency><!-- log4j配置, 视情况添加--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4jVersion}</version></dependency><!--文件 上传--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>${fileuploadVersion}</version></dependency><!-- lombok插件导包--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombokVersion}</version><scope>provided</scope></dependency><dependency><groupId>javax.persistence</groupId><artifactId>persistence-api</artifactId><version>1.0</version></dependency></dependencies><build><finalName>sshDemo</finalName></build>
</project>

OK,配置后运行下maven,就会自动向中央仓库下载相应的包(这个就不多说了)。

三、SpringMVC配置

第一步:配置spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--.配置spring开启注解mvc 的支持--><mvc:annotation-driven></mvc:annotation-driven><!--扫描控制层--><context:component-scan base-package="com.oyzk.controller"></context:component-scan><!--4.视图解析器  对模型视图名称的解析,在请求时模型视图名称添加前后缀--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"/><!--后缀--><property name="suffix" value=".jsp"/></bean><!--这里是对静态资源的映射--><mvc:resources mapping="/js/**" location="/js/" /><mvc:resources mapping="/css/**" location="/css/" /><mvc:resources mapping="/img/**" location="/img/" /></beans>

第二步:配置 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><!-- 地址为http://localhost:8080/  显示的默认网页--><welcome-file-list><welcome-file>/index.jsp</welcome-file></welcome-file-list><!-- spring MVC config start--><servlet><servlet-name>dispatcherServlet</servlet-name><!--通过java的反射机制加载--><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><!-- 此处指向的的是SpringMVC的配置文件 --><param-value>classpath:spring-mvc.xml</param-value></init-param><!--让我们springmvc DispatcherServlet优先被加载--><load-on-startup>1</load-on-startup></servlet><!--客户端发送所有请求 都会达到我们的 DdispatcherServlet 静态资源 控制器中,请求--><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- spring MVC config end--></web-app>

第三步:测试

在controller层新建一个TestController

package com.oyzk.controller;import com.oyzk.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;/*** @author Kingkang* @title TestController* @create 2022/11/27**/
@Controller
public class TestController {@Autowiredprivate PersonService personService;@RequestMapping(value = "/test", method = RequestMethod.GET)public String test(){
//        实际返回的是views/test.jsp ,spring-mvc.xml中配置过前后缀return "test";}}

第四步在views新建test.jsp

<%--Created by IntelliJ IDEA.User: KingkangDate: 2022/11/27To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>测试Controller</title>
</head>
<body>
hello
</body>
</html>

第五步:启动tomcat并且访问


访问路径:http://localhost:8080/test

如果看到这个界面,恭喜你SpringMVC就应该好,接下来整合Spring

四、SpringMVC+Spring整合

第一步:建并且配置applicationContext.xml

这个就比较简单简单了, 创建并且配置applicationContext.xml这个Spring的配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"><!--********************************************配置Spring******** start*******************************--><!-- 自动扫描 --><context:component-scan base-package="com.oyzk"><!-- 扫描时跳过 @Controller 注解的JAVA类(控制器) --><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!--********************************************配置Spring******** end*******************************-->
</beans>

第二步:在web.xml中新增spring配置

新增如下配置

  <!--加载Spring的配置文件到上下文中去--><context-param><param-name>contextConfigLocation</param-name><param-value> classpath:applicationContext.xml </param-value></context-param><!-- Spring监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--  字符集过滤  --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

web.xml配置文件中更改了三处:引入Spring配置文件 Spring的监听器 以及 字符集过滤

第三步:测试

第一步

在service写一个TestServiceImpl实现TestService接口并实现其test()方法

package com.oyzk.service;/*** @author Kingkang* @title TestService* @create 2022/11/27**/
public interface TestService {String test();
}
package com.oyzk.service.impl;import com.oyzk.service.TestService;
import org.springframework.stereotype.Service;/*** @author Kingkang* @title TestServiceImpl* @create 2022/11/27**/
@Service
public class TestServiceImpl implements TestService {public String test() {return "测试spring";}
}

**注意:**这里注意写@Service注解

第二步:TestController控制器更改如下:

package com.oyzk.controller;import com.oyzk.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;/*** @author Kingkang* @title TestController* @create 2022/11/27**/
@Controller
public class TestController {@Autowiredprivate PersonService personService;@RequestMapping(value = "/test", method = RequestMethod.GET)public String test(){
//        实际返回的是views/test.jsp ,spring-mvc.xml中配置过前后缀return "test";}@RequestMapping(value = "/springtest", method = RequestMethod.GET)@ResponseBodypublic String springTest(){return personService.test();}
}

控制器这里我们运用了Spring的依赖注入自动装配。
在浏览器中输入地址http://localhost/springtest调用springtest方法

成功返回的话,恭喜你,spring+springMVC已经整合成功

五、Spring+SpringMVC+Hibernate整合

第一步:创建config.properties

用来存放的是hibernate的一些配置

#database connection config
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/frame?useUnicode=true&characterEncoding=utf-8
jdbc.username = root
jdbc.password = root#hibernate config
#数据库方言
hibernate.dialect = org.hibernate.dialect.MySQLDialect
#打印sql
hibernate.show_sql = true
#格式化sql
hibernate.format_sql = true
#自动生成sql
hibernate.hbm2ddl.auto = update

第二步 配置Hibernate

这里为方便就直接写进applicationContext.xml里面

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"><!--********************************************配置Spring******** start*******************************--><!-- 自动扫描 --><context:component-scan base-package="com.oyzk"><!-- 扫描时跳过 @Controller 注解的JAVA类(控制器) --><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!--********************************************配置Spring******** end*******************************--><!--********************************************配置hibernate********************************************--><!--引入外部文件--><context:property-placeholder location="classpath:config.properties"></context:property-placeholder><!--配置数据源--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"><property name="driverClass" value="${jdbc.driver}" />  <!--数据库连接驱动--><property name="jdbcUrl" value="${jdbc.url}" />     <!--数据库地址--><property name="user" value="${jdbc.username}" />   <!--用户名--><property name="password" value="${jdbc.password}" />   <!--密码--><property name="maxPoolSize" value="40" />      <!--最大连接数--><property name="minPoolSize" value="1" />       <!--最小连接数--><property name="initialPoolSize" value="10" />      <!--初始化连接池内的数据库连接--><property name="maxIdleTime" value="20" />  <!--最大空闲时间--></bean><!--配置session工厂--><bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="packagesToScan" value="com.oyzk.entity" /><property name="hibernateProperties"><props><!--hibernate根据实体自动生成数据库表--><prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop><!--指定数据库方言--><prop key="hibernate.dialect">${hibernate.dialect}</prop><!--在控制台显示执行的数据库操作语句--><prop key="hibernate.show_sql">${hibernate.show_sql}</prop><!--在控制台显示执行的数据哭操作语句(格式)--><prop key="hibernate.format_sql">${hibernate.format_sql}</prop></props></property></bean><!-- 事物管理器配置  --><bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><!--********************************************配置hibernate*******end**********************************--></beans>

到这一步,配置已经已经结束了,这时候进入测试阶段

六、整体测试

第一步、创建实体类(entity)

package com.oyzk.entity;import lombok.Data;
import lombok.Getter;
import lombok.Setter;import javax.persistence.*;/*** @author Kingkang* @title Person* @create 2022/11/27**/
//setter 和getter 等同于 @Data
@Setter
@Getter
//是指这个类映射有数据库表
@Entity
//和数据库表对应
@Table(name = "Person")
public class Person {//主键标识@Id//主键自增策略@GeneratedValue(strategy=GenerationType.IDENTITY)private int id;//数据库字段名与属性值名进行对应@Column(name = "username")private String username;@Column(name = "address")private String address;@Column(name = "phone")private String phone;
}

第二步、数据库访问层(dao)

package com.oyzk.dao;import com.oyzk.entity.Person;import java.util.List;/*** @author Kingkang* @title PersonDao* @create 2022/11/27**/
public interface PersonDao{/*** 查询所有数据* @return*/List<Person> findAll();/*** 通过id查询数据* @param id* @return*/Person get(int id);/*** 保存数据* @param person* @return*/int  save(Person person);/*** 新增数据* @param person*/void updatePerson(Person person);/*** 删除数据* @param id*/void deletePerson(int id);}
package com.oyzk.dao.impl;import com.oyzk.dao.PersonDao;
import com.oyzk.entity.Person;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;import java.io.Serializable;
import java.util.List;/*** @author Kingkang* @title PersonDao* @create 2022/11/27**/
@Repository
public class PersonDaoImpl implements PersonDao {@Autowiredprivate SessionFactory sessionFactory;private Session getCurrentSession() {return this.sessionFactory.openSession();}public List<Person> findAll() {return null;}public Person get(int id) {return (Person)getCurrentSession().get(Person.class,id);}public int  save(Person person) {Serializable save = getCurrentSession().save(person);if(save!=null){return 1;}else{return -1;}}public void updatePerson(Person person) {}public void deletePerson(int id) {Person person = new Person();getCurrentSession().delete(person);}
}

第三步:服务层(service)

package com.oyzk.service;import com.oyzk.entity.Person;import java.util.List;/*** @author Kingkang* @title PersonService* @create 2022/11/27**/
public interface PersonService {String test();/*** 查询所有数据* @return*/List<Person> findAll();/*** 通过id查询数据* @param id* @return*/Person get(int id);/*** 保存数据* @param person* @return*/int  save(Person person);/*** 新增数据* @param person*/void updatePerson(Person person);/*** 删除数据* @param id*/void deletePerson(int id);}
package com.oyzk.service.impl;import com.oyzk.dao.PersonDao;
import com.oyzk.entity.Person;
import com.oyzk.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** @author Kingkang* @title PersonServiceImpl* @create 2022/11/27**/
@Service
public class PersonServiceImpl implements PersonService {@Autowiredprivate PersonDao personDao;public String test() {return "spring 测试";}public List<Person> findAll() {return null;}public Person get(int id) {return personDao.get(1);}public int save(Person person) {person.setUsername("张三");person.setPhone("1111");person.setAddress("郴州");return personDao.save(person);}public void updatePerson(Person person) {}public void deletePerson(int id) {}
}

第三步:控制层(controller)

package com.oyzk.controller;import com.oyzk.entity.Person;
import com.oyzk.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;/*** @author Kingkang* @title PersonController* @create 2022/11/27**/
@Controller
public class PersonController {@Autowiredprivate PersonService personService;@RequestMapping(value = "/savePerson", method = RequestMethod.GET)@ResponseBodypublic String savePerson(){personService.save(new Person());return "success!";}
}

第四步:测试

我们重启下服务器然后测试:
在去看看数据库数据已经新增进去
说明spring+springmvc+hibernate已经整合成功,剩下的就是写crud

七、Spring+SpringMVC+Hibernate+bootstrap整合

目标:实现增删改查操作

第一步、实现后台功能:

1、dao

package com.oyzk.dao;import com.oyzk.entity.Person;import java.util.List;/*** @author Kingkang* @title PersonDao* @create 2022/11/28**/
public interface PersonDao {/*** 查询全部的数据* @return*/List<Person> getPersonAll();/*** 通过名字进行查询* @param id* @return*/Person getPersonById(int id);/*** 新增数据* @param person* @return*/int addPerson(Person person);/*** 修改* @param person* @return*/int updatePerson(Person person);/*** 删除* @param id* @return*/int deletePerson(int id);
}
package com.oyzk.dao.impl;import com.oyzk.dao.PersonDao;
import com.oyzk.entity.Person;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;import java.io.Serializable;
import java.util.List;/*** @author Kingkang* @title PersonDaoImpl* @create 2022/11/28**/
@Repository
public class PersonDaoImpl implements PersonDao {@Autowiredprivate SessionFactory sessionFactory;private Session getOpenSession(){return  sessionFactory.openSession();}/*** 查询全部数据* @return*/public List<Person> getPersonAll() {String hql=" from Person";Query query = getOpenSession().createQuery(hql);List<Person> list = query.list();return list;}/*** 通过id去查询数据* @param id* @return*/public Person getPersonById(int id) {//Person person = getOpenSession().get(Person.class, id);return getOpenSession().get(Person.class, id);}public int addPerson(Person person) {/* person.setUsername("张三");person.setAddress("上海");person.setPhone("111");Serializable save = getOpenSession().save(person);*/Session openSession = getOpenSession();//新增Serializable save = openSession.save(person);if(save!=null){closeTrancation(openSession);return 1;}else{closeTrancation(openSession);return -1;}}public int updatePerson(Person person) {Session openSession = getOpenSession();openSession.update(person);closeTrancation(openSession);return 1;}public int deletePerson(int id) {Session openSession = getOpenSession();Person person=new Person();person.setId(id);openSession.delete(person);closeTrancation(openSession);return 1;}public void closeTrancation( Session openSession){openSession.beginTransaction().commit();openSession.close();}
}

注意:PersonDaoImpl 上面有一个@Repository注解,千万要记得写,交给spring容器进行管理

2、service

package com.oyzk.service;import com.oyzk.entity.Person;import java.util.List;/*** @author Kingkang* @title PersonService* @create 2022/11/28**/
public interface PersonService {/*** 查询全部的数据* @return*/List<Person> getPersonAll();/*** 通过名字进行查询* @param id* @return*/Person getPersonById(int id);/*** 新增数据* @param person* @return*/int addPerson(Person person);/*** 修改* @param person* @return*/int updatePerson(Person person);/*** 删除* @param id* @return*/int deletePerson(int id);}
package com.oyzk.service.impl;import com.oyzk.dao.PersonDao;
import com.oyzk.entity.Person;
import com.oyzk.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;import java.util.List;/*** @author Kingkang* @title PersonServiceImpl* @create 2022/11/28**/
@Service
public class PersonServiceImpl implements PersonService {@Autowiredprivate PersonDao personDao;public List<Person> getPersonAll() {return personDao.getPersonAll();}public Person getPersonById(int id) {return personDao.getPersonById(id);}public int addPerson(Person person) {if(StringUtils.isEmpty(person)){return -1;}return personDao.addPerson(person);}public int updatePerson(Person person) {return personDao.updatePerson(person);}public int deletePerson(int id) {return personDao.deletePerson(id);}
}

**注意:**PersonServiceImpl类上面有一个@Service注解千万要记得写

3、controller

package com.oyzk.controller;import com.oyzk.entity.Person;
import com.oyzk.service.PersonService;
import com.oyzk.service.impl.PersonServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;import java.sql.Array;
import java.util.ArrayList;
import java.util.List;/*** @author Kingkang* @title PersonController* @create 2022/11/28**/
@Controller
@RequestMapping("/person")
public class PersonController {@Autowiredprivate PersonService personService;/*** 查詢所有数据* @param model* @return*/@GetMapping("/findAll")public String findAll(Model model){List<Person> personAll = personService.getPersonAll();model.addAttribute("personList",personAll);return "homePage";}@GetMapping("/findById")public String findById(int id,Model model){Person person = personService.getPersonById(id);List<Person> personAll=new ArrayList<Person>();personAll.add(person);model.addAttribute("personList",personAll);return "homePage";}/*** 新增数据* @param person* @return*/@RequestMapping("/savePerson")public ModelAndView savePerson(Person person){ModelAndView modelAndView=new ModelAndView();int i = personService.addPerson(person);if(i>0){modelAndView.addObject("flageMsg","新增成功");}else {modelAndView.addObject("flageMsg","新增失败");}modelAndView.setViewName("redirect:/person/findAll");return modelAndView;}/*** 跳转新增页面请求* @param* @return*/@RequestMapping("/savePersonPage")public String savePersonPage(){return "addPerson";}@GetMapping("/deletePerson")public String deletePerson(int id,Model model){int i = personService.deletePerson(id);if(i>0){model.addAttribute("flageMsg","删除成功");return "homePage";}else {model.addAttribute("flageMsg","删除删除失败");return "homePage";}}/*** 修改数据* @param person* @return*/@PostMapping("/updatePerson")public String updatePerson(Person person,Model model){int i = personService.updatePerson(person);if(i>0){model.addAttribute("flageMsg","修改成功");}else {model.addAttribute("flageMsg","修改失败");}return "redirect:/person/findAll";}/*** 修改跳转页面请求* @param id* @param model* @returntoUpdatePerson*/@RequestMapping("/updatePersonPage")public String updatePersonPage(int id,Model model){Person person = personService.getPersonById(id);model.addAttribute("person",person);return "updatePerson";}
}

第二步、实现前端功能:

1、创建homePage.jsp (首页显示信息)

<%--Created by IntelliJ IDEA.User: KingkangDate: 2022/11/28Time: 16:19To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>信息展示页面</title><link type="text/css" rel="stylesheet" href="../../css/bootstrap.css"><script type="text/javascript" src="../../js/jquery.min.js"></script><script type="text/javascript" src="../../js/bootstrap.min.js"></script>
</head>
<body><div class="container"><div class="row clearfix"><div class="col-md-12 column"><div class="page-headr"><h1><small>信息列表 ———————— 显示所有人员信息</small></h1><span style="color:#FAF520 ;font-weight: bold">${flageMsg}</span></div></div><div class="col-md-4 column"><a class="btn btn-primary" href="${pageContext.request.contextPath}/person/savePersonPage">新增</a><a class="btn btn-primary" href="${pageContext.request.contextPath}/person/findAll">显示全部信息</a></div><div class="col-md-4"></div><div class="col-md-4"><form class="form-inline" action="${pageContext.request.contextPath}/person/findById" method="get" style="float:right"><span style="color:#FAF520 ;font-weight: bold">${error}</span><input type="text" name="id" class="form-control" placeholder="请输入要查询的人员id"><input type="submit" value="查询" class="btn btn-primary"></form></div></div><div class="row clearfix"><div class="col-md-12 column"><table class="table table-hover table-striped"><thead><tr><th>人员id</th><th>人员名字</th><th>人员电话</th><th>人员地址</th><th>操作</th></tr></thead><%--                        人员从数据库中查询出来--%><tbody><c:forEach items="${personList}" var="person"><tr><td>${person.id}</td><td>${person.username}</td><td>${person.phone}</td><td>${person.address}</td><td><a href="${pageContext.request.contextPath}/person/updatePersonPage?id=${person.id}">修改</a>&nbsp; ||&nbsp;<a href="${pageContext.request.contextPath}/person/deletePerson?id=${person.id}">刪除</a></td></tr></c:forEach></tbody></table></div></div></div>
</body></html>

2、创建addPerson.jsp

<%--Created by IntelliJ IDEA.User: KingkangDate: 2022/11/28Time: 16:56To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>新增人员信息页面</title><link type="text/css" rel="stylesheet" href="../../css/bootstrap.css"><script type="text/javascript" src="../../js/jquery.min.js"></script><script type="text/javascript" src="../../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container"><div class="row clearfix"><div class="col-md-12 column"><div class="page-headr"><h1><samll>新增人员</samll></h1></div></div></div><form action="${pageContext.request.contextPath}/person/savePerson" method="post"><div class="form-group"><table>人员名称</table><input type="text" name="username" class="form-control" required></div><div class="form-group"><table>人员电话</table><input type="text" name="phone" class="form-control"  required></div><div class="form-group"><table>人员地址</table><input type="text" name="address" class="form-control" required></div><div class="form-group"><input type="submit" class="form-control" value="添加"></div></form></div>
</body>
</html>

3、创建updatePerson.jsp

<%--Created by IntelliJ IDEA.User: KingkangDate: 2022/11/27To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>修改人员信息页面</title><link type="text/css" rel="stylesheet" href="../../css/bootstrap.css"><script type="text/javascript" src="../../js/jquery.min.js"></script><script type="text/javascript" src="../../js/bootstrap.min.js"></script>
</head>
<body><div class="container"><div class="row clearfix"><div class="col-md-12 column"><div class="page-headr"><h1><samll>修改人员</samll></h1></div></div></div><form action="${pageContext.request.contextPath}/person/updatePerson" method="post"><input type="hidden" name="id" value="${person.id}"><div class="form-group"><table>人员名字</table><input type="text" name="username" class="form-control" value="${person.username}" required></div><div class="form-group"><table>人员电话</table><input type="text" name="phone" class="form-control"  value="${person.phone}" required></div><div class="form-group"><table>人员地址</table><input type="text" name="address" class="form-control" value="${person.address}" required></div><div class="form-group"><input type="submit" class="form-control" value="修改"></div></form></div>
</body>
</html>

4、创建 index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>首页</title><style>a{text-decoration: none;color: black;font-size: 18px;}h3{width: 180px;height: 50px;margin: 100px auto;text-align: center;line-height:50px;background:#FAF520;border-radius: 5px;}</style>
</head>
<body>
<h3><a href="${pageContext.request.contextPath}/person/findAll">进入到人员信息页面</a>
</h3>
</body>
</html>

最终的效果:

![在这里插入图片描述](https://img-blog.csdnimg.cn/6c94e32b39a340609982d4f980ee0bf3.png

八、Spring+SpringMVC+Hibernate+JSP整合

ssh和sjp进行整合,其实和bootstrap是一样的,无非就是前端页面修改一下,这里为了分得清,重新创建一个UserController,所以目录结构是这样的,

第一步:创建新的UserController

package com.oyzk.controller;import com.oyzk.entity.Person;
import com.oyzk.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import java.util.List;/*** @author Kingkang* @title UserController* @create 2022/11/29**/
@Controller
@RequestMapping("/user")
public class UserController {@Autowiredprivate PersonService personService;@GetMapping("/userList")public String findAll(Model model){List<Person> personAll = personService.getPersonAll();model.addAttribute("userList",personAll);return "userList";}/*** 跳转修改页面请求* @param id* @param model* @return*/@RequestMapping("/updateUserByIdPage")public String updateUserByIdPage(int id,Model model){Person person = personService.getPersonById(id);model.addAttribute("user",person);return "updateUser";}/*** 修改数据* @param person* @return*/@PostMapping("/updateUser")public String updateUser(Person person,Model model){int i = personService.updatePerson(person);if(i>0){model.addAttribute("flageMsg","修改成功");}else {model.addAttribute("flageMsg","修改失败");}return "redirect:/user/userList";}/*** 删除* @param id* @param model* @return*/@GetMapping("/deleteUser")public String deleteUser(int id,Model model){int i = personService.deletePerson(id);if(i>0){model.addAttribute("flageMsg","删除成功");return "redirect:/user/userList";}else {model.addAttribute("flageMsg","删除删除失败");return "redirect:/user/userList";}}/*** 新增数据* @param person* @return*/@RequestMapping("/saveUser")public ModelAndView saveUser(Person person){ModelAndView modelAndView=new ModelAndView();int i = personService.addPerson(person);if(i>0){modelAndView.addObject("flageMsg","新增成功");}else {modelAndView.addObject("flageMsg","新增失败");}//重新去请求数据modelAndView.setViewName("redirect:/user/userList");return modelAndView;}@RequestMapping("/addUserPage")public String addUserPage(){return "addUser";}}

第二步:创建userList.jsp

<%--Created by IntelliJ IDEA.User: KingkangDate: 2022/11/29Time: 14:33To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.oyzk.entity.Person" %>
<%@ page import="java.util.List" %>
<html>
<head><title>用户列表</title>
</head>
<body>
<a href="addUserPage">添加用户</a>
<table class="table-hover table-bordered"><tr><th>人员id</th><th>人员名字</th><th>人员电话</th><th>人员地址</th><th>操作</th></tr><%if (request.getAttribute("userList") != null) {%><%for (Person u : (List<Person>) request.getAttribute("userList")) {%><tr><td><%=u.getId()%></td><td><%=u.getUsername()%></td><td><%=u.getPhone()%></td><td><%=u.getAddress()%></td><td><a href="updateUserByIdPage?id=<%=u.getId()%>">修改</a><a href="deleteUser?id=<%=u.getId()%>">删除</a></td></tr><%}%><%}%>
</table>
</body>
</html>

第三步:创建addUser.jsp

<%--Created by IntelliJ IDEA.User: KingkangDate: 2022/11/29Time: 14:42To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>添加用户</title>
</head>
<body>
<form method="post" action="/user/saveUser"><p>用户名:<input name="username"></p><p>地址:<input name="address"></p><p>电话:<input name="phone"></p><p><button type="submit">添加</button></p><a href="/user/userList">用户列表</a>
</form>
</body>
</html>

第四步:创建updateUser.jsp

<%@ page import="com.oyzk.entity.Person" %><%--Created by IntelliJ IDEA.User: KingkangDate: 2022/11/29Time: 14:46To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>修改用户</title>
</head>
<body>
<%Person u = (Person)request.getAttribute("user");
%>
<form method="post" action="/user/updateUser"><p>用户Id:<input name="id" value="<%=u.getId()%>" readonly></p><p>用户名:<input name="username" value="<%=u.getUsername()%>"></p><p>地址:<input name="address" value="<%=u.getAddress()%>"></p><p>电话:<input name="phone" value="<%=u.getPhone()%>"></p><p><button type="submit">确认修改</button></p><a href="/user/userList">用户列表</a>
</form>
</body>
</html>

第五步:页面效果

可以自己修改一下表格样式,这里修改了

Spring+SpringMvc+Hibernate(SSH)+bootstrap/Jsp整合相关推荐

  1. spring+springmvc+hibernate 整合

    三大框架反反复复搭了很多次,虽然每次都能搭起来,但是效率不高.最近重新搭了一次,理顺了思路,整理了需要注意的地方,分享出来. 工具:Eclipse(jdk 1.7) spring和hibernate版 ...

  2. Spring+SpringMVC+Hibernate整合(封装CRUD操作)

    前言:当前Web项目开发的框架主流应该非Spring+SpringMVC+Hibernate莫属,不管是工作还是学习中涉及框架技术,首先是要搭建一套运行环境,虽然网上框架整合的教程很多,但我还是输出此 ...

  3. Spring+SpringMVC+Hibernate整合操作数据库 概述

    概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...

  4. Spring+SpringMvc+Hibernate 框架搭建

    2019独角兽企业重金招聘Python工程师标准>>> 框架篇:Spring+SpringMVC+hibernate整合开发 一.建立项目 1.新建一个空项目project 相当于e ...

  5. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

    SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一) 1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee ...

  6. Spring+SpringMVC+Hibernate实现投票/调查问卷网站

    使用SSH架构(Spring+SpringMVC+Hibernate)实现了简单的调查问卷网站.最终效果如图: 下面整理实现流程. 前言 1.SSH架构 SSH是MVC架构的一种实现. Spring. ...

  7. 基于Spring+SpringMvc+Hibernate的咔咔发廊管理系统

    基于Spring+SpringMvc+Hibernate的咔咔发廊管理系统 基于Spring+SpringMvc+Hibernate的家政服务网-java家政服务网 1.包含源程序,数据库脚本.代码和 ...

  8. Spring MVC + Hibernate JPA + Bootstrap 搭建的博客系统

    Spring MVC + Hibernate JPA + Bootstrap 搭建的博客系统 Demo 相关阅读: 1.Spring MVC+Hibernate JPA+ Bootstrap 搭建的博 ...

  9. 基于Spring+SpringMVC+hibernate实现的体检中心管理系统

    源码及论文下载: http://www.byamd.xyz/tag/java/ 摘 要 随着人们生活水平的不断提高,人们的保健意识随之增强,体检已普遍成为人们保健的重要部分.特殊职业的体检.各种职业病 ...

最新文章

  1. Create React App使用
  2. Fedora 30正在接近最终版,但首先它有一些bug需要解决
  3. 学习笔记(三)——CSS进阶
  4. 谈谈怎么做【服务隔离】
  5. 分享一些面试中的经验和心得
  6. mysql中ibdata1过大的问题
  7. Android Studio、 补充知识以及主要组件
  8. SQLAlchemy 教程 —— ORM 方式使用示例
  9. python“-o”命令更改存储位置_程序员的狂欢地一般人的超大存储免费空间和网站空间你要会用用...
  10. 性能测试之二——性能测试的流程
  11. CryptoPunks历史总交易额达1亿美元,近30天交易涨幅超900%
  12. [UVALive 3983] Robotruck
  13. [软件更新]迅雷v5.9.8.1084发布
  14. 16qam matlab 误码率,16QAM理论误码率与实际误码率MATLAB仿真程序
  15. psp模拟器完美字库_安卓PSP模拟器评测:假面骑士超巅峰英雄
  16. 常见文件魔数(幻数)总结
  17. 鸿蒙系统会碎片化吗,鸿蒙系统讲解决安卓碎片化问题,4G流畅度媲美12G!
  18. n (n - 1)的用法
  19. 机器学习之R语言caret包trainControl函数(控制调参)
  20. 10年大数据平台经验,总结出这份数据建设干货(内含多张架构图)

热门文章

  1. java中的线程池有哪些,分别有什么作用?
  2. U盘空闲空间格式化及自动挂载
  3. SCX-4521F一体机MAC驱动
  4. 聚类之高斯混合模型(Gaussian Mixture Model)
  5. 开启Fluter基础之旅四-------表格、动画、手势
  6. 计算机学校迎新条幅,学校迎新条幅内容
  7. 多媒体计算机的图像包括,多媒体计算机常用的图像包括什么
  8. 最简单的讲解:梯度下降法
  9. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
  10. 中国可信计算机走向世界核心技术领