1、进口jar
2、web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="" xmlns:xsi="" xsi:schemaLocation=" "> <!-- 通过上下文參数指定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="" xmlns:xsi="" xmlns:mvc="" xmlns:context="" xmlns:aop="" xmlns:tx="" xsi:schemaLocation=" "> <!-- 注解驱动 --> <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="" xmlns:xsi="" xmlns:mvc="" xmlns:context="" xmlns:aop="" xmlns:tx="" xsi:schemaLocation=" "> <!-- 配置内部资源视图解析器 --> <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" ""> <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、PersonDaopackage 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="> <% 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="批量删除" οnclick="deleteSomePerson();"> <table width="70%" border="1"> <tr> <td> <input type="checkbox" id="topId" οnclick="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>版权声明:本文博客原创文章。博客,未经同意,不得转载。