关于springMVC的小知识

关于springMVC的小知识

springMVC介绍

  • SpringMVC是一个基于MVC模式的WEB/表现层框架,它解决WEB开发中常见的问题:参数接收、文件上传/下载、表单验证、国际化等等;
  • SpringMVC作为Spring框架一个非常重要的功能模块,可以与Spring无缝集成,提高开发效率;
  • Spring是一个轻量级的Java 开发框架,为了解决企业应用开发的复杂性而创建。
  • SpringMVC以Spring框架为核心,为应用程序中的Web层(表现层)提出的一套优秀的解决方案;

关于MVC模式

MVC是程序设计的一种思想

  • M:后台JAVA代码Model;包括业务代码、持久化层代码、实体Model/domain等
  • V:页面View
  • C:核心控制代码Controller

关于核心控制器

  • 核心控制器本质就是一个Servlet(由SpringMVC框架提供)
  • 核心控制器需要自己配置,交给spring容器管理(配置成IOC容器中的一个bean元素)
  • 在SpringMVC中使用的是DispatcherServlet为核心控制器。
  • DispatcherServlet核心控制器会拦截匹配的请求,把拦截下来的请求,依据相应的规则分发到目标Controller来处理。

关于web.xml配置文件

springMVC是对servlet的封装(都是用来处理请求的)
springMVC核心的DispatcherServlet最终继承自HttpServlet。
两者的关系类似mybatis和JDBC的关系

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <!-- 配置监听器:当监听器检测到web服务器启动(tomcat启动),就立刻启动spring框架 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  	<!-- 启动spring框架肯定需要核心配置文件;这是spring核心配置文件的地址 -->
 	<!-- 如果在web.xml中不写<context-param>配置信息,默认的路径是/WEB-INF/applicationontext.xml,
 	在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml。 --> 
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  
  <!-- 用来声明一个servlet的数据 -->
  <servlet>
  <!-- 指定servlet的名称 -->
    <servlet-name>DispatcherServlet</servlet-name>
    <!-- 指定servlet的类名称 -->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    	<!-- 加载spring-mvc的配置文件 -->
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:applicationContext-mvc.xml</param-value>
    </init-param>
    <!-- Web应用启动时立即创建Servlet实例 -->
    <load-on-startup>1</load-on-startup>
  </servlet>
  
  <!-- 所有对这个路径下资源的请求都会由servlet-name中定义的servlet处理 -->
  <servlet-mapping>
  	<!-- 这个servlet-name的值必须和上面的对应 -->
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  
  	<!--强制指定字符编码,即使request或response设置了字符编码,也会强制使用当前设置的,任何情况下强制使用此编码-->
  <filter>
    <filter-name>EncodingFilter</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>
  </filter>
  <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

关于spring-mvc.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx.xsd
		http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc.xsd">
		
	<!-- 1.静态资源放行 -->
	<mvc:default-servlet-handler />

	<!-- 2.扫描包路径:上下文组件扫描 ,Spring容器会去扫描cn.itsource这个包及其子包中所有的类, 如果发现类上有类似@Controller这样注解,就会创建该类的对象,并进行管理 -->
	<context:component-scan base-package="cn.itsource.controller"></context:component-scan>

	<!-- 3.开启Spring对Mvc的支持:能够使用@RequestMapping -->
	<mvc:annotation-driven></mvc:annotation-driven>

	<!-- 4.视图解析器:统一处理【webmvc】 -->
 	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>

关于路径的 /和/*

/*

1.会拦截所有url(包括/login、.jsp、.js、png和.html等),一般只用在过滤器上,
2.会出现访问jsp视图时被Spring的DispatcherServlet拦截,导致找不到请求资源引入的404错误,其他资源也一样,所以在SpringMVC的前端控制器中配置/*,是一个错误的配置方式;

/

1./也是拦截所有,只不过不会拦截*.jsp;
2./不会拦截.js、.css、.png、.html、*.jsp等后缀型url;
3.但是/匹配覆盖了Tomcat的默认控制器,导致静态资源访问失效,静态资源也被拦截,只有.jsp不会被拦截;
4.如果想访问静态资源,必须要开启静态资源访问权限;
注意:Tomcat本身自带有一个默认控制器,匹配方式也是"/",这个默然控制器用于处理静态资源请求。如果我们配置SpringMVC前端控制器为"/",那么Tomcat的默认控制器就不生效,导致静态资源无法访问;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值