SpringMVC学习笔记

SpringMVC概述

Spring MVC是spring提供的一个强大而灵活地web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使控制器的开发和测试更简单。这些控制器一般不直接处理请求,而是将其委托給Spring上下文中的其他bean,通过spring的依赖注入功能,这些bean被注入到控制器中
SpringMVC:对servlet做的一个封装,换成controller层
SpringMVC主要由DispatcherServlet、处理器映射、处理器适配器、视图解析器、视图组成。它的两个核心是:
**处理器映射:**选择使用哪个控制器来处理请求
**视图解析器:**选择结果应该如何渲染
以上两点,Spring MVC保证了如何选择控制处理请求和如何选择视图展现输出之间的松耦合

Spring的处理流程原理

spring架构:
在这里插入图片描述框架流程如下:

  1. 用户发送请求至前端控制器DispatcherServlet
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
  3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
  4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
  5. 执行处理器(Controller,也叫后端控制器)
  6. Controller执行完成返回ModelAndView
  7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
  8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器
  9. ViewReslover解析后返回具体View
  10. DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
  11. DispatcherServlet响应用户

配置文件的配置

1、web.xml文件的配置


	<!--配置springMVC 入口 -->
  		<servlet>
  			<servlet-name>springMVC</servlet-name>
  			<!--springMVC分发器   前端控制器-->
  			<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  			<!--默认到WEB-INF下加载springmvc的配置文件  <servlet-name></servlet-name>  -->
  			
  			<!--指定位置下的springmvc配置文件  -->
  			<init-param>
  					<param-name>contextConfigLocation</param-name>
  					<param-value>classpath:com/config/springmvc-servlet.xml</param-value>
  			</init-param>
  			<!--配置一个大于等于0的数,在服务器启动时,实例化  -->
  			<load-on-startup>1</load-on-startup>
  		</servlet>
  		<servlet-mapping>
  		
  		<!--URI地址规则匹配 *.do   处理器映射  会拦截*.do结尾的请求-->
  			<servlet-name>springMVC</servlet-name>
  			<url-pattern>*.do</url-pattern>
  		</servlet-mapping>

当映射为@RequestMapping("/user/add")时:

  1. 拦截*.do,例如:/user/add.do,弊端:所有的url都要以.do结尾。不会影响访问静态文件。
  2. 拦截/app/*,例如:/app/user/add,弊端:请求的url都要包含/app,@RequestMapping("/user/add")中不须要包含/app。
  3. 拦截/,例如:/user/add,弊端:对jpg,js,css静态文件的访问也被拦截不能正常显示。后面有解决办法。
  4. 拦截/*,可以走到Action中,但转发到jsp时再次被拦截,不能访问到jsp。
    2、添加配置SpringMVC的主配置文件springmvc-servlet.xml
		<!--注解处理器适配器 -->
		<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
		<!-- 开启注解扫描 -->
		<context:component-scan base-package="com.servlet"></context:component-scan>
		<!--mvc注解启动,自动注册mvc依赖的内置bean  此标签自动加载处理映射器和处理器适配器-->
		<mvc:annotation-driven></mvc:annotation-driven>
			
		<!--配置视图解析器,拼接返回的URI   视图解析类-->  
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
				<property name="prefix" value="/"></property>
				<property name="suffix" value=".jsp"></property>

		</bean>

3、创建一个普通类,添加对应注释

@Controller
public class ClientController(){
	@RequestMapping("/client/loginAction")
	public String login(Client client  ) {
		System.out.println("this is mvc action");
		System.out.println("username id:"+client.getCliName());
		System.out.println("password id:"+client.getCliPassword());
		return "success";
	}
}	

过滤器

<!--spring提供的字符编码过滤器  -->
 <filter>
  <filter-name>characterEncodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  		<init-param>
  			<param-name>encoding</param-name>
  			<param-value>UTF-8</param-value>
  		</init-param>
  		<!--响应字符编码集  -->
  		<init-param>
  			<param-name>forceEncoding</param-name>
  			<param-value>true</param-value>
  		/init-param>
  	</filter>
  	<!--过滤所有地址请求  -->
  	<filter-mapping>
  		<filter-name>characterEncodingFilter</filter-name>
  		<url-pattern>/*</url-pattern>
  	</filter-mapping>

工作流程:
加载web.xml,读取配置,启动SpringMVC
发送URL请求,匹配规则*.do 实例化SpringMVC的Servlet对象
扫描注解路径,寻找标记注解@Controller层
根据URI请求的地址,匹配方法上的注解@RequsetMapping的值
执行方法
解析返回值,匹配默认的视图解析器,拼接成一个跳转的URI(默认转发)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值