Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
        和目前比较流行的ssh2(Struts2+Spring+hibernate)框架相比,springmvc的性能可能还在之上。这主要是由于Struts2的值栈、OGNL表达式、struts2标签库等导致性能下降。自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对Struts 2的超越。现在越来越多的开发团队选择了Spring MVC。
        从网上摘录常见的mvc框架性能比较,可以参考参考。
        运行性能上:

Jsp+servlet>struts1>spring mvc>struts2+freemarker>>struts2,ognl,值栈。

开发效率上,基本正好相反。值得强调的是,spring mvc开发效率和struts2不相上下。

现在用一个例子来证明springmvc的魅力吧。例子是基于xml配置的springmvc+hibernate。

新建项目什么的,就不说了哈。现在没有Struts2了。所以也就没有Struts.xml文件了。和传统的ssh相比只多了springmvc的配置文件。先从web.xml文件开始说起吧。

web.xml

    

    首先配置一个Servlet,用来拦截请求。如:

  <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/spring-*.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>

spring-*.xml表示加载WEB-INF下所有以spring-开头的配置文件。学校里面教的可能有一个applicationContent.xml文件,然后把所有的东西都配在这里面。从例子角度上考虑可以这么做。但是从企业级的应用上考虑,不推荐采用这种方式。推荐将applicationContent.xml中的东西进行分离。dao.xml只写与Dao层相关的东西,service.xml只写与Service层相关的东西。而dataSource、sessionFactory以及事务用hibernate.xml保存。mvc.xml则写与控制器相关的东西。

    dao、service和hibernate的配置文件就不多说了,和以前没有什么两样。如果想看具体内容,可以去文章最后指定的链接下载即可。

重点说说mvc.xml的内容。

mvc.xml

这个文件主要定义了控制器方法调用规则、视图层的基本设置、Servlet的映射列表以及具体的控制器等等。主要代码:

  <!-- 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">empController</prop>

</props>

</property>

</bean>

<bean id="empController" class="com.test.controller.EmpController">

<property name="empService" ref="empService"></property>

</bean>

前面两个bean基本上不用设置什么,主要是后面两个需要注意。从代码层面可以看出请求user.do的时候会交给empController来处理。

我们看看EmpController类有什么东西。

  public class EmpController implements Controller {

private EmpService empService;

@Override

public ModelAndView handleRequest(HttpServletRequest request,

HttpServletResponse response) throws Exception {

System.out.println("handleRequest..............");

Emp emp = new Emp();

emp.setName(request.getParameter("name").toString());

empService.saveEmp(emp);

return new ModelAndView("main");

}

public EmpService getEmpService() {

return empService;

}

public void setEmpService(EmpService empService) {

this.empService = empService;

}

}

在控制器里面实现Controller接口并重写handleRequest方法。这个地方是不是有点熟悉呀,和Servlet很相似吧。然后调用服务层的方法返回字符串或者ModelAndView对象。处理成功以后会跳转到main.jsp页面。至于并没有写视图的名称为啥能跳转到main.jsp呢,是因为在mvc.xml中定义了视图的后缀。

光看代码还是有点枯燥,来看看项目结构图吧。

如果想参考源码可以去http://pan.baidu.com/share/link?shareid=3240675456&uk=587859240下载。如果有什么不明白的地方可以留言。

springmvc+hibernate入门-揭开神秘的面纱的更多相关文章

  1. EntityFramework Core表名原理解析,让我来,揭开你神秘的面纱

    前言 上一节我们针对最开始抛出的异常只是进行了浅尝辄止的解析,是不是有点意犹未尽的感觉,是的,我也有这种感觉,看到这里相信您和我会有一些疑惑,要是我们接下来通过注解.Fluent APi.DbSet分 ...

  2. springmvc框架(Spring SpringMVC, Hibernate整合)

    直接干货 model 考虑给用户展示什么.关注支撑业务的信息构成.构建成模型. control 调用业务逻辑产生合适的数据以及传递数据给视图用于呈献: view怎样对数据进行布局,以一种优美的方式展示 ...

  3. Maven搭建SpringMVC+Hibernate项目详解 【转】

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  4. 三大框架之hibernate入门

    hibernate入门   1.orm      hibernate是一个经典的开源的orm[数据访问中间件]框架           ORM( Object Relation Mapping)对象关 ...

  5. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  6. SpringMVC从入门到精通之第四章

    第一个知识点:@Controller注解,用于标识这个类是一个后端控制器(类似struts中的action),主要作用就是接受页面的参数,转发页面.中间的业务逻辑是调用业务类处理的这个就是MVC设计模 ...

  7. SpringMVC基础入门

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

  8. Hibernate入门案例 增删改

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  9. Hibernate入门6.Hibernate检索方式

    Hibernate入门6.Hibernate检索方式 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv Hibernate的整体框架已经 ...

随机推荐

  1. input:text 的value 和 attribute('value') 不是一回事

    如题,input:text 当手工输入字符改变其值时,两者就不一样了. 要获得手工输入,不要用attribute('value'), 直接使用value: function getbyid(id){ ...

  2. iOS富文本-NSAttributedString简单封装

    直接调用系统的写起来比较麻烦,封装一下 因为要简单所以就写类方法 WJAttributeStyle 基类 ) {         ; i < styles.count; i ++) {      ...

  3. ZOJ题目分类

    ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...

  4. URAL 1183 Brackets Sequence(DP)

    题目链接 题意 : 给你一串由括号组成的串,让你添加最少的括号使该串匹配. 思路 : 黑书上的DP.dp[i][j] = min{dp[i+1][j-1] (sh[i] == sh[j]),dp[i] ...

  5. (3)初次接触off

    boss布置任务了,要读入off文件,生成能显示出来的可执行文件,完成不了就要滚蛋 目前的东西还是不用保密的,到后面我就要设密码了 好,.off文件是什么? OFF,Object File Forma ...

  6. JDBC第一次学习

     JDBC(Java Data Base Connectivity,java数据库连接),由一些类和接口构成的API,它是J2SE的一部分,由java.sql,javax.sql包组成. 应用程序.J ...

  7. C#反射Assembly 详细说明

    1.对C#反射机制的理解2.概念理解后,必须找到方法去完成,给出管理的主要语法3.最终给出实用的例子,反射出来dll中的方法 反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dll等 ...

  8. -ffunction-sections -Wl,--gc-sections

    AVR/GCC设置不链接未调用的函数 http://blog.csdn.net/shevsten/article/details/7049688 在AVR Studio4/5的AVR/GCC默认设置下 ...

  9. iOS开发--控件

    iOS知识点整理-提示器 http://www.jianshu.com/p/ac7e13d36e32 iOS知识点整理-RunLoop http://www.jianshu.com/p/e4fc6ac ...

  10. Spring之在客户端访问RESTful业务

    Spring之在客户端访问RESTful业务 RestTemplate 是客户端访问RESTful业务的核心类.在概念上与Spring其他的模板类相似,比如JdbcTemplate和JmsTempla ...