基于注解的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>

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

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

(0)
上一篇 2022年2月3日 下午7:00
下一篇 2022年2月3日 下午8:00


相关推荐

  • 查理德弗曼学习法

    查理德弗曼学习法费曼学习法的灵感源于诺贝尔物理奖获得者理查德·费曼(RichardFeynman),运用费曼技巧,你只需花上20分钟就能深入理解知识点,而且记忆深刻,难以遗忘。知识有两种类型,我们绝大多数人关注的都是错误的那类。第一类知识注重了解某个事物的名称。第二类知识注重了解某件事物。这可不是一回事儿。著名的诺贝尔物理学家理查德·费曼(RichardFeynman)能够理解这二者间的差别,这也是他成功最重要的原因之一。事实上,他创造了一种学习方法,确保他会比别人对事物了解的更透彻。费曼学习法可以简化为四个单词:C

    2022年6月14日
    40
  • SVNclient安装与使用

    SVNclient安装与使用

    2021年12月9日
    70
  • rinetd端口转发工具

    rinetd端口转发工具前言环境 Centos7 9rinetd tar gz 在生产环境中 为了网络安全 我们需要进行端口转发 而 rinetd 是一款很好用的端口转发工具 下面我们就来讲解一下如何使用 rinetd 来实现端口转发 rinetd 的下载地址 http www rinetd com download rinetd tar gz 什么是 rinetdrinetd 一款简单 方便的端口映射工具 帮助开发人员可快速进行内网机器的端口映射 转发 重定向 安装 rinetd 下载好 rinetd tar gz 并上传到服务器 解

    2026年3月18日
    2
  • hdu2058_upa68ha

    hdu2058_upa68ha主要是对于等差数列求和公式进行变换,dfs果断超时了;下面这个有比较详细的解释;(https://blog.csdn.net/qq_32767041/article/details/53457796)

    2022年10月2日
    4
  • Web services 介绍

    Web services 介绍Web nbsp services 就是一个应用程序 它向外界暴露出一个能够通过 Web nbsp 进行调用的 API 这就是说 你能够用编程的方法通过 Web 来调用这个应 nbsp 用程序 Web nbsp services 是建立可互操作的分布式应用程序的新平台 Web nbsp services 平台是一套标准 它定义了应用程序如何在 Web 上实现互操作性 nbsp 你可以用任何你喜欢的语言 在任何你喜欢的平台上写 Web nbsp service 只 nbsp 要我们可以通过 Web

    2026年3月18日
    1
  • PDB文件格式「建议收藏」

    PDB文件格式「建议收藏」PDBFiles:WhatEveryDeveloperMustKnowhttp://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspxPDB文件:每个开发人员都必须知道的一什么是PDB文件大部分的开发人员应该…

    2022年6月2日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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