基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)

基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)

大家好,又见面了,我是全栈君。

1、导入jar

基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)

基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)

基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)

2、web.xml配置

<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app version=”2.4″
 xmlns=”http://java.sun.com/xml/ns/j2ee
 xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance
 xsi:schemaLocation=”http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd“>
 
 <!– 通过上下文參数指定spring配置文件的位置 –>
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:beans.xml</param-value>
 </context-param>
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 
 <servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:springMVC.xml</param-value>
  </init-param>
 </servlet>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>/</url-pattern>
 </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
3、bean.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:mvc=”http://www.springframework.org/schema/mvc
 xmlns:context=”http://www.springframework.org/schema/context
 xmlns:aop=”http://www.springframework.org/schema/aop
 xmlns:tx=”http://www.springframework.org/schema/tx
 xsi:schemaLocation=”http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-3.0.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd “>
 <!– 注解驱动 –>
 <mvc:annotation-driven/>
 <!– 组件扫描 –>
 <context:component-scan base-package=”cn.itcast.springmvc”></context:component-scan>
 
 <!– 定义数据源 –>
 <bean id=”ds” class=”com.mchange.v2.c3p0.ComboPooledDataSource”>
  <property name=”driverClass” value=”com.mysql.jdbc.Driver”></property>
  <property name=”jdbcUrl” value=”jdbc:mysql://localhost:3306/springmvc”></property>
  <property name=”user” value=”root”></property>
  <property name=”password” value=”123456″></property>
  <property name=”initialPoolSize” value=”10″></property>
  <property name=”maxPoolSize” value=”50″></property>
  <property name=”minPoolSize” value=”10″></property>
 </bean>
 
 <bean id=”sessionFactory” class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
  <property name=”dataSource” ref=”ds”></property>
  
  <!– hibernate映射文件的位置 –>
  <property name=”mappingDirectoryLocations”>
   <value>classpath:cn/itcast/springmvc/domain/</value>
  </property>
  <property name=”hibernateProperties”>
   <props>
    <prop key=”hibernate.Dialect”>org.hibernate.dialect.MySQLInnoDBDialect</prop>
    <prop key=”hibernate.show_sql”>true</prop>
    <prop key=”hibernate.hbm2ddl.auto”>update</prop>
   </props>
  </property>
 </bean>
 
 <!– 配置事物管理器 –>
 <bean id=”txManager” class=”org.springframework.orm.hibernate3.HibernateTransactionManager”>
  <property name=”sessionFactory” ref=”sessionFactory”/>
 </bean>
 
 <!– 配置事物的传播特性 (事物通知)–>
 <tx:advice id=”txAdvice” transaction-manager=”txManager”>
  <tx:attributes>
   <tx:method name=”save*” propagation=”REQUIRED”/>
   <tx:method name=”delete*” propagation=”REQUIRED”/>
   <tx:method name=”update*” propagation=”REQUIRED”/>
   <tx:method name=”find*” read-only=”true”/>
   <tx:method name=”*” read-only=”true”/>
  </tx:attributes>
 </tx:advice>
 
 <aop:config>
  <aop:advisor pointcut=”execution(* *..*ServiceImpl.*(..))” advice-ref=”txAdvice”/>
  <!–
   <aop:advisor advice-ref=”txAdvice” pointcut=”execution(* *..*ServiceImpl.*(..))”/>
   –>
 </aop:config>
</beans>

4、SpringMVC.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:mvc=”http://www.springframework.org/schema/mvc
 xmlns:context=”http://www.springframework.org/schema/context
 xmlns:aop=”http://www.springframework.org/schema/aop
 xmlns:tx=”http://www.springframework.org/schema/tx
 xsi:schemaLocation=”http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-3.0.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd “>
 
 <!– 配置内部资源视图解析器 –>
 <bean class=”org.springframework.web.servlet.view.InternalResourceViewResolver”>
  <property name=”prefix” value=”/WEB-INF/jsp/”></property>
  <property name=”suffix” value=”.jsp”></property>
 </bean>   
</beans>

5、domain和hbm.xml配置

package cn.itcast.springmvc.domain;

public class Person {

 private String id;
 private String name;
 private Integer age;
 private String address;
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 public String getAddress() {
  return address;
 }
 public void setAddress(String address) {
  this.address = address;
 }
}

—————————-

Person.hbm.xml

<?

xml version=”1.0″?>
<!DOCTYPE hibernate-mapping PUBLIC
    “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
    “http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd“>
<hibernate-mapping>
 <class name=”cn.itcast.springmvc.domain.Person” table=”persons”>
  <id name=”id” column=”id” type=”string”>
   <generator class=”uuid” />
  </id>
  <property name=”name” column=”name” type=”string” />
  <property name=”age” column=”age” type=”integer” />
  <property name=”address” column=”address” type=”string” />
 </class>
</hibernate-mapping>
6、PersonDao

package cn.itcast.springmvc.dao;

import java.util.List;

import cn.itcast.springmvc.domain.Person;

public interface IPersonDao {
 public Person findPersonById(String id);
 public List<Person> findAllPerson();
 public void savePerson(Person p);
 public void deletePersonById(String id);
 public void updatePerson(Person p);
}

7、PersonDaoImpl

package cn.itcast.springmvc.dao;

import java.util.List;

import javax.annotation.Resource;

import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;

import cn.itcast.springmvc.domain.Person;

@Repository(value=”personDao”)
public class PersonDaoImpl implements IPersonDao {
 
 @Resource(name=”sessionFactory”)
 private SessionFactory sf;

 public Person findPersonById(String id) {
  return (Person) sf.getCurrentSession().createQuery(“from Person where id = ‘” + id + “‘”).list().get(0);
 }

 public void savePerson(Person p) {
  sf.getCurrentSession().save(p);
 }

 public void deletePersonById(String id) {
  Person p = new Person();
  p.setId(id);
  //sf.getCurrentSession().delete(id, Person.class);
  sf.getCurrentSession().delete(p);
 }

 public List<Person> findAllPerson() {
  return sf.getCurrentSession().createQuery(“from Person”).list();
 }

 public void updatePerson(Person p) {
  sf.getCurrentSession().update(p);
 }

}

8、IPersonService

package cn.itcast.springmvc.service;

import java.util.List;

import cn.itcast.springmvc.domain.Person;

public interface IPersonService {
 public Person findPersonById(String id);
 public List<Person> findAllPerson();
 public void savePerson(Person p);
 public void deletePersonById(String id);
 public void updatePerson(Person p);
}

9、PersonServiceImpl

package cn.itcast.springmvc.service;

import java.util.List;

import javax.annotation.Resource;

import cn.itcast.springmvc.dao.IPersonDao;
import cn.itcast.springmvc.domain.Person;

@org.springframework.stereotype.Service(value=”personService”)
public class PersonServiceImpl implements IPersonService {
 
 @Resource(name=”personDao”)
 private IPersonDao personDao;

 public Person findPersonById(String id) {
  return personDao.findPersonById(id);
 }

 public void savePerson(Person p) {
  personDao.savePerson(p);
 }

 public void deletePersonById(String id) {
  personDao.deletePersonById(id);
 }

 public List<Person> findAllPerson() {
  return personDao.findAllPerson();
 }

 public void updatePerson(Person p) {
  personDao.updatePerson(p);
 }

}

10、PersonController

 

package cn.itcast.springmvc.controller;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import cn.itcast.springmvc.domain.Person;
import cn.itcast.springmvc.service.IPersonService;

@Controller
@RequestMapping(value = “/person”)
public class PersonController {

 @Resource(name = “personService”)
 private IPersonService personService;

 @RequestMapping(value = “/findPersonById”)
 public String findPersonById(String id) {
  Person p = personService.findPersonById(id);
  System.out.println(p);
  return “showPerson”;
 }

 @RequestMapping(value = “/savePersonUI”)
 public String savePersonUI() {
  return “savePerson”;
 }

 @RequestMapping(value = “/savePerson”)
 public String savePerson(Person p) {
  personService.savePerson(p);
  System.out.println(p);
  // 重定向
  return “redirect:/person/findAllPerson”;
 }

 @RequestMapping(value = “/deletePersonById”)
 public String deletePersonById(String id) {
  personService.deletePersonById(id);

  // 重定向
  return “redirect:/person/findAllPerson”;
 }

 // 批量删除
 @RequestMapping(value = “/deletePersonByIds”)
 public String deletePersonByIds(String ids) {
  ids = ids.substring(0, ids.length() – 1);
  String[] idss = ids.split(“,”);
  for (String id : idss) {
   personService.deletePersonById(id);
  }
  // 重定向
  return “redirect:/person/findAllPerson”;
 }

 @RequestMapping(value = “/findAllPerson”)
 public String findAllPerson(HttpServletRequest req) {
  List<Person> persons = personService.findAllPerson();
  req.setAttribute(“persons”, persons);
  return “personList”;
 }

 @RequestMapping(value = “/updatePersonUI”)
 public String updatePersonUI(HttpServletRequest req, String id) {
  Person p = personService.findPersonById(id);
  req.setAttribute(“p”, p);
  return “updatePerson”;
 }

 @RequestMapping(value = “/updatePerson”)
 public String updatePerson(Person p) {
  personService.updatePerson(p);
  // 重定向
  return “redirect:/person/findAllPerson”;
 }
}

11、personList.jsp

<%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%>
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”%>
<%
 String path = request.getContextPath();
 String basePath = request.getScheme() + “://”
   + request.getServerName() + “:” + request.getServerPort()
   + path + “/”;
%>
<html>
 <head>
  <title>personList.jsp</title>
  <script type=”text/javascript”>
   function selectOrUnslect(){
    var ids = document.getElementsByName(‘ids’);
    if(document.getElementById(‘topId’).checked == true){
     for(var i=0;i<ids.length;i++){
      ids[i].checked = true;
     }
    }else{
     for(var i=0;i<ids.length;i++){
      ids[i].checked = false;
     }
    }
   }
   
   function deleteSomePerson(){
    var ids = document.getElementsByName(‘ids’);
    var strIds = ”;
    for(var i=0;i<ids.length;i++){
     if(ids[i].checked == true){
      strIds += ids[i].value + ‘,’;
     }
    }
    window.location = ‘<%=path%>/person/deletePersonByIds?ids=’ + strIds;
   }
  </script>
 </head>
 <body>
  <h3>
   用户列表页面
  </h3>
  <a href=”<%=path %>/person/savePersonUI”>加入用户</a><br>
  
  <input type=”button” value=”批量删除” onclick=”deleteSomePerson();”>
  <table width=”70%” border=”1″>
   <tr>
    <td>
     <input type=”checkbox” id=”topId” onclick=”selectOrUnslect();”>
    </td>
    <td>
     name
    </td>
    <td>
     age
    </td>
    <td>
     address
    </td>
    <td>
     删除
    </td>
    <td>
     更新
    </td>
   </tr>
   <c:forEach items=”${persons}” var=”p”>
    <tr>
     <td>
      <input type=”checkbox” name=”ids” value=”${p.id }”>
     </td>
     <td>
      ${p.name }
     </td>
     <td>
      ${p.age }
     </td>
     <td>
      ${p.address }
     </td>
     <td>
      <a href=”<%=path %>/person/deletePersonById?id=${p.id }”>删除</a>
     </td>
     <td>
      <a href=”<%=path %>/person/updatePersonUI?id=${p.id }”>更新</a>
     </td>
    </tr>
   </c:forEach>
  </table>
 </body>
</html>
12、savePerson.jsp

<%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;
%>
<html>
  <head>
    <title>savePerson.jsp</title>
  </head>
  <body>
  <h3>加入用户页面</h3>
    <form action=”<%=path %>/person/savePerson” method=”post”>
     <table>
      <tr>
       <td>name:</td>
       <td><input type=”text” name=”name”></td>
      </tr>
      <tr>
       <td>age</td>
       <td><input type=”text” name=”age”></td>
      </tr>
      <tr>
       <td>address</td>
       <td><input type=”text” name=”address”></td>
      </tr>
      <tr>
       <td><input type=”submit” value=”提交”></td>
       <td><input type=”reset” value=”重置”></td>
      </tr>
     </table>
    </form>
  </body>
</html>
13、showPerson.jsp

<%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;
%>

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
  <head>
    <base href=”<%=basePath%>”>
   
    <title>My JSP ‘showPerson.jsp’ starting page</title>
   
 <meta http-equiv=”pragma” content=”no-cache”>
 <meta http-equiv=”cache-control” content=”no-cache”>
 <meta http-equiv=”expires” content=”0″>   
 <meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″>
 <meta http-equiv=”description” content=”This is my page”>
 <!–
 <link rel=”stylesheet” type=”text/css” href=”styles.css”>
 –>

  </head>
 
  <body>
    This is showPerson.jsp
  </body>
</html>

14、updatePerson.jsp

<%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;
%>
<html>
  <head>
    <title>savePerson.jsp</title>
  </head>
  <body>
    <h3>更新用户页面</h3>
    <form action=”<%=path %>/person/updatePerson” method=”post”>
     <input type=”hidden” name=”id” value=”${p.id}”>
     <table>
      <tr>
       <td>name:</td>
       <td><input type=”text” name=”name” value=”${p.name }”></td>
      </tr>
      <tr>
       <td>age</td>
       <td><input type=”text” name=”age” value=”${p.age }”></td>
      </tr>
      <tr>
       <td>address</td>
       <td><input type=”text” name=”address” value=”${p.address }”></td>
      </tr>
      <tr>
       <td><input type=”submit” value=”提交”></td>
       <td><input type=”reset” value=”重置”></td>
      </tr>
     </table>
    </form>
  </body>
</html>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115483.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 磁盘管理无法连接虚拟磁盘服务_diskpart虚拟磁盘服务错误

    磁盘管理无法连接虚拟磁盘服务_diskpart虚拟磁盘服务错误满意答案在ParallelsDesktop中,将新的空白虚拟硬盘添加到虚拟机配置后,对于安装在虚拟机中的操作系统来说它将不可见,直至将其初始化。初始化Windows中的新虚拟硬盘要初始化Windows虚拟机操作系统中的新虚拟硬盘,需要可用的磁盘管理工具。例如,在Windows7和WindowsXP中可以通过以下步骤访问该工具:·在Windows7中,点击“开始”>“控制面板”&…

  • 腾讯课堂下载回放视频课程记录_腾讯课堂回放下载

    腾讯课堂下载回放视频课程记录_腾讯课堂回放下载腾讯课堂下载回放视频对于爱学习的童鞋来说,能把腾讯课堂上的视频下载下来,随时随地听课,那该有多好啊!但是,腾讯课堂采取了多种加密措施,导致下载视频难上加难……要想下载视频,必须分为两部分进行,先获取视频的m3u8地址,然后用m3u8地址下载视频。第一步,获取视频m3u8地址:下面用两款热门浏览器:360安全浏览器和谷歌浏览器进行演示。①360浏览器:…

    2022年10月26日
  • idea2021 mybatiscodehelper2.9 激活码【2021免费激活】

    (idea2021 mybatiscodehelper2.9 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0YQJ1128OW-eyJsaWNlb…

  • idea 启动docker镜像「建议收藏」

    idea 启动docker镜像「建议收藏」idea启动docker镜像(基于docker镜像已经打好)也是第一次使用。欢迎补充哈~

  • intellij idea 2021激活码(最新序列号破解)

    intellij idea 2021激活码(最新序列号破解),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • Vue双向绑定原理(4改)

    Vue双向绑定原理(4改)Vue双向绑定的原理 双向数据绑定是通过数据劫持、结合、发布订阅,的方式来实现的,也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变; 使用watch来连接数据与视图,当数据发生变化时,触发通知所有该数据的对象进行更新。这!就是vue的双向绑定原理,你学会了吗?…

    2022年10月18日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号