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