1.采用Spring MVC的好处

Dispathcher Servlet必须做如下的事情:

1.根据URI调用相应的action

2.实例化正确的控制器类

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

3.调用控制器对象的相应方法

4.转向到一个视图(JSP页面)

SpringMVC提供了Dispatcher Servlet

使用基于XML的配置文件,实例化控制器

自动绑定用户输入,正确转换数据类型

可以校验用户输入,支持国际化和本地化,

支持多种视图

2.SpringMVC的DispatcherServlet

相当于调度员Servlet

配置部署:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern> /</url-pattern>
</servlet-mapping> </web-app>
load-on-startup 如存在,在程序启动时加载,
如不存在,在一个请求时候加载 springMVC的配置文件,可以放在WEB-INF下
也可以放在任何地方,用init-param加载该文件
 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
3.Controller接口(传统风格控制器,要实现Controller接口)
2.5以前开发控制的唯一方法是org.springframework.web.servlet.mvc.Controller接口
只有一个方法handleRequest,而他的实现类只能处理一个单一动作Action
  ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) 
而基于注解的控制器可以控制多个动作,无需实现任何接口 4.SpringMVC第一个应用
1.目录结构
spring-webmvc-x.y.z.jar包括了 DispatcherServlet

aaarticlea/png;base64,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" alt="" />


2.部署描述符文件和SpringMVC配置文件

2.1 部署文件

没有init-param,所以放在WEB-INF下

<url-pattern>/</url-pattern> 将所有的URL映射到该Servlet上

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> </web-app>

2.2 SpringMVC的配置文件

2个控制器类

 <?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="app03a.controller.InputProductController"/>
<bean name="/product_save.action" class="app03a.controller.SaveProductController"/> </beans>

3.Controller

 package app03a.controller;

 import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; public class InputProductController implements Controller { private static final Log logger = LogFactory
.getLog(InputProductController.class); @Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
logger.info("InputProductController called");
return new ModelAndView("/WEB-INF/jsp/ProductForm.jsp");
} }
 package app03a.controller;

 import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; import app03a.domain.Product;
import app03a.form.ProductForm; public class SaveProductController implements Controller { private static final Log logger = LogFactory
.getLog(SaveProductController.class); @Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
logger.info("SaveProductController called");
ProductForm productForm = new ProductForm();
// populate action properties
productForm.setName(request.getParameter("name"));
productForm.setDescription(request.getParameter("description"));
productForm.setPrice(request.getParameter("price")); // create model
Product product = new Product();
product.setName(productForm.getName());
product.setDescription(productForm.getDescription());
try {
product.setPrice(Float.parseFloat(productForm.getPrice()));
} catch (NumberFormatException e) {
} // insert code to save Product return new ModelAndView("/WEB-INF/jsp/ProductDetails.jsp", "product",
product);//路径,模型名称,模型
} }
 package app03a.form;

 public class ProductForm {
private String name;
private String description;
private String price; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
 package app03a.domain;
import java.io.Serializable; public class Product implements Serializable {
private static final long serialVersionUID = 748392348L;
private String name;
private String description;
private float price; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
}

4.View

ProductForm.jsp

 <!DOCTYPE HTML>
<html>
<head>
<title>Add Product Form</title>
<style type="text/css">@import url(css/main.css);</style>
</head>
<body> <div id="global">
<form action="product_save.action" method="post">
<fieldset>
<legend>Add a product</legend>
<p>
<label for="name">Product Name: </label>
<input type="text" id="name" name="name"
tabindex="1">
</p>
<p>
<label for="description">Description: </label>
<input type="text" id="description"
name="description" tabindex="2">
</p>
<p>
<label for="price">Price: </label>
<input type="text" id="price" name="price"
tabindex="3">
</p>
<p id="buttons">
<input id="reset" type="reset" tabindex="4">
<input id="submit" type="submit" tabindex="5"
value="Add Product">
</p>
</fieldset>
</form>
</div>
</body>
</html>

ProductrDetails.jsp

 <!DOCTYPE HTML>
<html>
<head>
<title>Save Product</title>
<style type="text/css">@import url(css/main.css);</style>
</head>
<body>
<div id="global">
<h4>The product has been saved.</h4>
<p>
<h5>Details:</h5>
Product Name: ${product.name}<br/>
Description: ${product.description}<br/>
Price: $${product.price}
</p>
</div>
</body>
</html>

5.测试应用

http://localhost:8080/app03a/product_input.action

5.View Resolver

View Resolver负责配置视图解析器

 <?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="app03b.controller.InputProductController"/>
<bean name="/product_save.action" class="app03b.controller.SaveProductController"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>

视图解析器配置了前缀和后缀两个属性:

view路径可以缩短,仅需提供myPage,无需在写/WEB-INF/jsp/myPage.jsp

3.SpringMVC介绍的更多相关文章

  1. SpringMVC介绍之约定优于配置

    SpringMVC介绍之约定优于配置 所谓的约定优于配置就是指在程序开发过程中我们约定好一些规则可以使我们更少的进行配置和代码编写.就这么简单的一句话可能你还不是很懂什么是约定优于配置,没关系,看完后 ...

  2. Spring-mvc介绍

    Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2   spring-mvc结构 1 ...

  3. SpringMVC介绍及参数绑定

    本节内容: SpringMVC介绍 入门程序 SpringMVC架构 SpringMVC整合MyBatis 参数绑定 SpringMVC和Struts2的区别 一.SpringMVC介绍 1. 什么是 ...

  4. springMVC介绍

    http://www.iteye.com/blogs/subjects/springMVC —————————————————————————————————————————————————————— ...

  5. (转)SpringMVC学习(一)——SpringMVC介绍与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/72231272 SpringMVC介绍 SpringMVC是什么? SpringMVC和Stru ...

  6. 【Eclipse】springMVC介绍与配置

    SpringMCV介绍: Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动的,也就是使用 ...

  7. SpringMVC介绍之视图解析器ViewResolver

    在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下SpringMVC视图解析器.当我们对SpringMVC控制的资源发起请求时,这些请求都会被SpringMV ...

  8. SpringMVC介绍之Validation

    对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证.SpringMVC自身对数据在服务端的校验有一个比较好的支持,它能将我们提 ...

  9. SpringMVC轻松学习-SpringMVC介绍(一)

    Spring  MVC 背景介绍 Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 ...

  10. 000 SpringMVC介绍

    1.介绍 2.MVC 模型(Model)封装了应用程序数据,通常它们将由POJO类组成. 视图(View)负责渲染模型数据,一般来说它生成客户端浏览器可以解释HTML输出. 控制器(Controlle ...

随机推荐

  1. UVA11525 【Permutation】

    分析 简述"康托展开" 康托展开是一个全排列到一个自然数的双射,常用于构建hash表时的空间压缩.设有\(n\)个数\((1,2,3,4,-,n)\),可以有组成不同(\(n!\) ...

  2. day02 大型互联网架构演变历程笔记 和nigix和keepalived

    PS:1.单个进程内,有多个线程,可以共享进程的内存空间2. 进程和进程之间通信比较麻烦, 会涉及 序列化和反序列化 PS :以一个交易网站看网站是如何变大的,网站的发展!!!! PS:随着请求的增加 ...

  3. 编程实现C库函数

    1.memcpy函数 memcpy 函数用于 把资源内存(src所指向的内存区域) 拷贝到目标内存(dest所指向的内存区域):拷贝多少个?有一个size变量控制拷贝的字节数: 函数原型:void * ...

  4. JUC集合之 LinkedBlockingQueue

    LinkedBlockingQueue介绍 LinkedBlockingQueue是一个单向链表实现的阻塞队列.该队列按 FIFO(先进先出)排序元素,新元素插入到队列的尾部,并且队列获取操作会获得位 ...

  5. java 多线程知识点

    线程状态图 说明: 线程共包括以下5种状态. 新建状态(New) : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread(). 就绪状态(Runnable) ...

  6. JZ2440 裸机驱动 第12章 I2C接口

    本章目标: 了解I2C总线协议: 掌握S3C2410/S3C2440中I2C接口的使用方法: 12.1 I2C总线协议及硬件介绍 12.1.1 I2C总线协议 1 I2C总线的概念 2 I2C总线的信 ...

  7. 【python】列表&&元组&&字典

    列表:用“[]”包裹,可对值增删改. 列表遍历: 方法一: alist=["a","b","c","d","e ...

  8. 重置SQL Server sa密码

    查询分析器,连接时,身份验证使用"使用windows身份验证" 然后,执行: EXEC sp_password NULL, '新密码', 'Sa'

  9. dede 添加自定义函数

    include/extend.func.php里添加函数 function GetTopTags($str){$dsql = new Dedesql(false);$row = $dsql->G ...

  10. 轻松理解execl系列函数

    execl函数功能如下:启动一个可执行文件,并且对他进行传送参数.一些原型如下 #include <unistd.h> extern char **environ; int execl(c ...