zoukankan      html  css  js  c++  java
  • springMvc+spring+mybatis集成的mvc模型

    1  项目总体结构





    2  web.xml的配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 	
    	xmlns:javaee="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_2_5.xsd">
      <!-- 
        spring root配置文件的位置
       -->
      <context-param>
      	<param-name>contextConfigLocation</param-name>
      	<param-value>classpath:applicationContext.xml</param-value>
      </context-param>	
      <!-- 通过监听器 在上下文被加载时 自动启动
           并且创建 WebApplicationContext对象 去加载spring中所有的bean -->
      <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>
      	<load-on-startup>1</load-on-startup>
      	<!-- 读取springmvc的配置文件 -->
      	<init-param>
    	  	<param-name>contextConfigLocation</param-name>
    	  	<param-value>/WEB-INF/applicationServlet.xml</param-value>
      	</init-param>
      </servlet>
      <servlet-mapping>
        <servlet-name>SpringMvc</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    

    3 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: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-4.2.xsd
    	http://www.springframework.org/schema/context
    	http://www.springframework.org/schema/context/spring-context-4.2.xsd
    	http://www.springframework.org/schema/aop
    	http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
    	http://www.springframework.org/schema/tx
    	http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
    	">
    	<!-- 扫描除了@Controller的注解 -->
    	<context:component-scan base-package="com.odin.itms.*">
    		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    	</context:component-scan>
    	
    	<!-- 加载jdbc文件 -->
    	<context:property-placeholder location="classpath:jdbc.properties"/>
    	
    	<!-- 连接数据库,获取数据源 -->
    	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    		<property name="url" value="${url}"></property>
    		<property name="driverClassName" value="${driverClassName}"></property>
    		<property name="username" value="${uname}"></property>
    		<property name="password" value="${password}"></property>
    	</bean>
    	
    	<!--集成mybatis  -->
    	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    		<property name="dataSource" ref="dataSource"></property>
    	</bean>
    	
    	<!-- 创建SqlSessionTemplate用于控制事务自动提交  也可以是用 SqlSession中的所有方法-->
    	<bean id="sqlTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    		<constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>
    	</bean>
    	
    	<!-- 配置接口映射扫描工具类 -->
    	<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    		<property name="basePackage" value="com.odin.itms.*.mapper"></property>
    		<property name="beanName" value="sqlSessionFactory"></property>
    	</bean>
    	
    	<!-- 配置全局事务管理器 -->
    	<bean id="dataSourceTx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource" ref="dataSource"></property>
    	</bean>
    	
    	<!-- 配置事务的消息 -->
    	<tx:advice id="txAdvise" transaction-manager="dataSourceTx">
    		<tx:attributes>
    			<tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED"/>
    			<tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED"/>
    			<tx:method name="delete*" isolation="DEFAULT" propagation="REQUIRED"/>
    			<tx:method name="*" read-only="true"/>
    		</tx:attributes>
    	</tx:advice>
    	
    	<aop:config>
    		<aop:pointcut expression="execution(* com.odin.itms.*.service.*(..))" id="pointCutRef"/>
    		<aop:advisor advice-ref="txAdvise" pointcut-ref="pointCutRef"/>
    	</aop:config>
    </beans>

    4 applicatonServlet.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:aop="http://www.springframework.org/schema/aop"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xmlns:mvc="http://www.springframework.org/schema/mvc"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans 
    	http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    	http://www.springframework.org/schema/context
    	http://www.springframework.org/schema/context/spring-context-4.2.xsd
    	http://www.springframework.org/schema/aop
    	http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
    	http://www.springframework.org/schema/tx
    	http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
    	http://www.springframework.org/schema/mvc
    	http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd"
    >
    	<!-- 配置springmvc  加载含有@Controller的bean -->
    	<context:component-scan base-package="com.odin.itms.*">
    		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    	</context:component-scan>
    	<!-- 启动注解驱动 -->
    	<mvc:annotation-driven></mvc:annotation-driven>
    </beans>

    5 jdbc.properties的配置

    url=jdbc:oracle:thin:@localhost:1521:orcl
    driverClassName=oracle.jdbc.OracleDriver
    uname=zt
    password=zt
    

    6 login.jsp代码

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    	<form action="login/login.do" method="post">
    		用户:<input type="text" name="userName"/>
    		<br />
    		密码:<input type="password" name="password"/>
    		<br/>
    		<input type="submit" value="登录"/>
    		<input type="reset"/>
    	</form>
    </body>
    </html>

    7 controller层的代码

    package com.odin.itms.system.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.odin.itms.system.entity.User;
    import com.odin.itms.system.service.UserService;
    
    @Controller
    @RequestMapping(value="login")
    public class LoginController {
    
    	@Autowired
    	public UserService userService;
    	
    	@RequestMapping("/login")
    	public String login(String userName,String password,ModelMap model){
    		String msg="";
    		User user=userService.login(userName);
    		if(user==null){
    			msg="用户不存在";
    			model.addAttribute("msg", msg);
    			return "forward:/error.jsp";
    		}else if(user!=null){
    			String pw=user.getPassword();
    			if(pw!=null&&!"".equals(pw)){
    				if(pw.equals(password)){
    					msg="登录成功";
    					model.addAttribute("msg", msg);
    				}else{
    					model.addAttribute("msg", msg);
    					msg="账号或密码错误";
    				}
    			}else{
    				model.addAttribute("msg", msg);
    				msg="账号或密码错误";
    			}
    		}
    		return "forward:/error.jsp";
    	}
    }
    


    8 service层代码(dao层类似)

        1 实现类

    package com.odin.itms.system.service.impl;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.odin.itms.system.dao.UserDao;
    import com.odin.itms.system.entity.User;
    import com.odin.itms.system.service.UserService;
    
    @Service
    public class UserServiceImpl implements UserService {
    
    	@Autowired
    	public UserDao userDao;
    	public User login(String username) {
    		return userDao.login(username);
    	}
    
    }
    

    2 接口

    package com.odin.itms.system.service;
    
    import com.odin.itms.system.entity.User;
    
    public interface UserService {
    
    	public User login(String username);
    }
    


    9 mapper层代码

    package com.odin.itms.system.mapper;
    
    import org.apache.ibatis.annotations.Select;
    
    import com.odin.itms.system.entity.User;
    
    public interface UserMapper {
    
    	@Select("select * from use t where username=#{userName}")
    	public User login(String userName);
    }
    

  • 相关阅读:
    Windows开发,关于通过写代码加载PDB的那些事
    从FreeBSD里面看到的网络协议列表,感觉可以保存一下
    听了几段《双投唐》
    ReactOS 无法显示中文的问题
    ReactOS 代码更新后的编译安装
    都什么年代了,怎么还那种德行
    假冒不伪劣
    ollvm 使用——“Cannot open /dev/random”错误的解决方法
    ollvm 编译
    C/C++ 吐槽第一期:你最讨厌的C/C++里面的数据类型是什么
  • 原文地址:https://www.cnblogs.com/t0404/p/10290977.html
Copyright © 2011-2022 走看看