springMVC+spring+hibernate基本框架的搭建

模型:
这里写图片描述

1web.xml

<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 <display-name>springMVC1</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <!-- Spring配置 -->
  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:config/springAnnotation-*.xml</param-value>
  </context-param>

  <!-- Spring监听 -->
  <listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- SpringMVC配置 -->
  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
        <!-- contextConfigLocation是个固定的参数 -->
            <param-name>contextConfigLocation</param-name>
            <!-- 加载配置文件 -->
            <param-value>classpath*:config/springAnnotation-servlet.xml</param-value>
        </init-param> 
     <load-on-startup>1</load-on-startup> 
  </servlet>

  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!-- 中文编码UTF-8,针对response响应和request的请求 -->
  <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>



    <!--当hibernate+spring配合使用的时候,如果设置了lazy=true,那么在读取数据的时候,当读取了父数据后,
  hibernate 会自动关闭session,这样,当要使用子数据的时候,系统会抛出lazyinit的错误,
  这时就需要使用spring提供的 OpenSessionInViewFilter, OpenSessionInViewFilter主要是保持Session状态
 直到request将全部页面发送到客户端,这样就可以解决延迟加载带来的问题  -->
  <filter>
    <filter-name>openSession</filter-name>
    <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>openSession</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

springAnnotation-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"  
 xmlns:context="http://www.springframework.org/schema/context"  
 xmlns:p="http://www.springframework.org/schema/p"  
 xmlns:mvc="http://www.springframework.org/schema/mvc"  
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 xsi:schemaLocation="http://www.springframework.org/schema/beans  
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
      http://www.springframework.org/schema/context  
      http://www.springframework.org/schema/context/spring-context.xsd  
      http://www.springframework.org/schema/mvc  
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">


    <!-- 这是另外一种开启注解的方式
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
      -->

<!-- 继承MultiActionController来实现根据参数名指定要请求的方法       
      配置url映射到相应的类 
    <bean name="/test/hello" class="com.zhou.web.controller.MultiController">
        <property name="methodNameResolver">
      配置参数方法名,也就是调用什么方法,具体的看22行的配置 
            <ref bean="paramMethodResolver"/>
        </property>
    </bean>

      配置参数方法名,也就是调用什么方法  
    <bean id="paramMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
        <property name="paramName" value="method"></property>   
    </bean> 
   -->


     <!--controller层实现Controller接口
     配置url映射的类
    <bean name="/test/hello1" class="com.zhou.web.controller.HelloWorld" />
        -->

    <!-- 注解扫描包 -->
    <context:component-scan base-package="com.zhou.web.controller" />
    <!-- 开启注解 -->
    <mvc:annotation-driven/>
    <!-- 静态资源访问 -->
     <!-- mapping:映射,location:本地资源路径,一定要是webapp根目录下,注意必须是webapp根目录下的路径。 **,它表示映射/img/下的所有文件 -->
     <mvc:resources location="/img/" mapping="/img/**"/>  
     <mvc:resources location="/js/" mapping="/js/**"/>   

    <!-- 视图解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>


      <!--  配置上传文件-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
          <!-- 默认编码 -->
          <property name="defaultEncoding" value="utf-8" />
          <!--最大上传大小单位字节-->
          <property name="maxUploadSize" value="10485760000" />
          <!--最大缓存字节-->
          <property name="maxInMemorySize" value="40960" />
    </bean>
 </beans>  

springAnnotation-hibernate.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [
<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">
]>

<!--  hibernate5个对象-->
<!-- configLocations,sessionFactory,session ,transaction,Query-->
<beans>
<!-- 配置数据源 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
     <!-- 指定连接数据库的驱动 -->
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
          <!-- 指定连接数据库的URL -->
        <property name="url" value="jdbc:mysql://localhost:3306/test"/>
          <!-- 指定连接数据库的用户名 -->
        <property name="username" value="root"/>
          <!-- 指定连接数据库的密码 -->
        <property name="password" value="root"/>
    </bean>
       <!--配置数据库会话工厂-->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <!-- 引用数据源 -->
        <property name="dataSource" ref="dataSource"/>
        <property name="hibernateProperties">
        <!-- hibernate属性配置 -->
            <props>
            <!-- 指定一种方言, 允许Hibernate针对特定的关系数据库生成优化的SQL -->
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <!--hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构  -->
<!--    在SessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库. 使用 create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema.
取值 validate | update | create | create-drop -->
<!-- update:第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),
以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。
要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。-->
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <!--输出所有SQL语句到控制台  --> 
                <prop key="hibernate.show_sql">true</prop>
                <!--在log和console中打印出更漂亮的SQL。 取值 true | fals-->
                <prop key="hiberante.format_sql">true</prop>
            </props>
        </property>
        <property name="configLocations">
            <list>
                <value>
                 <!--配置映射的类-->
                    classpath*:config/hibernateBean/hibernate.cfg.bean.xml
                </value>
            </list>
        </property>
    </bean>
    <!-- 配置事务容器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <bean id="transactionBese" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">
        <property name="transactionManager" ref="transactionManager"></property>
        <property name="transactionAttributes">
            <props>
            <!--配置事务的方法  -->
            <!-- 定义事务规则   定义当遇到Exception异常时 回滚,- 表示抛出该异常时并回滚,+表示即使抛出该异常事务同样要提交-->
            <!-- PROPAGATION_REQUIRED 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 -->
                <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="modify*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>
                <!-- PROPAGATION_NEVER以非事务方式执行,如果当前存在事务,则抛出异常 -->
                <prop key="get*">PROPAGATION_NEVER</prop>
            </props>
        </property>
    </bean>
</beans>

springAnnotation-core.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [
<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">
]>

<beans>
<!-- 引入需要初始化的bean -->
    <import resource="classpath*:config/bean/springAnnotation-bean.xml"/>
</beans>

springAnnotation-bean.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [
<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">
]>

<beans>
<!--  配置相应的bean ,配置完就自动实例化,实例化对象可以通过注解调用,调用规则是id-->
    <bean id="userDao" class="com.zhou.web.dao.UserDAOImpl">
    <!-- 引用数据库session工程 -->
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <bean id="userService" class="com.zhou.web.service.UserServiceImpl">
        <property name="userDao" ref="userDao"></property>
    </bean>
    <!--parent="transactionBese"  继承transactionBese(事务管理)  -->
    <!--ref="userManagerBase"" 实现userService  -->
    <!--userServiceTrans :该bean 是引用id=userService,实现UserServiceImpl,继承数据库配置的事务id=transactionBese-->
    <bean id="userServiceTrans" parent="transactionBese">
        <property name="target" ref="userService"></property>
    </bean>

</beans>

hibernate.cfg.bean.xml

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <mapping class="com.zhou.web.entity.User"/>
    </session-factory>
</hibernate-configuration>

*dao:基本增删改查*

package com.zhou.web.dao;

import java.util.List;

import com.zhou.web.entity.User;

public interface UserDAO {
    // 添加用户
    public void addUser(User user);

    // 查询用户
    public List<User> getAllUser();

    // 删除用户
    public boolean delUser(String id);

    // 修改用户
    public boolean updateUser(User user);
}



package com.zhou.web.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.SessionFactory;

import com.zhou.web.entity.User;

public class UserDAOImpl implements UserDAO  {

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    @Override
    public void addUser(User user) {
        sessionFactory.getCurrentSession().save(user);
    }

    @Override
    public List<User> getAllUser() {
        String hql = "from User";
        Query query = sessionFactory.getCurrentSession().createQuery(hql);

        return query.list();
    }

    @Override
    public boolean delUser(String id) {
        String hql = "delete User u where u.id=?";
        Query query = sessionFactory.getCurrentSession().createQuery(hql);
        query.setString(0, id);

        return (query.executeUpdate() > 0);
    }

    @Override
    public boolean updateUser(User user) {
        String hql = "update User u set u.userName=?,u.age=? where u.id=?";
        Query query = sessionFactory.getCurrentSession().createQuery(hql);
        query.setString(0, user.getUserName());
        query.setString(1, user.getAge());
        query.setString(2, user.getId());

        return (query.executeUpdate() > 0);
    }

}

service

package com.zhou.web.service;

import java.util.List;

import com.zhou.web.entity.User;

public interface UserService {
    // 添加用户
    public void addUser(User user);
    // 查询用户
    public List<User> getAllUser();
    // 删除用户
    public boolean delUser(String id);
    // 修改用户
    public boolean updateUser(User user);
}



package com.zhou.web.service;

import java.util.List;

import com.zhou.web.dao.UserDAO;
import com.zhou.web.entity.User;

public class UserServiceImpl implements UserService {

    private UserDAO userDao;


    public void setUserDao(UserDAO userDao) {
        this.userDao = userDao;
    }


    @Override
    public void addUser(User user) {
        userDao.addUser(user);
    }


    @Override
    public List<User> getAllUser() {
        return userDao.getAllUser();
    }


    @Override
    public boolean delUser(String id) {
        return userDao.delUser(id);
    }

    @Override
    public boolean updateUser(User user) {
        return userDao.updateUser(user);
    }

}

controller

package com.zhou.web.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

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

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

import com.zhou.web.entity.User;
import com.zhou.web.service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {
       //相当于UserService UserService=new UserServiceImpl();
    //User是个接口,UserServiceImpl是IUser接口的实现类,UserServiceImpl已经在配置文件配置bean了
    //注解引入实例化对象
    @Resource(name="userServiceTrans")
    private UserService userServiceTrans;


    @RequestMapping("/addUser")
    public String addUser(User user){
        System.out.println("1111111");
        userServiceTrans.addUser(user);
        return "redirect:/user/getAllUser";
    }

    @RequestMapping("/getAllUser")
    public String getAllUser(HttpServletRequest request){
        List<User> user = userServiceTrans.getAllUser();

        request.setAttribute("user", user);

        return "/userList";
    }

    @RequestMapping("/delUser")
    public void delUser(String id,HttpServletResponse response){
        String result = "{\"result\":\"error\"}";
        if(userServiceTrans.delUser(id)){
            result = "{\"result\":\"success\"}";
        }
        PrintWriter out = null;
        response.setContentType("application/json");

        try {
            out = response.getWriter();
            out.write(result);
        } catch (IOException e) {
            e.printStackTrace();
        }
//      return "redirect:/user/getAllUser";

    }
    @RequestMapping("/updateUser")
    public String updateUser(User user,HttpServletResponse response) {
        String result = "{\"result\":\"error\"}";

        if(userServiceTrans.updateUser(user)){
            result = "{\"result\":\"success\"}";
        }
        PrintWriter out = null;
        response.setContentType("application/json");

        try {
            out = response.getWriter();
            out.write(result);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "redirect:/user/getAllUser";
    }
}

entity

package com.zhou.web.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;
//实体User映射到表T_USER
@Entity
@Table(name="T_USER")
public class User {

    @Id //数据库中的主键生成器,值为uuid
    @GeneratedValue(generator = "system-uuid")  
    @GenericGenerator(name = "system-uuid", strategy = "uuid") 
    @Column(length=32)
    private String id;//id

    @Column(length=32)
    private String userName;//用户名

    @Column(length=32)
    private String age;//年龄

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}

列表页面

<script type="text/javascript">
function del(id){
    $.get("/springMVC1/user/delUser?id=" + id,function(data){
        if("success" == data.result){
            window.location.reload(); 
        }else{
            alert("删除失败!")
        }
    });
}

</script>
</head>
<body>

        <body>
            <tr>
                   <td><th>id</th> </td>
                   <td><th>姓名</th></td>
                   <td><th>年龄</th></td>
                   <td><th>编辑</th></td>
                   <td><th> <a href="../addUser.jsp">添加</a></th></td>
            </tr>
            <c:if test="${!empty user }">
            <c:forEach items="${user }" var="u">
            <form name="userForm" action="/springMVC1/user/updateUser">
            <tr><td><th><input type="text" name="id" value="${u.id }"><th></td>
                <td><th><input type="text" name="userName" value="${u.userName }"><th></td>
                <td><th><input type="text" name="age" value="${u.age }"><th></td>
                <td><th>
                   <input type="submit" name="submit" value="修改">
                    <a href="javascript:del('${u.id }')">删除</a><th>
                </td>
            </tr>
            </form>
            </c:forEach>
            </c:if>
        </body>
</body>

添加页面

<script type="text/javascript">
    function addUser(){
        var form = document.forms[0];
        form.action="/springMVC1/user/addUser";
        form.method="post";
        form.submit();
    }
</script>
</head>
<body>
    <h>添加用户</h>
    <form name="userForm" action="">
        姓名:<input type="text" name="userName">
        年龄:<input type="text" name="age">
        <input type="button" value="添加" onclick="addUser()">

    </form>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
**smart-web2** 是一套的OA系统;包含了流程设计器,表单设计器,权限管理,简单报表管理等功能; 系统后端基于SpringMVC+Spring+Hibernate框架,前端页面采用JQuery+Bootstrap等主流技术; 流程引擎基于Snaker工作流;表单设计器基于雷劈网WEB表单设计器。 系统主要功能有: >1.系统管理 >>系统管理包含有:基础信息管理、系统权限管理、版本管理、子系统管理。 > >2.流程管理 >>流程管理包含有:流程设计器、流程实例管理、流程页面模版管理等功能。 > >3.表单管理 >>表单管理包含有:表单设计器、表管理、表单帮助信息管理等。 > >4.我的办公 >>我的待办、我的已办; > >5.简单报表管理 >>简单报表管理包含:简单报表的设计、报表管理等。 使用说明 ======= ------- ---数据库MySQL5.6以上 <br/> ---下载后把data目录下的smart-web2.zip解压;然后解压出来的脚本文件(“smart-web2.sql”)导入到mysql数据库中;注:建库时,字符集编码为:utf8(utf8_general_ci)<br/> ---修改配置文件“jdbc.properties”,改成对应数据库的用户名和密码 <br/> ---“sysconfig.properties”系统配置文件;需要修改“root.dir”属性,设置为系统上传文件时用来存放的根目录 <br/> ----系统管理员用户名为:admin;密码为:123456 <br/> ----linux类系统需要修改mysql的配置文件,改为数据库表名不区分大小写(lower_case_table_names=1) <br /> 环境要求 ------------ 1.jdk要求1.7及以上;<br /> 2.tomcat6或tomcat7; <br /> 3.eclipse版本4.4以上;<br /> 4.浏览器要求:IE8及以上(最理想的是IE10及以上),火狐,chrome等。<br />

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值