2021-04-08

stringMvc基础

1.基本概念

导读模块:spring系列的框架因其功能强大,使用简单深受广大开发者喜爱,很常用

1.1常见的MVC形式的框架以及实现的原理
	struts1:  servlet
	struts2:  filter
	SpringMVC : servlet (本质上是基于servlet实现的)
1.2SpringMvc:是一个基于DispatcherServlet的MVC框架
			每一个请求最先访问的  都是**DispatcherServlet**(前端页面请求分发控制器/前端控制器/分发控制器),DispatcherServlet负责转发每一个
        Request请求给相应的Handler,Handler处理以后再返回相应的视图
        (View)和模型(Model)(其实就是Controller中方法之后结束之后可以直接通过ModelAndView对象实现带着数据转向),返回的视图和模型都可以不指定,即可以只返回
        Model或只返回View或都不返回。
1.3SpringMvc特点
1)  简化编程的:相对于servlet来说或者Struts2来说都要简单,少写代码了
2)  传参简单:之前servlet我们是通过request对象实现的传参,struts2的时候通过setxx()和			 	getXX(),但是Springmvc的时候我们可以有多种简便的传参方式例如通过注解和自动装箱,,,,
3)与Spring框架无缝结合(SpringMvc是Spring框架的一部分)
4)有丰富的注解
5)支持RestFul风格编程

2.基本使用

2.1导入相关jar包

2.2配置web配置文件
  <!--启动SpringMvc框架  -->
  <servlet>
   <servlet-name>springmvc</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
   <servlet-name>springmvc</servlet-name>
  <url-pattern>/</url-pattern><!-- 意思是拦截当前项目根路径下的所有请求 -->
  </servlet-mapping>
2.3配置SpringMvc配置文件
<!--配置控制器(DispatcherServlet)之所以能够找到相应的Controller是因为有处理器映射组件(HandlerMapping和相应的类)而这些要实现是依靠HandlerMapping接口的
        1.那么HandlerMapping是什么?                               
		     HandlerMapping:是一个接口且作用是处理请求的映射,然后根据请求的url找到执行这个请求的类(C层)
		                                                       简而言之:根据用户请求找到执行该请求的controller
	    2.HandlerMapping接口的实现类/实现方式有哪些?
		                 HandlerMapping接口的实现类:
						 1)BeanNameUrlHandlerMapping        : bean名url处理器映射 (默认)
						 2)SimpleUrlHandlerMapping          : 通过配置文件,把一个URL映射到Controller
						 3)DefaultAnnotationHandlerMapping  : 通过注解,把一个URL映射到Controller类上(过时了)
                         4)RequestMappingHandlerMapping:通过注解和配置文件实现将URL映射到相应的xxController上
  ps:在演示BeanNameUrlHandlerMapping的时候,我们需要将其他的实现方式给注释掉
小结(考点):         1)springmvc的DispatcherServlet在拦截到所有的URL请求之后能准确的轻松的找到想用的Controller类是依靠HandlerMapping和他的实现类
                2)HandlerMapping接口的常用实现类详
                <!-- 1.HandlerMapping接口的实现类BeanNameUrlHandlerMapping.java 	-->					
	<bean  name="/hello.action" class="com.ls.bj.HelloController"/>	
		<!--	配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 前缀 /WEB-INF/jsps/home.jsp-->
		<property name="prefix" value="/WEB-INF/jsps/"></property>
		<!-- 后缀 -->
		<property name="suffix" value=".jsp"></property>
	</bean>
               
-->	
2.3 V层
 <a  href="<%=request.getContextPath()%>/hello.action">Hello:SpringMvc</a>
2.3 C层
@Override//控制器默认执行的方法
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		  System.out.println("HelloController");
		  HandlerMapping  hMapping;
		return new ModelAndView("hello"); //hello代表逻辑名
		//WEB-INF/jsps/hello.jsp
	}

相关文章

开发过程中是不可避免地会出现各种异常情况的,例如网络连接...
说明:使用注解方式实现AOP切面。 什么是AOP? 面向切面编程...
Spring MVC中的拦截器是一种可以在请求处理过程中对请求进行...
在 JavaWeb 中,共享域指的是在 Servlet 中存储数据,以便在...
文件上传 说明: 使用maven构建web工程。 使用Thymeleaf技术...
创建初始化类,替换web.xml 在Servlet3.0环境中,Web容器(To...