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. ubuntu 远程gui显示

    图像从定向: ubuntu 显示系统xterm  重点是设置DISPLAY variable以及保证ubuntu和suse在同一网段即相互ping通,利用ssh -XY的方式重定向图像. 1.直接ss ...

  2. MySQL--限制用户使用资源

    在MySQL 5.7及后续版本中,可以按照账号来限制每个账号实际具有的资源限制. 语法: GRANT WITH option, 如: GRANT SELECT ON test.* TO user1@l ...

  3. 万年历(hao123)代码

    网上有很多类似的代码,比如网站:hao123,IP138.日梭万年历网络版 等等,不过日梭万年历相对比较详细,也可以看看另外一篇文章的介绍: 日梭万年历网络版:http://www.cnblogs.c ...

  4. 为什么要用MQ

    现在公司系统在做微服务化,很多人在设计服务间通信时都会想到用MQ,然而有些人居然说不清楚为啥要用MQ? 其实用它主要是两点考虑: 1.应用解耦:两个服务间通过MQ通信,可以不用完全知道对方的存在,实现 ...

  5. c# ProgressBar进度条方向和美观

    protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style | ...

  6. 从windows到linux的shell脚本编码和格式问题

    从windows到linux的shell脚本编码和格式问题   从windows到Linux的shell脚本编码和格式问题 1.异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh s ...

  7. IPv6调用java后端接口报错:java.net.SocketException: Protocol family unavailable

    目前需求是java后端的接口需要支持IPv6.先确认linux机器已经绑定了IPv6: CMREAD-SV43 apache-tomcat/bin> ifconfig eth0 Link enc ...

  8. github 改位置

    在设置里改位置后,先在本地库上右键"stop track this repo". 然后在在线库重新CLONE.

  9. java newInstance() 的参数版本与无参数版本详解

    newInstance() 的参数版本与无参数版本详解 博客分类: Core Java   通过反射创建新的类示例,有两种方式: Class.newInstance() Constructor.new ...

  10. Linux下的一些名词解释

    libffi (以下E文摘自http://www.sourceware.org/libffi/) A Portable Foreign Function Interface Library. Comp ...