Spring学习笔记-springMVC入门Demo

MVC模式很好的提高了Web项目的开发效率,同时也提高了系统的可维护性。基于mvc模式的Web层框架也是琳琅满目,从最开始的struts1、struts2(风靡n年),到现在的springMVC。这些框架的基本目的大致有两个:一个是简化web开发过程中的常见操作,入表单数据的封装,校验,请求的处理,数据的回显,文件上传下载及安全性问题等;第二就是基于mvc模式,构建结构良好的应用程序。

常见的web层框架很多,也各有千秋,经过长时间的演化,目前在web项目开发中最常用、最简洁高效的就是springmvc,它就像mybatis一样,去除了jdbc的繁琐,但保持了灵活性,同时又不像hibernate那样难以控制。

  • 一个mvc框架最基本的要完成以下工作:

    1)根据uri调用相应的action

    2)实例化正确的控制器

    3)根据请求参数值来构造表单

    4)调用控制器对象的相应方法

    5)转向一个视图(jsp页面)

  • 利用springmvc作为web层框架的好处有很多

    1)springmvc提供了一个DispatcherServlet,用作请求分发

    2)springmvc中使用基于xml的配置文件

    3)springmvc实例化控制器,根据用户输入自动构造bean

    4)springmvc提供完善的校验框架

    5)sringmvc是spring的一部分,可以充分利用spring的强大功能

    6)sprngmvc支持国际化和本地化

    7)sprigmvc支持多视图技术

在真正进入springmvc前,我们要先来了解一个类和一个接口:DispatcherServlet和Controller.

  • DispatcherServlet

    它是springmvc的入口,也是用于处理请求的核心分发器,在应用springmvc时,第一件事就是在web.xml文件中配置改servlet,就像下面这样

<servlet>
       <servlet-name>action</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
       <servlet-name>action</servlet-name>
       <url-pattern>*.action</url-pattern>
  </servlet-mapping>

需要注意的是,利用<servlet-name/>指定的名字是有意义的,在加载springmvc配置文件的时候,会根据这个名字到classpath下寻找servletName-servlet.xml文件。

但有时我们的配置文件可以不是直接在classpath下,而是在别的什么位置,那也没关系,值需要为DispatcherServlet指定contextConfigLocation就可以了

<init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:action-servlet.xml</param-value>
</init-param>
  • Controller接口

    在spring2.5之前,开发一个控制器的唯一方法就是实现org.springframework.web.servlet.mvc.Controller接口。这个接口有一个handleRequest方法

ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response)

实现类可以访问对应请求的request和response,还必须返回一个包含视图路径或视图路径和模型的ModelAndView对象。

Controller接口只能处理单一动作,而一个基于注解的控制器可以通知支持多个请求处理动作,并且无需实现任何接口。

下面,我们就来创建第一个SpringMVC应用。

  • 首先,配置SpringMVC核心请求分发器
<servlet>
       <servlet-name>action</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
       <servlet-name>action</servlet-name>
       <url-pattern>/*</url-pattern>
  </servlet-mapping>

由于<url-pattern>配置成了/*,所以,所有的请求都要被SpringMVC处理。

  • 第二步,配置springmvc的配置文件。

    注意配置文件的名字要与<servlet-name/>向对应:action-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"
         xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

       <bean name="/product_input.action"class="com.controller.InputProductController"/>
       <bean name="/product_save.action" class="com.controller.SaveProductController"/>
<beans/>

这里声明了两个控制器,分别映射到/product_input.action和/product_save.action.

  • 第三步,定义实体类
/**
 - @Description: Spring mvc.
 - @Author:Zander
 - @CreateDate:Aug 8, 2015
 - @Company:
 */
@SuppressWarnings("serial")
public class Product implements Serializable{

    private String name;
    private String description;
    private Float price;
    private Date productionDate;

    getter/setter
    ......
}
  • 第四步,创建Controller
package com.springmvc.test.controller;

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

import org.apache.log4j.Logger;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import com.springmvc.test.domain.Product;

/**
 * @Description:
 * @Author:Zander
 * @CreateDate:Aug 16, 2015
 * @Company:
 */
public class SaveProductController implements Controller{

    private static final Logger logger = Logger.getLogger(SaveProductController.class);

    @Override
    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        logger.info("SaveProductController called");

        Product product = new Product();
        product.setName(request.getParameter("name"));
        product.setDescription(request.getParameter("description"));
        product.setPrice(Float.parseFloat(request.getParameter("price")));

        //插入数据的代码

        return new ModelAndView("/WEB-INF/jsp/productDetails.jsp","product",product);
    }
}
  • 第五步,创建jsp页面(略)

请求上面两个Controller的路径分别是 :

host:port/webroot/product_input.action

host:port/webroot/product_save.ation

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 18:02:12

Spring学习笔记-springMVC入门Demo的相关文章

Spring学习笔记-springMVC基于注解的控制器(Demo)

springmvc的整体运行流程图: 基于@Controller和@RequestMapping是springmvc示例代码 在web.xml中配置springmvc核心分发器DispatcherServlet .... <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </

Spring学习笔记-springMVC基于注解的控制器(基本概念)

在spring2.5以前的版本中,实现一个mvc的Controller的唯一方法就是实现Controller接口,一个控制器只能响应一个客户端请求,在2.5以后的版本中,spring引入了注解,利用注解简化配置文件,利用注解实现bean的声明和依赖注入(DI),注解也同样被引入到spring的web模块springMVC中. 使用基于注解的控制器有两个优点 第一:一个控制器可以处理多个动作,而不是像以前那样一个控制器只能处理一个请求 第二:省略的在配置文件中对bean的声明和依赖注入,显著提高开

spring学习笔记一 入门及配置

Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的.主要优势之一就是其分层架构.Spring的核心是控制反转和面向切面.简单来说,Spring是一个分层的一站式轻量级开源框架. 使用Spring的好处 方便解耦,简化开发.Spring就是一个大工厂,可以将所有对创建和依赖关系维护,交给Spring管理. AOP编程的支持.Spring提供面向切面编程,可以方便的实现对程序进行权限拦截.运行监控等功能. 声明式事务的支持.只需要通过配置就可以完成对事务的管理,而无需手动编程. 方便程

【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www.cnblogs.com/ssslinppp/p/4528892.html [Spring学习笔记-MVC-4]返回Json数据-方式2:http://www.cnblogs.com/ssslinppp/p/4530002.html [Spring学习笔记-MVC-3.1]SpringMVC返回Json数据-

springmvc学习笔记(5)-入门程序小结

springmvc学习笔记(5)-入门程序小结 springmvc学习笔记5-入门程序小结 入门程序配置小结 非注解的完整的配置文件 注解的完整配置文件 通过入门程序理解springmvc前端控制器.处理器映射器.处理器适配器.视图解析器用法.并附上入门程序的非注解的完整的配置文件,注解的完整配置文件. 入门程序配置小结 前端控制器配置: 第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析 第二种:/,所以访问的地址都由DispatcherServl

【Spring学习笔记-MVC-9】SpringMVC数据格式化之日期转换@DateTimeFormat

作者:ssslinppp       1. 摘要 本文主要讲解Spring mvc数据格式化的具体步骤: 并讲解前台日期格式如何转换为java对象: 在之前的文章<[Spring学习笔记-MVC-8]SpringMVC之类型转换Converter>(对应链接: http://www.cnblogs.com/ssslinppp/p/4598102.html ) 中讲解了Spring MVC的类型转换,在此回顾下. 数据格式化,从本质上讲属于数据转换的范畴.Spring就是基于数据转换框架植入&q

【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MVC与json参考文章:[spring学习笔记-mvc-3]返回json数据-方式1  和 [spring学习笔记-mvc-4]返回json数据-方式2. 使用到的技术主要如下: Ajax:使用JQuery 提供的ajax:==>需要引入jquery.min.js文件: Spring MVC: Jso

学习笔记---springMVC搭建

最近工作不是很忙,写项目总结总结学习和工作中的技术,标记... 我的环境配置: 操作系统 win 7 开发工具 STS web服务器 tomcat7 java jdk1.6 1. 项目的创建,我是参考下面这篇文章 http://fruzenshtein.com/setup-of-dynamic-web-project-using-maven/ 2. 相关jar包的引入 pom.xml中spring的配置 1 <properties> 2 <org.springframework-vers

spring学习笔记(一) Spring概述

博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring的优势在哪里?怎么系统的学习Spring? 一.什么是Spring? Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发. 那有人就会问了,Spring是如何简化开发的? 在传统开发中,一个应用是需