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包
 

 

 

<!--加入servlet依赖(servlet的jar)--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!--jsp的依赖(jsp相关的jar加进来)--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> <scope>provided</scope> </dependency>
 
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

 

 

posted @ 2022-05-17 15:20  码农在广场  阅读(32)  评论(0)    收藏  举报