SpringMVC学习笔记(一)-概述
SpringMVC学习笔记(一)-概述
- SpringMVC也是一个容器,使用IOC管理界面层中的控制器对象,底层基于Servlet
核心Servlet--DispatcherServlet
- DispatcherServlet是SpringMVC框架的一个Servlet对象,负责接受请求,响应处理结果,父类为HttpServlet,也称为前端控制器(front controller)
- 在SpringMVC中使用控制器对象代替Servlet行使其职能
- 在servlet的init()方法中,创建SpringMVC中的容器对象
配置
- Maven配置
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.1</version>
</dependency>
-
web.xml配置
- 默认解析WEB-INF下的
<servlet-name>
-servlet.xml文档,如果没有会报出初始化异常 - 使用容器WebApplicationContext
<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--自定义SpringMVC配置文件的路径--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <!--设置服务器启动时即创建容器,数值越小创建对象时间越小--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <!--将所有请求交予前端控制器处理, 1.使用自定义拓展名,格式:*.xxx,例如:*.do、*.action、*.mvc等等,在存在设置的拓展名结尾时匹配成功,注意不能使用*.jsp。 2.使用"/" --> <url-pattern>/</url-pattern> </servlet-mapping>
- 默认解析WEB-INF下的
-
@Controller
- 后端控制器,放置于类上,表示创建此类的对象并放置于SpringMVC容器中
-
@RequestMapping
- 请求映射,放置于控制器类(表示类中方法的公共地址)上或者控制器方法上,作用类比于
<url-pattern>
- 控制器中的方法的形参由于设置请求参数,返回值表示本次请求的处理结果
- 属性:
- value,表示请求的uri地址,唯一且以
/
开始,可配置多个请求拦截路径 - RequestMethod[] method,设置请求方式,符合指定的请求方式才处理
- value,表示请求的uri地址,唯一且以
- 请求映射,放置于控制器类(表示类中方法的公共地址)上或者控制器方法上,作用类比于
-
ModelAndView
- 模型和视图,代表本次请求的处理结果即数据和视图
- 方法:
- mv.addObject(),设置数据,在框架的后续处理中调用request.setAttribute()
- mv.setViewName(),设置视图,值应是视图的完整路径,后续使用request.getRequestDispatcher()转发
-
SpringMVC请求的处理过程
-
发起请求-->Tomcat接受请求-->DispatcherServlet调度(配置了拦截路径)-->分配控制器-->控制器方法处理返回结果
-
将访问页面资源置于WEB-INF下用于控制非正常访问
-
配置视图解析器用于简化操作(可选):
-
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--前缀--> <property name="prefix" value="/WEB-INF/pages/"/> <!--后缀--> <property name="suffix" value=".jsp"/> </bean>
-
若配置了视图解析器,此时视图的值设置为视图的逻辑名
-
-