3.SpringMVC介绍
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介绍的更多相关文章
- SpringMVC介绍之约定优于配置
SpringMVC介绍之约定优于配置 所谓的约定优于配置就是指在程序开发过程中我们约定好一些规则可以使我们更少的进行配置和代码编写.就这么简单的一句话可能你还不是很懂什么是约定优于配置,没关系,看完后 ...
- Spring-mvc介绍
Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2 spring-mvc结构 1 ...
- SpringMVC介绍及参数绑定
本节内容: SpringMVC介绍 入门程序 SpringMVC架构 SpringMVC整合MyBatis 参数绑定 SpringMVC和Struts2的区别 一.SpringMVC介绍 1. 什么是 ...
- springMVC介绍
http://www.iteye.com/blogs/subjects/springMVC —————————————————————————————————————————————————————— ...
- (转)SpringMVC学习(一)——SpringMVC介绍与入门
http://blog.csdn.net/yerenyuan_pku/article/details/72231272 SpringMVC介绍 SpringMVC是什么? SpringMVC和Stru ...
- 【Eclipse】springMVC介绍与配置
SpringMCV介绍: Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动的,也就是使用 ...
- SpringMVC介绍之视图解析器ViewResolver
在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下SpringMVC视图解析器.当我们对SpringMVC控制的资源发起请求时,这些请求都会被SpringMV ...
- SpringMVC介绍之Validation
对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证.SpringMVC自身对数据在服务端的校验有一个比较好的支持,它能将我们提 ...
- SpringMVC轻松学习-SpringMVC介绍(一)
Spring MVC 背景介绍 Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 ...
- 000 SpringMVC介绍
1.介绍 2.MVC 模型(Model)封装了应用程序数据,通常它们将由POJO类组成. 视图(View)负责渲染模型数据,一般来说它生成客户端浏览器可以解释HTML输出. 控制器(Controlle ...
随机推荐
- Html页面Dom对象之Element
HTML DOM Element 对象 HTML DOM 节点 在 HTML DOM (文档对象模型)中,每个部分都是节点: 文档本身是文档节点 所有 HTML 元素是元素节点 所有 HTML 属性是 ...
- jquery,从后台查数据,给页面上添加树形。
前台jquery+ajax请求往页面上添加树形的js代码 //传入当前点击节点的id,在后台代码查询出parentid=当前节点id的记录数,从而实现点击当前节点,往后台发送ajax请求,查询出子节点 ...
- (机器学习)小试牛刀 利用Zapier和MonkeyLearn
MonkeyLearn + Zapier Integration(阅者注:本文介绍如何用Zapier和MonkeyLearn将机器学习实际应用到工作当中,比如:客户咨询和投诉管理,营销邮件管理) We ...
- Oracle sql之条件语句 循环语句
一 IF..THENIF condition THEN statements 1; statements 2; ....END IF; 二 IF..THEN...ELSEIF condit ...
- BatSendMail
@echo off echo ==================================echo == Compress Files And Send Mail ==echo ======= ...
- 看懂Class文件的装载流程
Class文件的加载过程 ClassLoader的工作模式 类的热加载 1 Class文件的装载流程 只有被java虚拟机装载的Class类型才能在程序中使用(注意装载和加载的区别) 1.1 类装载的 ...
- 【转】每天一个linux命令(47):iostat命令
原文网址:http://www.cnblogs.com/peida/archive/2012/12/28/2837345.html Linux系统中的 iostat是I/O statistics(输入 ...
- 因环境变量设置问题引起的command not found
ls command not found vi command not found 只要的原因是因为环境变量的问题,编辑profile文件没有写正确,导致在命令行下 ls等命令不能够识别.解决办法:在 ...
- Ionic 中MD5加密使用
1. 下载安装ts-md5 在项目的命令行工具里输入 npm install ts-md5 --save 2. 使用 导入 import {Md5} from "ts-md5/dist/m ...
- GitHub10岁之际HanLP自然语言处理包用户量跃居榜首
在本周,GitHub终于度过了属于它自己的十周岁生日.这个在2008年由3个来自旧金山的年轻人创建的基于Git的代码托管网站,先后超越了元老级的SourceForge和背景强大的Google Code ...