SpringMVC框架学习笔记整理-动⼒节点王鹤(⽆必详细)
继续整理了Springmvc的学习笔记,动⼒节点王鹤⽼师讲的springmvc,分享给⼤家。
看了这么多⽹上的视频,还是只有王鹤⽼师讲的能听明⽩…就喜欢讲的细的,⽽且⽼师条理很清晰
第⼀章 SpringMVC 概述
spring ioc注解1.1 SpringMVC 基本说明
SpringMVC是基于spring的, 是spring中的⼀个模块,做web开发使⽤的。 springmvc 叫做spring web mvc
说明他是spring的核⼼技术, 做web开发,springmvc内部是使⽤mvc架构模式。
SpringMVC 是⼀个容器, 管理对象的,使⽤IoC核⼼技术。 springmvc管理界⾯层中的控制器对象。
SpringMVC底层也是Servlet。 以Servlet为核⼼, 接收请求,处理请求。 显⽰处理结果给⽤户。
处理⽤户的请求:
⽤户发起请求----SpringMVC—Spring—MyBatis–mysql数据库
1.2 SpringMVC中的核⼼Servlet – DispatcherServlet
DispatcherServlet 是框架⼀个Servlet对象。 负责接收请求, 响应处理结果。
DispatcherServlet 他的⽗类是HttpServlet
DispatcherServlet 也叫做前端控制器( front controller)。
SpringMVC是管理控制器对象, 原来没有SpringMVC之前使⽤ Servlet作为控制器对象使⽤。现在通过SpringMVC容器创建⼀种叫做控制器的对象,代替Servlet⾏驶控制器的⾓⾊。功能。
SpringMVC 主要使⽤注解的⽅式, 创建控制器对象, 处理请求。
<servlet>
<servlet-name>myweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--⾃定义配置⽂件的位置-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>l</param-value>
</init-param>
<!--
表⽰服务器tomcat创建对象的顺序,是个整数值,⼤于等于0.
数值越⼩,创建对象的时间越早。
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myweb</servlet-name>
<!--
url-pattern 作⽤: 把⼀些请求交给指定的servlet处理
使⽤中央调度器(DispatcherServlet)
1. 使⽤扩展名⽅式,格式 *.xxx ,  xxx是⾃定义的扩展名。
例如  *.do , *.action, *.mvc 等等. 不能使⽤*.jsp
localhost:8080/myweb/some.do
localhost:8080/myweb/user/list/queryUser.do
localhost:8080/myweb/user/list/list.do
2. 使⽤斜杠 "/"
-->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
1.3 springmvc请求的处理过程
简单的处理过程:
⽤户发起请求some.do—>Tomcat接收了请求—DispatcherServlet–分配MyController(doSome()返回mv对象)–mv显⽰给⽤户了。省略tomcat
⽤户some.do--------------DispatcherServlet--------------MyController
如果使⽤servlet处理请求
⽤户发起请求--------------------没有其他对象------------------------Servlet
1.4 复习
⽤户发起some.do—DispatcherServlet(Servlet接收请求)—转给MyController public class DispatcherServlet extends HttpServlet{
public void service(HttpServletRequest request, HttpServletResponse response){
if("some.do".URI())){
//从容器中获取MyController
MyController c  = Bean("some"));
c.doSome();
} e lse if("other.do".URI())){
OtherController c  = Bean("other"));
c.doOther();
}
}
}
1.5 web开发中配置⽂件的说明
1. l 部署描述符⽂件 , 给服务器(tomcat)。
作⽤:服务器在启动的时候,读取l ,根据⽂件中的声明创建各种对象,根据⽂件中的声明 知道 请求和servlet等对象的关系。
2. 框架的配置⽂件, springmvc的配置⽂件
作⽤:声明框架创建的项⽬中的各种对象, 主要是创建Controller对象的
配置⽂件的加载顺序和功能
1. tomcat服务器启动, 读取l. 根据l⽂件中的说明,创建对象。
<servlet>
<servlet-name>myweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--⾃定义配置⽂件的位置-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>l</param-value>
</init-param>
<!--
表⽰服务器tomcat创建对象的顺序,是个整数值,⼤于等于0.
数值越⼩,创建对象的时间越早。
-->
<load-on-startup>1</load-on-startup>
</servlet>
创建DispatcherServlet他的对象, 会执⾏init()⽅法。 在init()⽅法中会执⾏ springmvc容器对象创建
WebApplicationContext ctx = new ClassPathXmlApplicationContext(“l”)
2. springmvc框架, new ClassPathXmlApplicationContext()读取springmvc的配置⽂件。
<component-scan base-package="ller"/>
<!--声明视图解析器:帮助处理视图-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀:指定视图⽂件的路径-->
<property name="prefix"value="/WEB-INF/view/"/>
<!--后缀:视图⽂件的扩展名-->
<property name="suffix"value=".jsp"/>
</bean>
使⽤组件扫描器base-package=“ller” ,遍历controller包中的所有类,MyController类, 到这个类中的@Controller, @RequestMapping注解, 就能创建MyContoller对象。
知道some.do的请求是执⾏doSome()⽅法
以上 1, 2. 都是项⽬启动的过程, 没有执⾏任何的⽤户请求。
3. ⽤户发起请求some.do----DispatcherServlet
DispatcherServlet⾥⾯有 WebApplicationContext 。 WebApplicationContext ⾥⾯有MyController对象。
请求some.do ,DispatcherServlet 就知道是 MyController处理的。
1.6 SpringMVC内部的执⾏流程
springmvc内部请求的处理过程:
1. ⽤户发起请求给DispatcherServlet
2. DispatcherServlet把请求(request)交给了 处理器映射器。
处理器映射器: springmvc框架中的对象, 需要实现HandlerMapping接⼝。
映射器作⽤: 从springmvc容器中,获取控制器对象(MyController),把到的控制器和对象都放到 处理器执⾏链对象中,保存,并返回给中央调度器。(MyController controller = Bean())
3. DispatcherServlet把获取到的处理器执⾏链中的控制器对象,交给了处理器适配器
处理器适配器:是springmvc框架中的对象, 实现HandlerAdapter接⼝。
适配器作⽤: 执⾏控制器的⽅法, 也就是执⾏MyController.doSome()⽅法。得到结果ModelAndView
4. DispatcherServlet把控制器执⾏结果mv交给了 视图解析器
视图解析器: springmvc中的对象,需要实现ViewResolver接⼝。
视图解析器作⽤: 处理视图的, 组成视图的完整路径。 能创建View类型的对象
5. DispatcherServlet调⽤View类的⽅法, 把Model中的数据放⼊到request作⽤域。 执⾏request.setAttribute(), 对视图执⾏
forward()转发⾏为, RequestDispather("/show.jsp").forward(request,response)
第⼆章 SpringMVC 注解式开发
2.1 @RequestMapping注解的使⽤。
属性: value 请求的uri地址。
位置: 1) 在⽅法的上⾯, 必须的。 2)在类的上⾯作为模块名称
@RequestMapping(value ="/some.do")
public ModelAndView doSome(){
属性 method 请求的⽅式, 使⽤RequestMehtod类的枚举,表⽰请求⽅式
@RequestMapping(value ="/other.do",method = RequestMethod.POST)
public ModelAndView doOther(){
2.2 接收请求中的参数
对应HttpServletRequest, HttpServletResponse, HttpSession 只需要在控制器⽅法的形参列表中,定义就可以了。框架会给参数赋值, 在控制器⽅法内部可以直接使⽤ request,response,session参数。
400 : http status , 表⽰客户端异常。 主要是发⽣在⽤户提交参数过程中。
接收请求中的参数: 逐个接收, 对象接收
2.2.1 逐个接收
逐个接收: 请求中的参数名和控制器⽅法的形参名⼀样。按照名称对象接收参数
<p>逐个接收请求参数</p>
<form action="receive-property.do"method="post">
姓名:<input type="text"name="name"><br/>
年龄:<input type="text"name="age"><br/>
<input type="submit"value="提交参数">
</form>
Controller接收参数
@RequestMapping(value ="/receive-property.do")
public ModelAndView doPropertyParam(String name, Integer age){}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。