spring MVC

来源:互联网 发布:ubuntu英文改中文 编辑:程序博客网 时间:2024/06/15 08:01

SpringMVC 简介

SpringMVC也叫Spring Web  mvc,属于表现层的框架。Spring MVC是Spring框架的一部分,是在Spring3.0后发布的








Spring MVC 的请求流程

request-------->DispatcherServler(中央调度器/前端控制器)----->


HandlerMapping(处理器映射器)------>返回一个执行链----->将执行链转交给HandlerAdaptor(处理器适配器)----->调度Handler(处理器)----->


ModelAndView----->先将结果交给HandlerAdaptor,然后再由HandlerAdaptor转交给 DispatcherServler--------->DispatcherServler调度ViewResolver(视图解析器)---->交给DispatcherServler------->
寻找View---->View做出响应(response)

Spring 的第一个入门案例



配置步骤

1.在web.xml中配置前端控制器


2.处理器映射器(HandlerMapping)


3.处理器适配器 (HandlerAdaptor)



4.处理器


5.视图解析器(ViewResolver)


当你们老师问你们为什么只有这两行标红的时候你告诉他

因为其他的可以省略这两个不可以。英语:Because the other can be omitted, these two can not be


注册中央调度器

这写代码是写在web.xml里面的

<display-name>Archetype Created Web Application</display-name>  <!--配置前端控制器-->  <servlet>  <servlet-name>springmvc</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <!--初始化参数-->  <init-param>    <param-name>contextConfigLocation</param-name>    <param-value>classpath:springMVC.xml</param-value>  </init-param>  <!--只要tomcat一起动,就将servlet对象创建好放入内存-->  <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>springmvc</servlet-name>  <url-pattern>/</url-pattern></servlet-mapping>
</web-app>
定制处理器

你定义的一个类实现一个接口

Controller 

public class spring  implements Controller {    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {        ModelAndView mv=new ModelAndView();        mv.setViewName("1");        return mv;    }}
其实你刚开始做第一个例子的时候那个添   1    的地方其实填的是一个路径因为我用了一个方法吧那个给省略了
jsp页面搭建
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>Title</title></head><body>信星爷得永生<img src="/images/1.jpg"/></body></html>
springmvc.xml配置
其实就是大配置里面啦
<bean id="/hello.do" class="cn.happy.Controller.spring"></bean>

然后你就可以运行了   

效果就是:


然后   你可以进行代码的提升啦

视图解析器


就像上面我写的那个1   其实那是个jsp页面  的名字    如果你感觉没次都要写很多很麻烦就试试这个。

关于urlpattern说法

最好配成*.do
不能配成/*      无法访问*.jsp等动态资源
最好也不要配成/   无法访问静态资源
不得
不配成/

一切源于Restful编程  rest

不能配置为/*

DispatcherServlet会将向动态页面请求,即向jsp页面的跳转请求也当做是一个普通的Controller请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然是找不到的。jsp页面会报404错误
结论:/*会拦截动态资源


方案二:使用MVC的default-servlet-handler

会将对静态资源的访问请求通过HandlerMapping映射到默认Servlet请求处理器DefaultServletRequestHandler对象。而该处理器调用了Tomcat的DefaultServlet来处理静态资源的访问请求。当然需要引入mvc约束

<mvc:default-servlet-handler/>
没错这么一小句话的作用
方式三:使用MVC的resource解决

在Spring3.0.4之后,Spring定义了专门用于处理静态资源请求的处理器ResourceHttpRequestHandler。并且添加了<mvc:resources/>标签,专门用于解决静态资源无法访问问题。


<mvc:resources mapping="/img/**" location="/images/"></mvc:resources>

Location:静态资源所在目录
mapping: 对资源的请求
注意:需要Tomcat7支持



原创粉丝点击