Study of SpringMVC

SpringMVC

What is Spring MVC

MVC:
M-Model 业务逻辑,包含业务数据和业务处理逻辑,如实体类、DAO、Service;
V-View 负责显示界面和用户交互;
C-Controller 控制流程,Servlet中的单一控制器ActionServlet

The Core of Spring MVC

DispatcherServlet: 控制器请求入口
HandlerMapping: 控制器请求派发
Controller :控制器,请求处理流程
ModelAndView: 封装业务处理结果和视图
ViewResolver: 视图显示处理器

The Processing of SpringMVC

1、浏览器向Spring发出请求,请求交给前端控制器(DispatcherServlet)处理;
2、控制器通过HandlerMapping 找到相应的Controller组件处理请求;
3、执行Controller组件约定方法处理请求,在约定方法调用模型组件完成业务处理,约定方法可以返回一个ModelAndView 对象,封装了处理结果数据和视图名称信息
4、控制器接收ModelAndView之后,调用ViewResolver组件,定位View(JSP)并传递数据信息,生成响应界面结果

How to Build the Environment of SpringMVC

MyProject

1、创建WebProject,导入Spring Web MVC 相关开发包
Spring API, web, webmvc等;
jar包真的很重要,报错80%的原因归结于jar包。
报错1:

java.lang.ClassNotFoundException: org.springframework.context.EnvironmentAware

原因分析:
1、spring-web相关的jar包没导进去,添加
2、jar包有冲突,把重复的jar包删除
3、Tomcat启动时默认的读取的是/WEB-INF下的配置文件,如果配置文件在src中要把路径改为类路径底下
4、由于工程是部署在服务器底下的,所以要把加入的jar包部署到工程里。


文件目录
lib下的jar包

报错2

加载jar包后,记得要Refresh!
报错2:

java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor.<init>(Lorg/springframework/core/io/ResourceLoader;)V

报错原因分析:如图:


原因分析

报错3:

java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

原因分析:需要加载spring-webmvc包,并且要找到相应的版本(检查web.xml文件的配置,jar包版本等)

2、 在src下添加Spring的xml配置文件

HandlerMapping

配置文件中对HandlerMapping组件进行配置,通过HandlerMapping组件,DispatcherServlet控制器可以将客户Http请求映射到Controller组件

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
    <props>
        <prop key="/hello.form">helloController</prop>
    </props>
</property>
</bean>
<!-- Controller组件 -->
<bean id="helloController" class="org.com.Controller.HelloController"></bean>

3、 在web.xml中配置DispatcherServlet组件

Dispatcher Servlet

<!-- 配置DispatcherServlet -->
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
              org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <!-- 指定XML配置文件,初始化时加载 -->
    <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
   <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.form</url-pattern>
   </servlet-mapping>

Controller

Controller组件负责执行具体的业务处理,可调用DAO等组件

public class HelloController implements Controller {
    //Controller组件约定handleRequest方法执行后返回一个ModelAndView
    //对象,该对象封装模型数据和视图名
    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp){
        System.out.println("受理请求!");
        return new ModelAndView("Hello!");
    }
}
<!-- Controller组件配置到spring-mvc.xml中 -->
<bean id="helloController" class="org.com.Controller.HelloController"></bean>

ModelAndView

ModelAndView对象用于封装模型数据和视图响应信息

ViewResolver

视图解析器

<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>

项目部署到Tomcat服务器后,启动Tomcat得到:

启动Tomcat服务器

@RequestMapping

@RequestMapping用在类定义和方法定义,用于标注该类或方法与哪个客户请求对应;

@Controller

@Controller用于声明Controller组件,这样可以使得Controller定义更加灵活,可以不用实现Controller接口,请求处理的方法也可以灵活定义。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容