一、Spring Web MVC是什么?

Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

Spring Web MVC也是服务到工作者模式的实现,但进行可优化。[前端控制器是DispatcherServlet应用控制器其实拆为处理映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。]这些在接下来的学习中将会讲解到。

二、Spring MVC的优势(简单说两个)?

1、简单、容易上手;

2、性能优异:jsp+sevlet > struts == SpringMVC > struts2(但是struts2出现了一个不可修复的bug)

3、灵活,易于扩展

4、更易于和Spring容器整合集成。

三、Spring Web MVC处理请求的流程?

如图:

          

解析步骤:

1、  首先用户发送请求————>前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的1、2步骤;

2、  页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);图中3、4、5步骤;

3、  前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图2中的步骤6、7;

4、  前端控制器再次收回控制权,将响应返回给用户,图中的步骤8;至此整个结束。

四:创建一个简单的project。

先看看我自己建立的工程整体。

1 新建Web工程。导入spring mvc所需的jar包。

log4j-1.2.15jar

因为我之前创建过spring的工程,我就直接把spring的jar包都拷贝过来了!

2 在web.xml下配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>springmvc01</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.html</welcome-file>
 6     <welcome-file>index.htm</welcome-file>
 7     <welcome-file>index.jsp</welcome-file>
 8     <welcome-file>default.html</welcome-file>
 9     <welcome-file>default.htm</welcome-file>
10     <welcome-file>default.jsp</welcome-file>
11   </welcome-file-list>
12
13 <!-- 前端控制器 -->
14   <servlet>
15     <servlet-name>spring</servlet-name>
16     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
17      <!-- 默认情况下:DispatcherServlet会寻找WEB-INF下,命名规范为[servlet-name]-servlet.xml文件。如:在上例中,它就会找/WEB-INF/spring-servlet.xml
18                     如果需要修改,需要在web.xml中的<servlet>标记中增加 <init-param>。。。  </init-param>:-->
19      <init-param>
20        <param-name>contextConfigLocation</param-name>
21        <param-value>/WEB-INF/classes/spring-servlet.xml</param-value>
22      </init-param>
23     <!-- load-on-startup:表示启动容器时初始化该Servlet; -->
24     <load-on-startup>1</load-on-startup>
25   </servlet>
26   <servlet-mapping>
27     <servlet-name>spring</servlet-name>
28     <url-pattern>*.do</url-pattern>
29   </servlet-mapping>
30
31   <!-- 动态设置项目的运行路径 -->
32     <context-param>
33         <param-name>webAppRootKey</param-name>
34         <param-value>spring.root</param-value>
35     </context-param>
36
37     <!-- 加载LOG4J -->
38     <context-param>
39         <param-name>log4jConfigLocation</param-name>
40         <param-value>/WEB-INF/log4j.xml</param-value>
41     </context-param>
42
43     <context-param>
44         <param-name>log4jRefreshInterval</param-name>
45         <param-value>60000</param-value>
46     </context-param>
47
48   <!-- 启动log4j日志管理 -->
49     <listener>
50         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
51     </listener>
52 </web-app>

3 在spring-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"xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><!-- 将URL直接映射到具体的业务控制器 -->    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="login.do">login</prop></props></property>
</bean>
<bean id="login" class="com.lovo.controller.LoginController"></bean>
<!-- id的名字必须和HandlerMapping中保持一致。因为我们用的是SimpleUrlHandlerMapping。--><!--配置视图解析器  --><!-- ViewResolver 视图解析器 用于将返回的ModelAndView对象进行分离InternalResourceViewResolver:用于支持Servlet、JSP视图解析;viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包,没有就可以不配置;prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),比如传进来的逻辑视图名为WEB-INF/jsp/hello,则该该jsp视图页面应该存放在“WEB-INF/jsp/hello.jsp”; --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property><property name="prefix" value="/"></property> <!-- 我这里的视图直接放在WebRoot下的 --><property name="suffix" value=".jsp"></property>
</bean> </beans>

login.jsp页面》

 <body><form action="login.do" method="post"><table><tr><td>用户名:</td><td><input type="text" name="username"/></td></tr><tr><td>班级</td><td><input type="text" name="clazz"/></td></tr><tr><td colspan="2"> <input type="submit" value="提交"/> </td></tr></table></form></body>

LoginController .java
package com.lovo.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;/*** 登录控制器* @author acer**/
public class LoginController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {/*** 得到我们页面的值*/String username = request.getParameter("username");//4、选择下一个页面 ModelAndView mav=new ModelAndView();//添加模型数据 可以是任意的POJO对象 mav.addObject("username" ,username);//设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面  mav.setViewName("index");return mav;}}

index.jsp

 <body><h1>This is index.jsp</h1>输入用户名:${username}</body>

运行结果:

   

结果2

    

POST中文乱码解决方案。

在web.xml里配置。

<!-- spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter
用于解决POST方式造成的中文乱码问题 -->
<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

Spring MVC 入门基础(一)相关推荐

  1. Spring MVC 入门--Hello World

    Spring MVC 学习 Hello world 步骤 添加jar包 在web.xml文件中配置DispatcherServlet 添加Spring MVC的配饰文件 编写处理请求的处理器,并且标识 ...

  2. Spring MVC入门 —— 跟开涛学SpringMVC

    2014-05-14 23:22:27 第二章 Spring MVC入门 -- 跟开涛学SpringMVC  浏览(84979)|评论(12)   交流分类:Java|笔记分类: 跟开涛学Spring ...

  3. Spring Security入门基础

    Spring Security入门基础 文章目录 Spring Security入门基础 一,Spring Security的使用 1.1 基本术语 1.2 基本使用 1.2.1 引入依赖 1.2.2 ...

  4. Spring MVC 入门示例讲解

    在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简 ...

  5. 【视频分享】Java Spring 经典入门基础教程详解

    看到有小伙伴留言说想要Spring相关的,今天就分享一波关于 Spring 的入门视频,有需要的可以领取. Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架 ...

  6. Spring框架入门基础,不可多得的干货

    Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO.Hibernate 和 iBatis SQL Map.所有这些都遵从 Spri ...

  7. Spring MVC 基础

    Spring MVC 项目案件见附件 导包 配置web.xml启动Spring MVC <?xml version="1.0" encoding="UTF-8&qu ...

  8. 11月17日spring mvc入门培训

    上午学员们继续动手实践,下午开始讲解Spring MVC. 在WEB应用程序中要使用spring,首先想要与哪个类打交道?ApplicationContext!但是ApplicationContext ...

  9. Eclipse开发Spring MVC入门示例

    一 新建一个动态web工程,并导入包 如图: 二 Spring控制器类 创建一个Spring MVC的一个控制类,并处理请求,打印一句话'Spring MVC示例 ', 那我们先创建包com.tian ...

最新文章

  1. 泰坦尼克号数据集_机器学习(入门)--Kaggle项目之泰坦尼克号
  2. USACO 1.0_Friday the Thirteenth
  3. mysql修改表结构大表_在线修改MySQL大表的表结构
  4. ProFTPD 初探
  5. python时间模块的使用
  6. python之HTTP处理模块urllib和urllib2
  7. go - 构造复杂json串
  8. ELK logstash gork匹配在线测试
  9. 论文撰写-LaTex 教程+模板
  10. java 扒网站_扒网站工具,看好哪个网站,指定好URL,自动扒下来做成模版。所见网站,皆可为我所用!...
  11. 华为手机图标怎么变小_华为手机怎么设置图标由大变小
  12. 财报季 | 贝壳找房2021年上半年营收449亿元,月活用户达5000万
  13. C# 将系统时间转换成农历时间
  14. OpenCV3车牌识别(C++版)
  15. Android应用在新浪微博授权提示:文件不存在 C8998 的解决方法
  16. php 根据时间获取二十四节气
  17. CentOS命令行改色。
  18. Git三板斧【linux环境】
  19. 便携设备:小终端激起大变局
  20. 滤波器中通带纹波、阻带纹波、通带最大波纹和阻带最小衰减

热门文章

  1. java list_java中的list集合
  2. 使用这个插件,fiddler抓包直接生成httprunner脚本
  3. 这个简单的常见面试题,怎么答才会加分?
  4. 基于持续集成的轻量级接口自动化测试 【持续更新...】
  5. android使用lombok_Android Studio 使用Lombok
  6. codeblock 安装debug调试
  7. php 扩展库 开发环境,PHP 扩展开发环境搭建
  8. android bootstrap功能,整合QMUI Android和Android-Bootstrap
  9. python中将数字转换成二进制数
  10. 每当再右侧的选择框中选中一个人的名字时,便在左侧的文本区中显示出此人的情况介绍,按close按钮时结束程序的运行