记录学习SpringMVC过程中的一些笔记和问题,在以后的使用过程中继续完善和补充。
写博客能加深理解,便于以后回忆,以及在工作中查询
1.什么是SpringMVC
MVC是三层架构,SpringMVC即Spring实现的三层架构
2.学习过程的转变
JavaSE:认真学习,有课程,书籍
JavaWeb:认真学习,有课程,书籍
SSM框架:研究官方文档,锻炼读文档的能力
3.接下来还要学的技术
SpringMVC+Vue+SpringBoot+SpringCloud+Linux
4.SpringMVC的重中之重,面试经常问!
SpringMVC的执行流程
5.什么是MVC
M(模型):dao,service
功能:提供要展示的**数据和行为**
V(视图):Jsp
功能:向用户展示的界面
C(控制器):sevlet;
功能:接收用户请求,将用户请求交给模型去处理,最后将处理的结果返回给用户,相当于调度员
MVC是一种设计思想,最典型的就是JSP+Servlrt+Service
_____________________________________________
Model1时代
客户端发送的请求直接交给JSP页面(不经过Servlet调度),JSP接收到请求后调用业务逻辑方法(JavaBean)进行处理,最后将处理的结果返给用户。
Model2时代
项目是一步一步演变的,如Alibaba
初识SpringMVC
什么是SpringMVC
SprongMVC是SpringFrameWork的一部分,是基于Java实现的MVC设计模型的请求驱动类型的轻量级Web框架。
SpringMVC和Struts2一样,是MVC框架的一种
为什么要用SpirngMVC
1.SpringMVC是Spring的一部分,因此相比较Struts2,Spring更容易和Spring整合。
SpringMVC的特点:
1.清晰的角色划分
(1)前端控制器(DispatcherServlet)
(2)请求到处理器映射(HandlerMapping)
(3)处理器适配器(HandlerAdapter)
(4)视图解析器(ViewResolver)
(5)处理器或页面控制器(Controller)
(6)验证器(Validator)
(7)命令对象(Command 请求参数绑定到的对象就是命令对象)
(8)表单对象(Form Object 提供给表单展示和提交到的对象就是表单对象)
1.轻量级,简单易学
导入的依赖非常简洁
2.高效,基于请求响应的MVC框架
不是以事件为驱动,而是接收用户请求并进行响应
3.可以和Spring无缝衔接
可以将SpringMVC中用到的所有bean都注册到spring中
4.约定优先于配置
5.功能强大:RESTful,数据验证,格式化,本地化,主体等
6.使用的人多
Spring的核心是DispatcherServlet,用户的所有web请求都会被DispatcherServlet接收,然后发送到不同的servlet进行处理。SpringMVC用注解开发很方便
SpringMVC和Struts2的共同点和不同点
共同点:
都是表现层框架,都是基于MVC模型编写的
底层都离不开ServletAPI(因为要调用request和response)
处理请求的机制都是一个核心控制器,SpringMVC的是DispatcherServlet,Struts2的是StrutsPrepareAndExecuteFilter
不同点:
SpringMVC的入口是Servlet,而Struts2的入口是Filter
SpringMVC是单例的,是基于方法的,每次的请求会调用这个类的不同方法来处理;Struts2是多例的,每次的请求都会创建一个对象来进行处理
Spring处理ajax的请求更加快捷
struts2的ognl表达式的开发效率更高,但执行效率并没有比JSTL更快
类层次(简化)
6.创建一个新的项目
方法一:
1.打开idea,选择创建一个maven工程,maven是项目管理工具
2.导入依赖(Junite,SpringMVC,servlet(可能用到),JSP,jstl(EL表达式))
junit
junit
4.12
org.springframework
spring-webmvc
5.1.9.RELEASE
javax.servlet.jsp
jsp-api
2.2
javax.servlet
servlet-api
2.5
javax.servlet
jstl
1.2
3.创建一个子项目
点击当前项目,右键new一个model。
选中maven,点击next。
修改artifactId,点击finish。
4.将新创建的子项目变成一个web项目
点击当前子项目,右键,添加项目支持
遇到的问题:没有项目支持
问题原因:缺少web依赖
解决方法:添加JavaEE依赖
步骤:
1.点击File-->settings-->plugins
2.选中JavaEE,下载,重启即可
启示:在添加其它的项目支持时,如果找不到,可以用此方式下载依赖
仍存在的问题,找不到JavaEE依赖
问题原因:可能是我的版本是社区版,有些功能无法使用
最终解决:下载了最终版的解决问题,社区版搜索不到spring插件
方法二(直接创建webapp)
第一步 创建项目
补全目录
第二步 搭建环境
1.导入jar包(坐标引入依赖)
5.0.2.RELEASE
org.springframework
spring-context
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
javax.servlet
servlet-api
2.5
provided
javax.servlet.jsp
jsp-api
2.0
provided
2.在web.xml中配置前端控制器
1.配置servlet
2.配置servlet-mapping
3.指定ContextConfiguration位置
Archetype Created Web Application
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
dispatcherServlet
/
3.配置springmvc.xml
第三步 部署服务器
1.选择一个服务器,如果没有,需要创建一个
启动项目时,出现错误
原因:8080端口被其它进程占用
解决方法:
1.打开命令行,输入netstat -ano命令
2.找到占用8080端口的进程的id
3.打开任务管理器,结束该进程即可