码迷,mamicode.com
首页 > 编程语言 > 详细

基于spring2.5的采用XML配置的spring MVC项目

时间:2018-05-01 23:19:59      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:index   模块   itext   ppi   val   out   javase   Servle   mes   

 

 

Spring  MVC 背景介绍

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

注:本项目全部基于XML配置。同时,集成了hibernate。采用的是:spring MVC+hibernate+spring的开发架构。 技术分享图片

:转载为尚学堂资料。

 

  1. 建立web项目
  2. 导入jar包(spring.jar, spring-webmvc.jar, commons-logging.jar。其他jar包为hibernate相关jar包)
  3. 修改web.xml如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
        xmlns="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">>
        <servlet>
            <servlet-name>dispatcherServlet</servlet-name>
            <servlet-class>
                org.springframework.web.servlet.DispatcherServlet
            </servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/hib-config.xml,/WEB-INF/web-config.xml,/WEB-INF/service-config.xml,/WEB-INF/dao-config.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcherServlet</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
    </web-app>
  4. 增加web-config.xml(这里包含spring mvc相关的相关配置)
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        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-2.5.xsd">
        
        <!-- Controller方法调用规则定义 -->
        <bean id="paraMethodResolver"
            class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
            <property name="paramName" value="action"/>
            <property name="defaultMethodName" value="list"/>
        </bean>
      
       <!-- 页面View层基本信息设定 -->
        <bean id="viewResolver"
              class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass"
                value="org.springframework.web.servlet.view.JstlView"/>
            <!--<property name="prefix" value="/myjsp/"/>-->
            <property name="suffix" value=".jsp"/>
        </bean>
    
    <!-- servlet映射列表,所有控制层Controller的servlet在这里定义 -->
        <bean id="urlMapping"
              class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">
                <props>
                    <prop key="user.do">userController</prop>
                </props>
            </property>
        </bean>
    
    <bean id="userController" class="com.sxt.action.UserController">
        <property name="userService" ref="userService"></property>
    </bean>
    </beans>
  5. 在WEB-INF下增加service-config.xml(这里包含service层类的相关配置)
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        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-2.5.xsd">
    
        <bean id="userService" class="com.sxt.service.UserService">
            <property name="userDao" ref="userDao"></property>
        </bean>
        
    </beans>

     

  6. 在WEB-INF下增加hib-config.xml(这里包含spring集成hibernate相关的配置)
    <?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:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
      http://www.springframework.org/schema/context   
       http://www.springframework.org/schema/context/spring-context-2.5.xsd
    ">
        <context:component-scan  base-package="com.sxt"/>   
        <!-- 支持aop注解 -->
        <aop:aspectj-autoproxy />
        
            
        <bean id="dataSource"  
                class="org.apache.commons.dbcp.BasicDataSource">  
                <property name="driverClassName"  
                    value="com.mysql.jdbc.Driver">  
                </property>  
                <property name="url" value="jdbc:mysql://localhost:3306/myhib"></property>  
                <property name="username" value="root"></property>  
                <property name="password" value="123456"></property>
        </bean>  
    
       <bean id="sessionFactory"  
           class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
               <property name="dataSource">  
                   <ref bean="dataSource" />  
               </property>
               <property name="hibernateProperties">  
                   <props>  
                       <!-- key的名字前面都要加hibernate. -->
                       <prop key="hibernate.dialect">  
                           org.hibernate.dialect.MySQLDialect  
                       </prop>  
                       <prop key="hibernate.show_sql">true</prop>
                       <prop key="hibernate.hbm2ddl.auto">update</prop>
                   </props>
               </property>
            <property name="packagesToScan">
                <value>com.sxt.po</value>
            </property>
       </bean>  
    
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate" >
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    
    <!--配置一个JdbcTemplate实例-->  
    <bean id="jdbcTemplate"  class="org.springframework.jdbc.core.JdbcTemplate">   
         <property name="dataSource" ref="dataSource"/>   
    </bean>  
    
    
    <!-- 配置事务管理 -->
    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <tx:annotation-driven transaction-manager="txManager" />
    <aop:config> 
        <aop:pointcut expression="execution(public * com.sxt.service.impl.*.*(..))" id="businessService"/> 
        <aop:advisor advice-ref="txAdvice" pointcut-ref="businessService" /> 
    </aop:config> 
    <tx:advice id="txAdvice" transaction-manager="txManager" > 
        <tx:attributes> 
            <tx:method name="find*"  read-only="true" propagation="NOT_SUPPORTED"  /> 
            <!-- get开头的方法不需要在事务中运行 。 
            有些情况是没有必要使用事务的,比如获取数据。开启事务本身对性能是有一定的影响的--> 
            <tx:method name="*"/>    <!-- 其他方法在实务中运行 --> 
        </tx:attributes> 
    </tx:advice> 
    
    </beans>

     

  7. 在WEB-INF下增加dao-config.xml(这里包含dao层类的相关配置)
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        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-2.5.xsd">
        
        <bean id="userDao" class="com.sxt.dao.UserDao">
          <property name="hibernateTemplate" ref="hibernateTemplate"></property>
        </bean>
    </beans>

     

  8. 建立相关类和包结构,如下图所示:技术分享图片

     

  9. 各类代码:
    package com.sxt.po;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    
    @Entity
    public class User {
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private int id;
        private String uname;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getUname() {
            return uname;
        }
        public void setUname(String uname) {
            this.uname = uname;
        }
    }
    package com.sxt.dao;
    
    import org.springframework.orm.hibernate3.HibernateTemplate;
    
    import com.sxt.po.User;
    
    public class UserDao {
        private HibernateTemplate hibernateTemplate;
        
        public void add(User u){
            System.out.println("UserDao.add()");
            hibernateTemplate.save(u);
        }
    
        public HibernateTemplate getHibernateTemplate() {
            return hibernateTemplate;
        }
    
        public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
            this.hibernateTemplate = hibernateTemplate;
        }
        
    }
    package com.sxt.service;
    
    import com.sxt.dao.UserDao;
    import com.sxt.po.User;
    
    public class UserService {
        
        private UserDao userDao;
        
        public void add(String uname){
            System.out.println("UserService.add()");
            User u = new User();
            u.setUname(uname);
            userDao.add(u);
        }
    
        public UserDao getUserDao() {
            return userDao;
        }
    
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
        
    }
    package com.sxt.action;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    import com.sxt.service.UserService;
    
    public class UserController implements Controller {
    
        private UserService userService;
        
        @Override
        public ModelAndView handleRequest(HttpServletRequest req,
                HttpServletResponse resp) throws Exception {
            System.out.println("HelloController.handleRequest()");
            req.setAttribute("a", "aaaa");
            userService.add(req.getParameter("uname")); 
            return new ModelAndView("index");
        }
    
        public UserService getUserService() {
            return userService;
        }
    
        public void setUserService(UserService userService) {
            this.userService = userService;
        }
    
        
    }

    1.       运行测试:

    http://locahost:8080/springmvc01/user.do?uname=zhangsan

     

    结果:数据库中增加zhangsan的记录。页面跳转到index.jsp上,显示

 
 
 
 

基于spring2.5的采用XML配置的spring MVC项目

标签:index   模块   itext   ppi   val   out   javase   Servle   mes   

原文地址:https://www.cnblogs.com/yswyzh/p/8977208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!