Spring MVC
Spring MVC2
原理
DispatcherServlet:前段控制器 总控制器
作用拦截所有的请求 :把请求交给对应的控制器
控制器有两种:
1.DispatcherServlet
拦截请求把请求交给对应的controller
2.我们自定义的Contraller
处理请求,返回结果
假设DispatcherServlet类不工作 ,或者实例化比较晚,所有的controller都没有办法处理请求了 DispatcherServlet一定第一时间就要被实例化
怎么保证第一时间被实例化
放在web.xml文件中
二:怎么用
对于我们说,框架搭建好之后,我们程序员主要把精力放在controller service dao jsp即可
剩下的工作交给 spring mvc的一套流程即可
1.comtroller 跟传统的servletbi有什么优点
a:不需要继承很多的类
b:可以写很多额方法
一个类只需要写一个Controller即可
与这个类相关的所有的方法都可以写在这个controller中
c:传参比较方便
三:登录的案例
现在已经成功的调用Controller
怎末把值从页面传递到controller的登录方法?
知道登录后的数据封装到request里的 ,只有获取到request就可以了
1.先按照熟悉的方式获取 获取 request
a.现在pox.xml里面添加servlet的jar包
javax.servlet javax.servlet-api 4.0.1 provided javax.servlet.jsp javax.servlet.jsp-api 2.3.3 provided
b.向contraller注入了一个对象了 from中的数据默认放在request中
(官方不是推荐的)
2.第二种方法把值从页面传递到controller
只要和form表单的对应好,数据就会自动的映射到controller中,我们不应在手动的从request中取值
由contoller完成
3.第三种的方法把值从页面传递到controller 如果要传的值很多可以传一个对象进去 3.第三种的方法把值从页面传递到controller 如果要传的值很多可以传一个对象进去 user中的数据从request(HttpServletRequest)拿到值后放到对象中 怎末来的? users的数据来自DispatchServlet,DispatcherServlet的数据来自HttpServlet 一句话DispatcherServlet可以拿到HttpServlet(包括HttpServletRequest)中的值 通过反射放到controller的Users对象中 注意: DispatcherServlet先从request中获取值,利用反射实例化controller中参数实例,利用反射赋值 ,对于我们来说参数一直即可 4.第四种第三种的方法把值从页面传递到controller 这种好处 RequestParam 注解中值,跟后面的绑定的值可以不一样 二:出参 登录成功后返回对象 将controller传给jsp页面展示出来 1.model
注意:
spring mvc 默认不识别el表达式 解决 在成功页面添加 <%@ page isELIgnored="false" %> 2.map 只要记住一句话 把要返回的参数,放在Map中就可以 页面通过EL表达式就可以拿到值 原理: controller 中的值给了DispatcharServle ,把值方法request 第三中 ModelAndView