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支持