SpingMVC

记录学习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)进行处理,最后将处理的结果返给用户。

image

Model2时代

image

项目是一步一步演变的,如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更快

image.png

类层次(简化)

image.png
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。

image.png

选中maven,点击next。

image.png

修改artifactId,点击finish。

image.png
4.将新创建的子项目变成一个web项目

点击当前子项目,右键,添加项目支持

image.png

遇到的问题:没有项目支持
    问题原因:缺少web依赖
    解决方法:添加JavaEE依赖
    步骤:
        1.点击File-->settings-->plugins
        2.选中JavaEE,下载,重启即可
    启示:在添加其它的项目支持时,如果找不到,可以用此方式下载依赖
仍存在的问题,找不到JavaEE依赖
问题原因:可能是我的版本是社区版,有些功能无法使用
最终解决:下载了最终版的解决问题,社区版搜索不到spring插件

方法二(直接创建webapp)

第一步 创建项目

SpingMVC_第1张图片
SpingMVC_第2张图片
SpingMVC_第3张图片
SpingMVC_第4张图片

补全目录

SpingMVC_第5张图片
SpingMVC_第6张图片
指定文件夹功能
SpingMVC_第7张图片
SpingMVC_第8张图片

第二步 搭建环境
1.导入jar包(坐标引入依赖)

SpingMVC_第9张图片



 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

SpingMVC_第10张图片



 
 
 
 
 
 
  

第三步 部署服务器

1.选择一个服务器,如果没有,需要创建一个

SpingMVC_第11张图片
SpingMVC_第12张图片
SpingMVC_第13张图片
出现问题
SpingMVC_第14张图片
SpingMVC_第15张图片
SpingMVC_第16张图片
SpingMVC_第17张图片
SpingMVC_第18张图片
也可能只需要最后一步

启动项目时,出现错误
SpingMVC_第19张图片
原因:8080端口被其它进程占用
解决方法:

1.打开命令行,输入netstat -ano命令
2.找到占用8080端口的进程的id

SpingMVC_第20张图片

3.打开任务管理器,结束该进程即可


































































































你可能感兴趣的:(spring)