springMVC的详细步骤配置

使用springMVC也可以代替struts2,当然只是代替业务分发的功能,struts2的一些其他功能它是没有的,不然要struts2有什么用。
  下面我用springMVC代替struts2去整合hibernate实现简单的员工查询功能。
 
 使用springMVC有两个配置文件需要配置,一个是applicationContext.xml、另一个是web.xml,在
applicationContext.xml里面配置事务管理器以及属性注入等。web.xml里面要添加一个springMVC的servlet的注
册和映射(DispatcherServlet),这个servlet是springMVC的核心控制器,专门处理各个请求的,然后根据相应的参数分发给
相应的业务控制器处理,业务控制器处理完之后就会返回一字符串给核心控制器,核心控制器再根据该字符串重定向或者转发到相应的页面。还必须给该核心控制器
建一个配置文件,其形式为:核心控制器servlet名-servlet.xml,如springMVC-servlet.xml.该配置文件放在
WEB-INF下面。
 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:util="http://www.springframework.org/schema/util"
    xmlns:p="http://www.springframework.org/schema/p"
    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.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
      http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation"
            value="classpath:hibernate.cfg.xml">
        </property>
    </bean>

    <bean id="DeptDAO" class="com.dao.DeptDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="EmpDAO" class="com.dao.EmpDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="empService" class="com.service.EmpService">
        <property name="deptDAO" ref="DeptDAO"></property>
        <property name="empDAO" ref="EmpDAO"></property>
    </bean>

    <!-- 事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <!-- 事务属性 -->
    <tx:advice id="mytx" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>
    <!-- 织入 -->
    <aop:config>
        <aop:advisor advice-ref="mytx" pointcut="execution(* com.service.*.*(..))"/>
    </aop:config>

</beans>

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">
 <!-- 指定另一个配置的路径 -->
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/classes/app*.xml</param-value>
 </context-param>
 <!-- 控制session开关的过滤器 -->
 <filter>
  <filter-name>openSession</filter-name>
  <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>openSession</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <!-- 加载applicationContext.xml -->
 <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>
 </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>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
</web-app>

springMVC-servlet.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:util="http://www.springframework.org/schema/util"
    xmlns:p="http://www.springframework.org/schema/p"
    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.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
      http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <!-- 指定自动扫描路径 -->
    <context:component-scan base-package="com.action"></context:component-scan>
</beans>

EmpAction类代码如下:

package com.action;

import java.util.List;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.service.EmpService;

@Controller
@RequestMapping("/emp.do")
public class EmpAction {
    @Autowired
    private EmpService empService;

    @RequestMapping(params="p=getAll")
    public String getAll(HttpServletRequest request,HttpServletResponse response){
        List list = empService.getAllEmp();
        request.setAttribute("list", list);
        return "/WEB-INF/view/show.jsp";
    }

}

@Controller指该方法是一个业务控制器;@RequestMapping("/emp.do")是指请求emp.do则核心控制器就会分发给该业务控制器去处理;
@RequestMapping(params="p=getAll")
是指当请求参数为p=getAll时调用业务控制器的这个方法;将"/WEB-INF/view/show.jsp"返回给核心控制器,核心控制器再转发
到WEB-INF/view/show.jsp页面去显示所有员工信息。

springMVC与struts2的区别:
1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。

2. 性能:spring会稍微比struts快。spring
mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,
粒度更细,但要小心把握像在servlet控制数据一样。spring3
mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3
mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter
getter方法把request中的数据注入;struts2实际上是通过setter
getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。

3. 参数传递:struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。

4. 设计思想上:struts更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展。

5. intercepter的实现机制:struts有以自己的interceptor机制,spring
mvc用的是独立的AOP方式。这样导致struts的配置文件量还是比spring
mvc大,虽然struts的配置能继承,所以我觉得论使用上来讲,spring mvc使用更加简洁,开发效率Spring
MVC确实比struts2高。spring
mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring3
mvc就容易实现restful url。struts2是类级别的拦截,一个类对应一个request上下文;实现restful
url要费劲,因为struts2
action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。spring3
mvc的方法之间基本上独立的,独享request
response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,而struts2搞的就比较乱,虽然方法之间
也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。

6. 另外,spring3 mvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可。

来源:http://www.cnblogs.com/liuling/archive/2013/02/07/sdfasdf.html

参考:http://blog.csdn.net/zuxianghaung/article/details/6649269

时间: 2024-10-12 04:35:14

springMVC的详细步骤配置的相关文章

我的Springmvc开发详细步骤

项目开始前的一些准备 step1 新建web project step2 新建用户库,后面会使用 注意:项目里面不仅需要spring的包,还必须导入commons-logging-jar包,不然项目运行会报错 结果如下: step3 为项目添加spring容器 next 请注意,这里有一个 No jar/zip file contained in selected libraries的提醒,我还没有找到原因,但是只需要再手动的将下载的jar包导入到lib文件夹下,就可以继续后面的步骤 next

使用springMVC的详细步骤

使用springMVC也可以代替struts2,当然只是代替业务分发的功能,struts2的一些其他功能它是没有的,不然要struts2有什么用. 下面我用springMVC代替struts2去整合hibernate实现简单的员工查询功能. 使用springMVC有两个配置文件需要配置,一个是applicationContext.xml.另一个是web.xml,在applicationContext.xml里面配置事务管理器以及属性注入等.web.xml里面要添加一个springMVC的serv

在CentOS6.4中安装配置LAMP环境的详细步骤

原文:在CentOS6.4中安装配置LAMP环境的详细步骤 本文详细介绍了CentOS6.4系统中安装LAMP服务并对其进行配置的过程,即安装Apache+PHP+Mysql,参照了网上大神的设置,其他Linux发行系统可以参考~ 在本文中部分命令操作需要root权限,输入‘su -’命令后输入密码即可切换root身份. 一.修改设置对安装做准备 1. 防火墙设置 设置/etc/sysconfig/iptables文件允许80端口和3306端口.因为80端口是http协议所使用的端口,如果防火墙

Nginx+php-fpm环境配置详细步骤

   Nginx+php-fpm环境配置详细步骤 最全的Nginx各种版本下载地址:http://nginx.org/download/ 一.编译安装php-fpm 什么是PHP-FPM PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到. PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中.必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用. 新版PH

最新的Hibernate(hibernate-release-5.0.2.Final)里配置proxool连接池详细步骤

由于新版Hibernatet的lib/required/下的jar包和旧版的有很大的不同,因此配置proxool数据库连接池时有了些许的不同.在此,我写下配置的详细步骤以供其他童鞋参考 一 添加所需jar包到WEB-INF/lib下 分别是:hibernate-release-5.0.2.Final/lib/required下的所有jar包,proxool的两个jar包:proxool-0.9.1.jar和proxool-cglib.jar,然后是hibernate-proxool-5.0.2.

Win7配置SVN详细步骤(服务器和客户端)

Win7配置SVN详细步骤(服务器和客户端) 1.       下载并安装服务器端SVN 下载地址:http://subversion.apache.org/packages.html, 根据操作系统下载相应版本(Setup-Subversion).默认安装目录可为: D:\ProgramFiles\Subversion 2          下载并安装客户端SVN 下载地址: http://tortoisesvn.net/downloads.html根据操作系统下载相应版本(TortoiseS

华为配置SSH登陆详细步骤

理解下SSH登录的过程: 1.建立目的端口为22的TCP连接 2.协商SSH版本 3.协商密钥和算法 4.会话建立 下面为server端的详细配置步骤: 1.创建本地RSA密钥对 rsa local-key-pair creat  //产生RSA本地密钥对 2.配置vty界面支持的登录协议 user-interface vty 0 4 authentication-mode aaa    //验证方式为aaa protocol inbound {ssh|all} //这里选择ssh或ALL都可

使用IDEA创建javaweb项目并配置详细步骤+导出war包详细步骤

参考 使用IDEA创建javaweb项目并配置详细步骤+导出war包详细步骤 原文地址:https://www.cnblogs.com/slbb/p/9360344.html

在linux环境下为eclipse配置jdk以及Tomcat服务(附图解详细步骤)

环境:jdk8,Tomcat7,eclipse 需要先在linux上安装好对应的软件及java环境,如果还没有安装的,可以先去看我之前写的两篇博客:ubuntu/linux中安装Tomcat(附图解详细步骤)以及ubuntu/linux系统中安装jdk以及eclipse(附图解详细步骤),里面都有详细的安装步骤. 前期准畚工作完成后,接下来就是在eclipse中配置我们的java开发环境了. 1.首先,我们打开eclipse软件,进入的首页依旧是需要选择eclipse的工作路径,跟在window