springmvc其实就是一个servlet,比servlet用法更简单更灵活更方便
是三层架构中的controller层
主要功能就是根据用户的url地址匹配执行不同的代码块
传统servlet的缺点
1.每进行一个业务操作例如增加商品或删除商品都得创建一个 servlet,每次创建完一个servlet就得在web.xml中配置一个servlet
如果项目特别大的话操作极其复杂
2.servlet获取用户提交的参数步骤繁琐,每次接收一个参数都得 调用request.getParameter();方法而且类型都是String类型的还得 自己转换参数类型
SpringMVC的优点
1.只需创建一个并在web.xml中配置一个DispacherServlet(前端控制器)
2.用户发送的参数在springmvc中可以将参数自动封装成对象来接收
SpringMVC原理
Springmvc的组件有:
前端控制器:(spring自动管理需要在web.xml配置文件中配置)
相当于一个中转站
处理器映射器:(spring自动管理)
根据用户的url匹配到对应的处理器适配器
处理器适配器:(需要自己手动编写)
处理加工用户发送的数据,并将处理后的数据封装成ModelView对象返回给前端 控制器
视图解析器:(spring自动管理但是需要在springmvc的核心配置文件中配置)
将处理器适配器返还的view中的逻辑页面地址进行加工前后拼接上字符串
最后包装成一个地址返回给前段控制器
视图渲染:
将前端控制器发来的数据显示在页面上
SpringMVC的配置文件:Springmvc-servlet.xml(核心配置文件在web.xml中配置 DispatcherServlet是需要将该配置文件的路径classpath:/springmvc.xml作为参数配置到 DispatcherServlet中)
1.开启包扫描扫描controller层创建处理器适配器的实例
2.开启springmvc注解
3.配置视图解析器
SpringMVC中的传参问题
1.jsp页面中的name属性值要与接收方法中的参数的名字相同
2.如果页面中的参数很多时,可以创建一个合适的javaBean类(必须要有get,set方法),类型和名字要与页面中的参数一致,接收方法中的参数可以直接写成一个对象(springmvc可以自动将参数封装成对象)
3.如果是同名提交如果用string类型接收那么同名的值会被拼接成一个字符串,如果用数组接收那么同名的数据会被封装成一个数组
4.Springmvc还能为对象的引用封装参数
SpringMVC中的地址转发与重定向问题
在处理器适配器的方法中每个方法的返回值类型都是String类型返回的是
1.要跳转的页面的逻辑地址例如(“hello”)
2.或是地址的url例如(“redirect:/findAll.action”)重定向浏览器的地址栏发生改变
3.或是地址的url例如(“forward:/findAll.action”)转发浏览器的地址栏不发生改变