1.SpringMVC介绍:
SpringMVC是一个前端控制框架,主要用来负责与页面的交互.SpringMVC是Spring家族的一大组件.Spring整合SpringMVC可以做到无缝集成.
2.Servlet
缺点:
1.一个servlet需要编写8行配置问题
2.一个servlet只能处理一个业务逻辑 addUserServlet,updatUserServlet
3.对于一张表而言操作方法至少4个----4个servlet----32行配置文件
4.获取属性的值的,必须request.getParameter("name");
5.servlet获取的参数只能是String类型,需要经过手动的类型转化.
3.SpringMVC四大组件
Url:localhost:80/项目名称/addUserServlet
1.前端控制器(DispatcherServlet)
作用:主要负责request对象和response对象的转发和响应.
2.处理器映射器
匹配能够处理请求的类.交给前端控制器
3.处理器适配器
调用适当的处理器 去执行请求
4.视图解析器
将用户返回的页面名称为其拼接真实的路径
User------/WEB-INF/user.jsp
4.SpringMVC的内部调用过程
Url:localhost:8090/项目名称/findUser.action /.do
步骤:
1.客户端发送请求到前端控制器
Url:localhost:8090/项目名称/findUser.action
2.根据用户的url找到匹配的Controller
3.将Controller的具体路径返回给前端控制器
4.请求处理器适配器 执行Controller
5.内部工具规则匹配到对应的处理器执行请求
6.处理器执行请求后将结果封装为ModelAndView对象返回给处理器适配器
ModelAndView 分别为Model和View
Model:处理后的数据
View: 给用户展现的视图的名称(hello)
7.将ModelAndView对象返回给前端控制器
8.请求视图解析器 解析View对象
视图解析器,根据返回的页面名称,拼接前缀和后缀,形成一个页面的完整路径 /WEB-INF/hello.jsp
9.将Veiw对象形成真实的页面路径返回给前端控制器
10.将Model的数据填充到页面中(将数据填充到request域中)
5.SpringMVC的入门案例
分析:自己编的内容
1.配置前端控制器 指定拦截范围
2.处理器映射器中 指定映射关系 findUser----->Controller
3.真正的业务逻辑 在Controller中指定业务逻辑
4.配置视图解析器 指定页面路径
1.导入jar包
将jar包导入到lib中
2.配置前端控制器
3.编写SpringMVC的核心配置文件
配置文件的名称:
默认的:springmvc-servlet.xml
源码:
public String getNamespace() {
return (this.namespace != null ? this.namespace : getServletName() + DEFAULT_NAMESPACE_SUFFIX);
}
4.编辑映射关系
Url---Controller
/hello.action-------->HelloController
5.编辑Controller
6.配置视图解析器
7.测试:
需要编辑正确的action.才能让程序正常调用
6.将springmvc-servlet.xml 存入src文件下
1.方便jar代码的调用
2.如果名称修改则不能加载配置文件
将配置文件放置到src下是通用的做法.但是web.xml中如果不做任何的配置,根据默认的名称扫描的是WEB-INF目录.这样做肯定有问题.
解决方法:
7.SpringMVC的注解形式
需求:按照传统的方式,一个action对应一个Controller这样的写法太繁琐.
改进:使用SpringMVC的注解形式
配置文件:
使用注解
SpringMVC的注解的使用原理:
当服务器启动时,先会加载web.xml,之后通过引入核心配置文件加载springmvc.xml.就会解析该xml配置文件.
1.当解析到包扫描时,根据指定的包将含有@Controller注解的类,为其创建对象.
2.当解析到 <mvc:annotation-driven/> 开始匹配MVC注解
3.之后解析@RequestMapping(value="/hello.action")..之后会将value值进行保存.将方法进行绑定.
4.当用户发出请求时,处理器映射器就是匹配用户的url和保存好的value值.如果匹配成功则会执行方法.如果匹配不成功 则报404
8.获取request对象和response对象
9.快速获取页面参数
要求:页面提交的参数,必须与接收参数一致.否则不能获取正确的参数值.
10.SpringMVC为对象赋值
要求:User中必须添加setXX(),否则不能实现注入.
11.SpringMVC为对象的引用赋值
1.页面中的参数命名:
如果是为对象的引用赋值,必须有层次结构 中间用"."隔开
2.User对象
必须添加Set方法
3.对象的引用
总结:
SpringMVC进行参数赋值时,会根据页面中的参数的name属性进行赋值.如果为对象赋值.则必须要有set方法.
在SpirngMVC中记住一句话:"需要什么写什么" 都会为我们自动注入