SpringMVC学习(1):SpringMVC框架结构详解和入门案例详解
2017-04-21 21:48
549 查看
前言
SpringMVC是一款web MVC框架产品,说起MVC模式,想必大家都已经非常熟悉了。我们就先来回顾下MVC吧。最早的MVC结构是由servlet/JSP技术组成的,其流程大致是:jsp中的form表单提交后,数据会通过url去web.xml中匹配url-pattern,匹配到后进入对应servlet,经过servlet的处理后,再分发转向。
上面说的MVC模式弊端也很明显。一方面,一个业务逻辑对应一个servlet,分散的servlet杂乱无章。自然的,随着servlet的增多,web.xml文件中的配置项会非常多,眼花缭乱一点都不利于维护。另一方面,web请求的处理流程将各自分散处理,没有一种统一管理的方式。所以,在此基础之上的MVC框架都采用了这样一种机制:由一个核心的控制器(servlet,filter或者controller,都是一个意思)来获取用户的请求,但是它不处理业务,而是将业务分配给具体负责该项业务的下一级控制器(servlet,filter或者controller)来处理。这样,web.xml只需配置这个核心servlet,下一层servlet的任务由各大框架提供的配置文件来配置。
举例:Struts2框架的核心控制器就是一个filter,这个核心filter不处理业务,只过滤用户的请求,然后将具体的任务分配给filter栈。SpringMVC的核心控制器是一个servlet,它也只是分配任务给下一层servlet,下一层的servlet完成任务后再把结果返回给核心控制器。核心控制器就像是一个中转站。
正文
一,SpringMVC框架的结构图二,简单入门案例:点击跳转
1,web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" 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_2_5.xsd"> <display-name></display-name> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
2,index.jsp(起始页)
<body> <a href="${pageContext.request.contextPath }/hello.do">点击跳转</a> </body>
3,MyController.class,继承自Controller,Controller像极了servlet。
package com.jimmy.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; public class MyController implements Controller{ public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { //处理request和response对象,这里并没有处理 ModelAndView mav = new ModelAndView(); //结果视图 mav.addObject("name","jimmy"); //相当于request.setAttribute()方法 mav.setViewName("success"); //跳转页面 return mav; } }
4,SpringMVC-servlet.xml,该文件就是SpringMVC的配置文件,如果想在web.xml中不直接引用该文件,该文件的名字应为:“servletName-servlet.xml”,并且放在web.xml相同的路径下(/WEB-INF/)。
<?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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!-- 1,配置handlerMapping,默认就是下面这个类,不配置也默认是它 --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 2,配置自定义bean(MyController) --> <bean name="/hello.do" class="com.jimmy.controller.MyController"></bean> <!-- 3,配置handlerAdapter,默认就是下面这个类,不配置也默认是它 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- 4,配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
5,success.jsp,结果视图文件,显示controller中设置的“name”参数。
<body> ${name } </body>
至此,启动web服务器,访问index.jsp,点击链接,就能跳转至success.jsp,并显示name的值。
总结
SpringMVC的思想跟Struts还是有相似的地方,只不过SpringMVC师出名门,有Spring的强大支持,其使用会更方便。相关文章推荐
- 【02】框架学习—Hibernate第一个入门案例详解
- 【06】框架学习—Struts2第一个入门案例详解
- SpringMVC框架的学习及入门案例编写
- springmvc学习笔记(1)-框架原理和入门配置
- JavaEE框架——Springmvc入门(注解URL核心类详解、文件上传和下载)、和Spring的整合
- Springmvc学习(01)-框架原理 && 入门配置
- iOS swift学习之入门详解(枚举和结构)
- struts2学习笔记 -- day01struts开发包详解、入门案例环境搭建
- MyBatis框架学习(二)-MyBatis入门案例
- 【01】框架学习—Hibernate第一个入门案例
- dwrWEB远程调用框架入门学习 SpringMVC实现
- ci框架基础详解(入门学习)
- # springmvc学习笔记(1)-框架原理和入门配置
- springMVC学习笔记之入门案例
- Scrapy 爬虫框架入门案例详解
- Scrapy 爬虫框架入门案例详解
- springmvc学习笔记(1)-框架原理和入门配置
- Spring学习(1):控制反转(IoC)和依赖注入(DI)的详解以及注解(annotation)开发入门案例
- 三大框架学习:Struts2简单入门(通过一个简单的登陆实例详解)
- java安全框架-Shiro学习笔记(一)-入门小案例